[算法导论]-第五章-概率分析和随机算法

本章重点

1.在线雇佣问题

2.


1.在线雇佣问题

雇佣问题求的是面试n个人并雇佣了m个人时的总费用

思想一:
1.随机生成一个大小为50的数组peoples表示有50个人来面试,且数组的值都不相同代表各自的rank;
2.面试费用一个20,录用费用一个40,面试完后总费用cost;
3.实验50次,每次的费用使用cost_list.append(cost)存储到cost_list列表中;
4.最后做出图像看看是否有规律。
# _*_coding:utf-8_*_
import pylab as pl
import random 
assist = 0
cost = 0
cost_list = []
for tr in range(50):
    peoples = random.sample(range(50), 50)
    for people in peoples:
        cost += 20
        if assist < people:
            assist = people
            cost += 40
            print assist,
    print
    cost_list.append(cost)
    cost = 0
    assist = 0
min_cost = cost_list[0]
max_cost = cost_list[0]
list_y = range(1, 51)
print min(cost_list), max(cost_list)
pl.plot(list_y, cost_list, 'r')
pl.xlim(0.0, 50)
pl.show()
思想二:
从n个候选者中选择出最好的候选者。
assList是所有候选者列表。类Assistant中的name是候选者的名字。value是候选者价值得分(当然是越高的越优秀啦~~~)
hire_assitant返回最优秀者。
def hire_assistant(assList):
    n = len(assList)
    best = 0
    index = 0
    for i in range(n):
        value = assList[i].score
        if value > best:
            best = value
            index = i
    return assList[index]
 
 
class Assistant:
    def __init__(self,a_name="anonymous",value=0):
        self.name = a_name
        self.score = value
思想三:
def HIRE_ASSISTANT(n):
    best = 0
    best_qualify=0
    for i in range(len(n)):
        if n[i] > best_qualify:
            best = i
            best_qualify = n[i]
    return  best, best_qualify

n=[4,2,3,5,8,6,7]
print(HIRE_ASSISTANT(n))

思想四:


image.png
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int maxn=1000000;
ll n,i,best,cost,ability,sum;
int main()
{
    scanf("%lld",&n);
    maxability=best=0;
    for(i=1;i<=n;i++)
    {
        scanf("%lld%lld",&cost,&ability);
        if(ability>maxability)
        {
            maxability=ability;
            sum+=cost;
        }
    }
    printf("%lld\n",sum);
    return 0;
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 参考资料:概率分析和随机算法雇佣问题在讲述概率分析和随机算法之前,需要先简单介绍一下,概率论的基础知识 基础知识 ...
    Bowiee阅读 1,921评论 1 3
  • 目录 0.雇佣问题 1.概率分析的含义 2.随机算法 3.随机算法与概率分析的区别 4.雇佣问题的随机算法4.1 ...
    王侦阅读 2,856评论 0 1
  • 自然事件中很多会牵涉到随机算法,鉴于本人的概率分析功底有限,这里主要介绍一些结论性的知识,具体的概率推演及时过程大...
    wsdadan阅读 361评论 0 0
  • 要点: 指示器随机变量 随机算法 2个 雇佣问题与在线雇佣问题(待完善) 指示器随机变量 基本定义 给定一个样本空...
    陈码工阅读 620评论 0 0
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 5,767评论 0 5