这一章,说来说去,两件事情,1.概率分析。2.随机算法。
先把这个雇佣问题拿出来。
问题:有一批参与面试的人,你要一个个面试(面试每个人都要花费c1),如果当前面试者比自己的助理能力强,则辞掉当前助理的,并把当前面试者提拔为助理(雇佣一个人要花费c2),一直面试完所有人。
这里考虑的是面试所花的money,假设总共有N人参加面试,有M人被雇佣过,则花费O(N*c1 + M*c2),因为参与面试的人员顺序是不确定的,所以要花费的money也是不确定的(N*c1是确定的,而M是不确定的,所以M*c2也是不确定的)。
1.概率分析。它是干什么的?它是为了设计高效算法而采用的一种数学分析方法,懂了吧2.随机算法。它是什么?虽然我们知道,这个过程是随机的,但是,对方把名单一确定,那么这个过程本来花费已经确定了,而此时随机算法,就是干这个的,打乱顺序,就算你是随机的,我重新排序一个更随机的,用到的函数就是random()。
顺便补充一下:5.2节的指示器随机变量就是用的高中学的期望,用期望来表示概率。
概率分析与随机算法之间的区别:
1.概率分析,这个是你假定这个过程是随机的各种可能都会有。是你以为!!!
2.随机算法,这个过程已经利用随机函数,重新排列,强制为是一种随机的排列,是帮你又随机做了一次。是告诉你我确实是随机!!!
比如按书上的,可以给每个人员随机生成一个优先级,或者把每一个面试人员与其后的面试人员中随机一员交换,来产生一个随机的序列。
最后又讲了4个问题。
1.生日悖论,结论是至少23个人在一个房间,才有50%概率是同一天出生
2.球与盒子,就是你要放满b个盒子,最少需要blnb次
3.序列,一个序列最长的期望就是lgn
4.在线雇佣升级版,这个是你面试了之后,马上做出选择,要还是不要他们,所以不需要面试全部人,能够节省花费,需要有个策略
a。假如有n个人,我前面k个人面试,只给他们打分,都不要
b。剩下的人中,第一个比前面面试的k个人中最高分还要高的,那么就要了
c。一直找不到比前面高的人,那么我就要最后一个人
就是这么3步策略
那么k如何选择?
经过复杂的推断,结论就是k=n/e的时候,概率最大的能成功雇佣到满意的人员。