算法设计与分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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的性能。算法的主要代码如下图所示:

相关文档
最新文档