这章看得稀里糊涂的,自己感觉没弄懂,去网上看了看别人写的博客。觉得人家写的很好,自己看着有点豁然开朗的感觉。
下面我附上人家的链接地址:
我自己也就按着人家的思路写写吧,主要算是让自己能够更好的理解这里的内容
这一章是是从雇佣问题开始的:假设要雇佣一名新的助理,然后要面试每个人要花费一笔费用,雇佣助理要话更多的钱,假设当前你面试的应聘者比当前助理优秀,你就辞退当前的助理去聘用新的助理。
要得到面试的费用,我们一部分是面试花的钱,另外一部分则是真正雇佣花费的钱
概率分析:
事实上,我们既不能得知应聘者出现的顺序,也不能控制这个顺序,因此我们使用概率分析。概率分析就是在问题的分析中使用概率技术。
为了使用概率分析,必须使用关于输入分布的知识或者对其做假设,然后分析算法,计算出一个期望的运行时间。这个期望值通过对所有可能的输入分布算出。
存在的问题:
有些问题,我们对所有可能的输入集合做某种假设。对于其他问题,可能无法描述一个合理的输入分布,此时就不能使用概率分析方法。 在雇佣问题中,可以假设应聘者是以随机顺序出现的。假设可以对任何两个应聘者进行比较并确定哪个更优;换言之,在所有的应聘者之间存在这一个全序关系。
因此可以使用从1到n的唯一号码来标志应聘者的优秀程度。用rank(i)来表示应聘者i的名次。这个有序序列<rank(1),rank(2),..., rank(n)>是序列<1,2,...,n>的一个排列。说应聘者以随机的顺序出现,就等于说这个排名列表是1到n的n!中排列中的任何一个,每种都以相等的概率出现。
随机算法 在许多情况下,我们对输入分布知识知之甚少;即使知道关于输入分布的某些信息,也无法对这种分布建立模型。然而通过使一个算法中的某些部分的行为随机化
,就常常可以利用概率和随机性作为算法设计和分析的工具。
比如在雇佣问题中,如果雇佣代理给我们一份应聘者的名单,每天我们随机地挑选一个应聘者进行面试,从而确保了应聘序列的随机性。
更一般地,如果一个算法的行为不只有输入决定,同时也由随机数生成器所产生的数值决定,则称这个算法是随机的。
指示器随机变量 为了分析包括包括雇佣分析在内的许多算法,我们将使用指示器随机变量,它为概率和期望之间的转换提供了一个便利的方法,给定一个样本空间S和时间A,那么事件A对应的指示器随机变量 1 如果A发生 Xa = 0 如果A没有发生 E[Xa] = Pr{A} 利用指示器随机变量分析雇佣问题: 假设应聘者以随机的顺序出现,令X作为一个随机变量,其值等于雇佣一个新的办公室次数。那么 E[X] = ∑xPr{X=x},但这一计算会很麻烦。 我们定义n个和每个应聘者是否被雇佣对应的变量,Xi为对应于第i个应聘者被雇佣这个事件的指示器随机变量。有X=X1+X2+...+Xn。 E[Xi] = Pr{Xi} = 1/i,因为应聘者是随机出现的,所以第i个应聘者比前面i-1个优秀的概率是1/i。 因此E[X] = 1+1/2+1/3+...+1/n = lnn。
概率分析与随机随机算法:
在雇佣问题中,如果应聘者是以随机顺序出现的话,雇佣一个新的办公室助理的期望次数是lnn。这个算法是随着输入的变化而变化的。对于某个特定的输入,它总是会产生固定的雇佣次数。这样就存在昂贵的输入,不贵的输入和适中的输入。如果先对应聘者进行随机排列,此时随机发生在算法上而不是发生在输入分布上。每次运行这个算法,执行依赖于随机的选择,而不是依赖于输入。这就是随机算法和概率分析的区别。
这章看得很水,以后有机会看到其他内容再回头来看看吧