第5.1节
Exercise 5.1-1
我们可能已经按照好与坏的顺序排列了候选人。这意味着我们可以应用传递性来确定任何两个候选人之间的偏好。
Exercise 5.1-2
while循环的每次迭代需要n时间来运行。while循环在给定迭代中停止的概率为(b−a + 1)/ 2^n。因此预期的运行时间是预期的运行次数乘以n。 这由以下公式给出:
Exercise 5.1-3
显然,因为a和b是独立同分布的(independent & identically distributed,i.i.d),这个算法返回1的概率等于它返回0的概率。此外,由于算法在for循环的每次迭代中返回一个恒定的正概率(2p(p−1))。这个程序将期望通过循环的次数等于:
注意,用于求和的的公式可以通过对关于α的几何求和公式的两边求导得到。
第5.2节
Exercise 5.2-1
如果最好的候选人先出现,你只会雇佣一次。有(n−1)!个排序时,最优候选项优先,所以,它的概率是,你只雇用一次。如果应聘者按递增顺序排列,那么你将会雇佣n次。这将排序固定为一个,所以这个发生的概率是
Exercise 5.2-2
由于第一个候选人总是被雇用,我们需要计算恰好有另外一个候选人被雇用的概率。由于我们将候选排序视为读取随机排列,因此这相当于随机排列是一个递减序列,然后是一个递增序列,然后是另一个递减序列的概率。这样的排列可以被认为是将[n]分成两部分。一个大小为k,另一个大小为n−k,其中1≤k≤n−1。对于每个这样的分区,我们通过将每个分区的数字按降序排序,然后将这些序列连接起来,得到一个只有一个增加的排列。唯一可能出错的是n到n - k + 1在第一个分区中。因此,有种排列对应于雇用步骤k + 1中的第二个也是最后一个人。加起来,我们看到你恰好雇佣两次的概率是
Exercise 5.2-3
设Xj是掷出第j个骰子的指示器,因此,掷出第X个骰子的期望值是
因此,n骰子的概率之和
Exercise 5.2-4
设指示器随机变量X,表示顾客拿回他的帽子的概率。指示器随机变量Xi则为顾客i拿回他的帽子的概率。一个人拿回帽子的次数是1/n。 然后我们有
Exercise 5.2-5
设(i < j)为A[i] > A[j]的指标。然后,我们得到逆序的期望次数是
第5.3节
Exercise 5.3-1
我们通过展开i = 1的情况来修改算法。
修改引理的证明,从i = 2开始而不是从i = 1开始。这完全回避了讨论0-排列的问题。
Exercise 5.3-2
这个代码并没有达到他的目的。假设A =[1,2,3]。如果算法如所提出的那样工作,则算法非零概率输出[3,2,1]。在第一次迭代中,我们将A[1]与A[2]或A[3]交换。因为我们想要[3,2,1]并且永远不会再改变A[1],所以我们必须与A[3]交换。现在的数组是[3,2,1]。在第二次(也是最后一次)迭代时,我们别无选择,只能将A[2]与A[3]交换,因此得到的数组是[3,1,2]。因此,该过程不可能产生随机的非同一性排列。
Exercise 5.3-3
考虑在运行算法时n = 3的情况,将做出三个IID选择,因此最终将有27种可能的结束状态,每种状态的概率都是相等的。有3!= 6种可能的排序,它们出现的频率应该相等,但这不可能发生,因为6不能整除27。
Exercise 5.3-4
固定位置j和索引i。我们会证明a[i]最终到达位置j的概率是1/n。B[j] = A[i]的概率是dest = j的概率,即i + offset或i + offset - n等于j的概率,即1/n。这个算法不可能返回一个随机排列,因为它不会改变元素的相对位置;它只是循环地排列整个排列。例如,假设A =[1,2,3]。如果offset = 1,则B =[3,1,2]。如果offset = 2,则B =[2,3,1]。如果v = 3, B =[1,2,3]。因此,算法永远不会产生B =[1,3,2],因此产生的排列可能不是均匀随机的。
Exercise 5.3-5
设为P[i] = P[j]的事件。那么,所有都是唯一的事件就是存在相等的一对的补,所以,我们必须证明这一点。我们从应用联合界开始
这里我们使用了这样一个事实任意两个指标都等于概率等于1除以抽取的概率空间的大小,也就是n^3。
Exercise 5.3-6
在for循环完成后,检查两个或多个优先级是否相同。假设其中k个是相同的。然后调用RANDOM(1, k^3) k次来引入k个相同条目的相对排序。有些项m可能仍然是相同的,因此只需多次调用RANDOM(1, m^3)来对这些相同的项引入相对排序。例如,如果我们得到的第一个数列是1,1,1,3,4,5,5,我们需要对这些1和5进行排序。对于1,我们将调用RANDOM(1,27) 3次。假设结果是23,14,23。然后我们调用RANDOM(1,8)两次来对23排序。假设它给出(3,5)。然后23,14,23的相对顺序变成2,1,3,所以原始数组的新相对顺序是2,1,3,4,5,6,6。现在我们调用RANDOM(1,8)两次来对6进行排序。如果第一个数字比第二个大,我们最终的数组将是2,1,3,4,5,7,6。
Exercise 5.3-7
我们通过对m的归纳法证明了它产生了一个随机的m子集。当m = 0时,显然是正确的,因为[n]只有一个大小的m子集。假设S是n−1的一致的m−1子集,亦即∀j∈[n−1],Pr[j∈S] =。然后,如果我们让S'表示返回集合,首先设j∈[n−1],Pr[j∈S'] = Pr[j∈S] + Pr[∧i = j] = + Pr[] Pr[i = j] = 。因为构造的子集包含每一个[n−1]的正确概率,它也必须包含正确概率的n,因为概率之和为1。
第5.4节
Exercise 5.4-1
n个人中没有人和你同一天生日的概率
当 时,这个小于0。所以,n= 253。因为你也是房间里的一个人,所以我们加一个得到最后的结果254。n个人中k个人的生日是7月4日的概率是 。特别是当k = 0时,它是 。对于k = 1,则为 。把这些加起来,求出n让和小于1 / 2,我们得到这很难用解析的方法解决,但由于LHS的单调性,我们可以用飞奔搜索很快地找到n = 612的答案。
Exercise 5.4-2
我们直接根据期望的定义进行计算。设X表示投掷的球数,直到某个箱子里有两个球为止。
需要i次投掷的概率等于前i - 1次投掷进入唯一箱子的概率,所以我们有
因此,
Exercise 5.4-3
两两独立是充分的。所有的独立性都是用来证明Pr(bi = r∧bj = r) = Pr(bi = r) Pr(bj = r),这是两两独立的结果。
Exercise 5.4-4
我们可以用两种方法来计算“可能”。至少有三个人同一天生日的概率是1减去没有人同一天生日的概率,减去任意对人同一天生日的概率。设n = 365表示一年中的天数,k表示参加聚会的人数。如本节前面计算的,我们有
接下来我们计算恰好有i对人同一天生日的概率。从k个人中选择i对的有序集合有种方法,有种方法选择这对夫妇共享的生日集合,任何这样的有序子集有这些精确出生日期的概率是。乘以剩下的生日都是不同的独一无二的概率,我们有
因此,
这很乱,即使有简化不等式,所以我们要做另一个分析,这次是关于期望的。我们将确定所需k的值,使人i、人j和人m生日相同的三元组(i, j, m)的期望数目至少为1。设为指标变量,表示这三个人共享一个生日,X表示共享生日的三个人的总数。然后我们有
为了使E[X]超过1,我们需要找到k(k−1)(k−2)≥6 * (365)^2的最小k,当k = 94时。
Exercise 5.4-5
因为要成为k排列,我们需要没有字母出现重复,它相当于k个人n天的生日问题。所以,这个概率在第132页的顶部是:。
Exercise 5.4-6
设Xi为所有球抛完后第i个箱子是空的指示变量,X为给出空箱子数量的随机变量。然后我们有
现在设x为指示变量,表示在所有的球被抛完后,第i个箱子里正好有1个球,X为随机变量,表示刚好有1个球的箱子的数量。然后我们有
因为我们需要选择哪一次扔进垃圾箱i,然后乘以扔进垃圾箱的概率剩下的n - 1次没有扔进垃圾箱的概率。
Exercise 5.4-7
我们把n次抛硬币分成n/s组我们选择s = lg(n) - 2lg (lg(n))我们会证明这些组中至少有一组出现所有正面的概率至少为。所以,从位置i开始的那组人全部正面向上的概率是:
由于这些组是基于不相交的IID抛硬币集合,所以这些概率是独立的。所以,
表明不存在运行长度至少为lg(n)−2lg (lg(n))的概率 < 1/n 。