算法导论第五章思考题参考答案(9)

 Problem 5-1

a.我们将展示每次增量操作的预期增量等于1。假设计数器当前的值为i。那么,我们将以概率\frac{1}{n_{i+1}-n_{i}}从ni增加到ni+1,否则保持值不变。把这些相乘,我们得到期望增长是\frac{n_{i+1}-n_{i}}{n_{i+1}-n_{i}}-1

b.对于ni的选择,我们知道在每次递增操作中,我们改变计数器值的概率是1/100。由于这是相对于计数器i的当前值的常数,因此我们可以将最终结果视为p值为0.01的二项分布。因为二项分布的方差是np(1 - p),而每次成功值是100,所以方差等于.99n。

 Problem 5-2

a.假设a有n个元素。我们的算法将使用数组P来跟踪已经看到的元素,并在每次检查新元素时将其添加到计数器c中。一旦计数器达到n,我们就知道每个元素都检查过了。设RI(A)为返回A的随机索引的函数。

b.设N为所需搜索次数的随机变量。然后

 

c.设N为所需搜索次数的随机变量。然后 

d.这与在第5.4.2节“我们必须扔多少个球,直到每个垃圾箱至少包含一个球?”的问题,其解为b(ln b + O(1))。


e.平均情况运行时间为(n + 1)/2,最坏情况运行时间为n。

f.设X为随机变量,表示算法终止前检查的元素个数。设Xi为指示变量,表示检查数组的第i个元素。如果i是一个指标使得A\left [ i \right ]\neq x,那么P(Xi) = \frac{1}{k+1},因为只有当它出现在包含x的k个指标之前,我们才检查它。如果i是一个指标使得A[i] = x,那么P(Xi) = \frac{1}{k},因为只有一个与解对应的指标将被检查。设S = {i|A[i] = x}, S' = {i|A\left [ i \right ]\neq x}。然后我们有

因此,平均情况的运行时间是\frac{n+1}{k+1}。最坏的情况是每次出现的x都在数组的最后k个位置。它的运行时间是n−k + 1。

g.平均和最坏情况下的运行时间都是n。


h.SCRAMBLE-SEARCH的工作原理与DETERMINISTIC-SEARCH相同,只不过我们在运行时间中增加了随机化输入数组所需的时间。 

i.我将使用DETERMINISTIC-SEARCH,因为它有最好的预期运行时间,并保证在n步后终止,不像RANDOM-SEARCH。此外,在RANDOM-SEARCH随机排列输入数组所花费的时间内,我们本可以执行线性搜索。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值