算法设计与分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Ex.1(p20)若将y ← uniform(0, 1) 改为y ← x, 则上述的算法估计的值是什么?解:若将y ← uniform(0, 1) 改为y ← x,此时有,则k++,即,此时k++,由于此时x ← uniform(0, 1),所以k/n=,则此时4k/n=2。所以上述算法估计的值为2。Ex.2(p23) 在机器上用估计π值,给出不同的n值及精度。
解:由ppt上p21可知,的大小,其中k为落入圆内的数目,n为总数,且π=,即需要计算4k/n。我们先令x ← un iform(0, 1),y ← uniform(0, 1)。计算
的值,如果小于等于1,那么此时k++。最后计算4k/n的值即可估计此时的π值。代码的主要部分为:
执行结果为:
结果分析:随着N的取值不断地增加,得到的π值也就越来越精确。
Ex.3(p23) 设a, b, c和d是实数,且a ≤ b, c ≤ d, f:[a, b] → [c, d]是一个连续函数,写一概率算法计算积分:
注意,函数的参数是a, b, c, d, n和f, 其中f用函数指针实现,请选一连续函数做实验,并给出实验结果。
解:的值为y=,y=0,x=a,x=b围成的面积。根据之前的例子我们可以知道
= k(b-a)d/n。其中k是落在函数y=,x=a,x=b以及y=0所包围区间内的个数。代码的主要部分为:
运行结果为:
结果分析:
随着N的取值不断地增加,得到的积分值越来越精确。
Ex4(p24). 设ε,δ是(0,1)之间的常数,证明:若I是的正确值,h是由HitorMiss算法返回的值,则当n ≥ I(1-I)/ε2δ时有:
Prob[|h-I| < ε] ≥ 1 –δ
上述的意义告诉我们:Prob[|h-I| ≥ ε] ≤δ, 即:当n ≥ I(1-I)/ ε2δ时,算法的计算结果的绝对误差超过ε的概率不超过δ,因此我们根据给定ε和δ可以确定算法迭代的次数
()
解此问题时可用切比雪夫不等式,将I看作是数学期望。
证明:由切比雪夫不等式可知:
P( | X - E(X) | < ε ) ≥ 1 - D(X) / ε²
由题目知,E(X)=I。且根据题意,我们可知,在HotorMiss算法中,若随机选取n个点,其
中k个点在积分范围内,则。且k的分布为二项分布B(n,I)(在积分范围内或者不在
积分范围内),则。又因为k=x*n,所以D(X)=I(1-I)/n。再将E(X)和D(X)带入切比雪夫不等式中即可得到
Ex5(p36). 用上述算法,估计整数子集1~n的大小,并分析n对估计值的影响。解:由题知,集合的大小,通过计算新生成的集合中元素的个数来估计原集合的大小,代码的主体部分如下:
运行结果为(部分):
结果分析为:
我也分析不出啥,可能N的值太小了。
Ex6(p54).分析dlogRH的工作原理,指出该算法相应的u和v。
解:因为x = (y-r) mod (p-1)。且r = log g,p(mod p) (由公式2),即-r = log g,p
又因为y = log g,p c
所以x = (y-r) mod (p-1) = (log g,p c + log g,p) mod (p-1) = log g,p p
(由公式1)
又因为c = ba mod p , b=g r mod p
即x = log g,p a*(g r mod p)*= log g,p a
通过以上分析可以,该算法的u为ba mod p ,v为(y-r) mod (p-1)。
Ex7(p67). 写一Sherwood算法C,与算法A, B, D比较,给出实验结果。
解:Sherwood算法C的思想:
算法C在算法B的基础上做了一些改进,算法B取在val的前个数中找不大于x的最大整数y。算法C则是在1~n中随机挑选个数,从中找出不大于x的最大整数y。
算法A,B,C,D的具体实现如下图所示:
通过寻找某一个数X,计算A,B,C,D算法在表中查找X所需的访问数组元素的次数来比较算法A,B,C,D的性能。具体的执行结果如下图所示:
结果分析:
算法C的性能最优呀,还能说什么,总不能说这个算法不好吧。
Ex8(p77).证明:当放置(k+1)th皇后时,若有多个位置是开放的,则算法QueensLV 选中其中任一位置的概率相等。
证明:当放置(k+1)th皇后时,假设有n个位置开放,记为S1,S2,…,Sn。设选择位置Si时的概率为Pi。
如果Si被选中,此时必有uniform(1,…,i)=1,且对于所有的j>i,都有uniform(1,…,j)=0。
且P(uniform(1,…,i)=1) = 1/i。P(u niform(1,…,j)=0) = (j-1)/j
所以:
Pi = (1/i * i/i+1 * … * n-1/n) = 1/n
即选择位置Si的概率为1/n,所以算法选中其中任意位置的概率相等。
Ex9(p83).写一算法,求n=12~20时最优的StepVegas值。
解:对于每个N,当stepVegas从1取到N,对于每一个stepVegas我们重复计算100次,使用一百次的平均成功率以及平均执行时间来描述此stepVegas的性能。算法的主要代码如下图所示:
分别取N=12,13,14,…,20,对于每一个N,具体的执行结果如下图所示:
当N=12时,结果如下如所示,从图中我们可以看出此时的最优stepVegas为4:当N=13时,结果如下如所示,从图中我们可以看出此时的最优stepVegas为4:当N=14时,结果如下如所示,从图中我们可以看出此时的最优stepVegas为4:当N=15时,结果如下如所示,从图中我们可以看出此时的最优stepVegas为5: