第五章-概率分析和随机算法-5.1-雇用问题

注意:大家可以先学习一下概率论再来看第5章。

一、问题引入

1、问题条件组成

①你要雇佣一个新的办公助理,你决定找一个雇用代理,这个雇用代理每天会给你推荐一个应聘者。

②你面试这个应聘者,如果应聘者好于你现任办公助理,就辞掉这个办公助理,将这个应聘者雇用,同时也需要付钱给雇佣代理。

③估算该费用是多少。

2、伪代码

HIRE-ASSISTANT(n)
//candidate 0 is a least-qualified dummy candidate(第一个雇佣者编号为0,比其他雇佣者更差)
1 best = 0
2 for i = 1 to n
3     interview candidate i
4     if candidate i is better than candidate best
5         best = i
6         hire candidate i

3、分析

我们在这里分析的是费用,面试费用较低,我们设置为Ci,雇佣成本较高,我们设置为Ch,雇佣人数为m,面试n个应聘者,因此总费用为

因为总人数n是确定的,因此我们只关注成本更高而且会随着算法的执行变化的Ch*m。

二、最坏情况分析

1、在最坏情况下,这n个应聘者的质量是递增的,那么我们要雇佣n次,总费用为

2、当然这种情况不可能次次发生,我们一般只会问在平均情况下会发生什么,从而引出我们对概率的分析。

三、概率分析

1、大多数情况下概率分析运用于分析一个算法的运行时间,比如说求雇佣问题的费用,为了进行概率分析,我们必须要使用或者假设输入的分布,然后分析算法,计算出一个平均情形下的运行时间,我们对所有可能的输入分布求平均值,实际上是对所有的运行时间取平均。我们称其为平均情况运行时间

2、在雇佣问题中,我们假设所有应聘者都是以随机顺序出现的,这意味着任何两个应聘者可以进行比较从而决定谁更加合适,那么这里存在一个全序关系。n个应聘者一共有n!种排列方式,在这n!种排列方式中,每一种情况的概率是相等的

四、随机算法

1、一般情况下我们对输入分布的了解很少,因此我们需要通过算法使程序中某部分的行为随机化,我们常常可以使用概率和随机性作为算法设计的工具。

2、在雇用问题中,我们设计一个随机算法,对面试应聘者的次序有更大的控制,加强随机性。

3、如果一个算法的行为不仅由输入决定,也由随机数生成器产生的数值(random-number-generator)决定,那么我们称这个算法是随机的(Randomized),比如说RANDOM(0,1)产生0和1的概率都是50%。

4、分析一个随机算法的运行时间,我们以运行时间的期望值衡量,输入值由随机数生成器产生,我们将一个随机算法的运行时间称为期望运行时间

注意:在第5章后续内容中也会继续讲这个案例。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KeepCoding♪Toby♪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值