算法设计与分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Ex.1(p20) 若将y ← uniform(0, 1) 改为 y ← x, 则上述的算法估计的值是什么?
解:若将y ← uniform(0, 1) 改为 y ← x ,此时有2x 2≤1,则k++,即x ∈(0,
√2
2
],此时k++,
由于此时x ← uniform(0, 1),所以k/n=√22
,则此时4k/n=2√2。所以上述算法估计的值为2√2。
Ex.2(p23) 在机器上用4∫√1−x
21
dx 估计
π值,给出不同的n 值及精度。
解:由ppt 上p21可知,∫√1−x 21
0dx 的大小s =k
n ,其中k 为落入圆内的数目,n 为总数,且π=4∫√1−x 21
0dx ,即需要计算4k/n 。我们先令x ← uniform(0, 1),y ← uniform(0, 1)。计算x 2+y 2的值,如果小于等于1,那么此时k++。最后计算4k/n 的值即可估计此时的π值。 代码的主要部分为:
执行结果为:
结果分析:随着N 的取值不断地增加,得到的π值也就越来越精确。
Ex.3(p23) 设a, b, c 和d 是实数,且a ≤ b, c ≤ d, f:[a, b] → [c, d]是一个连续函数,
写一概率算法计算积分:
∫f (x )b
a dx
注意,函数的参数是a, b, c, d, n 和f, 其中f 用函数指针实现,请选一连续函数做实验,并给出实验结果。
解:∫f (x )b
a dx 的值为y= f (x ),y=0,x=a ,x=
b 围成的面积。根据之前的例子我们可以知道 ∫f (x )b
a dx = k(b-a)d/n 。其中k 是落在函数y= f (x ),x=a ,x=
b 以及y=0所包围区间内的个数。
代码的主要部分为:
运行结果为:
结果分析:
随着N的取值不断地增加,得到的积分值越来越精确。
Ex4(p24). 设ε,δ是(0,1)之间的常数,证明:若I是∫f(x)dx
1
的正确值,h是由HitorMiss算法返回的值,则当n ≥ I(1-I)/ε2δ时有:
Prob[|h-I| < ε] ≥ 1 – δ
上述的意义告诉我们:Prob[|h-I| ≥ ε] ≤δ, 即:当n ≥ I(1-I)/ ε2δ时,算法的计算结果的绝对误差超过ε的概率不超过δ,因此我们根据给定ε和δ可以确定算法迭代的次数
n=I(1−I)
ε2δ≤⌈1
4ε2δ
⌉(I(1−I)≤1
4
)
解此问题时可用切比雪夫不等式,将I看作是数学期望。
证明:由切比雪夫不等式可知:
P( | X - E(X) | < ε ) ≥ 1 - D(X) / ε²
由题目知,E(X)=I。且根据题意,我们可知,在HotorMiss算法中,若随机选取n个点,其中k个点在积分范围内,则X=k
n
。且k的分布为二项分布B(n,I)(在积分范围内或者不在积分范围内),则D(k)=n∗I(1−I)。又因为k=x*n,所以D(X)=I(1-I)/n。再将E(X)和D(X)带入切比雪夫不等式中即可得到
n=I(1−I)
ε2δ≤⌈1
4ε2δ
⌉
Ex5(p36). 用上述算法,估计整数子集1~n的大小,并分析n对估计值的影响。
解:由题知,集合的大小n=2k2
π
,通过计算新生成的集合中元素的个数来估计原集合的
大小,代码的主体部分如下:
运行结果为(部分):
结果分析为:
我也分析不出啥,可能N的值太小了。
Ex6(p54). 分析dlogRH 的工作原理,指出该算法相应的u 和v 。
解:因为x = (y-r) mod (p-1)。且r = log g,p (g r mod p) (由公式2),即 -r = log g,p 1
(g r mod p) 又因为 y = log g,p c
所以 x = (y-r) mod (p-1) = (log g,p c + log g,p 1
(g r mod p)
) mod (p-1) = log g,p (c ∗1
(
g r mod p )
)mod p
(由公式1)
又因为 c = ba mod p , b=g r mod p 即x = log g,p a*(g r mod p)*
1(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 的前√n 个数中找不大于x 的最大整数y 。算法C 则是在1~n 中随机挑选√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(uniform(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的性能。算法的主要代码如下图所示: