算法设计期中试卷平时作业参考解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《算法分析与设计》2012-2013-2学期期中测试(信息安全专业DQ 教学班)
姓名: 学号: 得分:
1. 证明()()()()()()()O f n O g n O f n g n +=+。(10分)
证明:对于任意f 1(n ) ∈ O (f (n )),存在正常数c 1和自然数n 1,使得对所有n ≥ n 1,有f 1(n ) ≤ c 1f (n )成立。 类似,对于任意g 1(n ) ∈ O (g (n )),存在正常数c 2和自然数n 2,使得对所有n ≥ n 2,有g 1(n ) ≤ c 2g (n )成立。
令c 3 = max{c 1, c 2},n 3 = max{n 1, n 2},则对所有的n ≥ n 3,有 f 1(n ) +g 1(n ) ≤ c 1f (n ) + c 2g (n ) ≤ c 3f (n ) + c 3g (n ) = c 3(f (n ) + g (n ))
即()()()()()()()O f n O g n O f n g n +=+成立。
2. 将下列5个函数按渐近增长率由低至高进行排序,要求写出比较过程。(15分)
100log 2log loglog 12345()(log ),()log ,()log ,()2,()n n n n f n n n f n n f n n n f n f n +=====
解: 100log 2log log log 24()log 100log ,()2log ,n n n f n n n f n n n +====
(1) 2()f n 是对数函数的幂,5()f n 是幂函数,因此()25()()f n O f n =; (2) ()()()491105log lim
lim
lim log n n n f n n n
n n f n n →∞
→∞→∞===∞,因此()54()()f n O f n =; (3) ()()
423log 1lim
lim
lim 0log n n n f n n n f n n n n
→∞
→∞→∞===,因此()43()()f n O f n =;
(4) 对1()f n 和3()f n 取对数,有
()()() 13log ()log loglog loglog ,log ()2log loglog log f n n n n n n n f n n n n =+=Θ=Ω=+=Θ,
因为()log n O n =,所以()31()()f n O f n =;
因此,5个函数按渐近增长率由低至高排序为25431(),(),(),(),()f n f n f n f n f n 。
3. 给定按升序排列的n 个不同整数存于数组a [1:n ]中,请设计()log O n 的算法找到下标i ,1i n ≤≤,使得a [i ] = i ,如不存在这样的下标,则返回0。(15分) 解:
令head = 1, rear = n .
(1) 当head <= rear 时,令mid = ⌊(head + rear)/2⌋; (2) 如果a [mid] = mid ,返回mid 值,结束。
如果a [mid] > mid ,令rear = mid – 1,返回(1)继续执行; 如果a [mid] < mid ,令head = mid + 1,返回(1) 继续执行; (3)返回0值,结束。
public static int Search(int [] a, int n) {
. <= a[n -1] 中搜索 a[i] = i
利用主方法给出下列递归式的渐近界,并用数学归纳法证明式(2)的渐近界。(20
分)
(1) ()()42T n T n n =+, (2) ()()242T n T n n =+, (3) ()()342T n T n n =+
解:(1) 24,2,log log 42,b a b a ==== ()(
)
2, if 0.5,f n n O n εε-===
因此,()()
2T n n =Θ. (2) 24,2,log log 42,b a b a ==== ()()22,f n n n ==Θ
因此,()()
2log T n n n =Θ.
(3) 24,2,log log 42,b a b a ==== ()(
)
32, if 0.5,f n n n εε+==Ω=
而且()()()3
33424234,f n n n n cf n ==≤=其中34n =,
因此,()()
3T n n =Θ.
证明:假设当k n <时,()2log T k ck k ≤,其中c 为常数。
()()()()()()2
2
22222242 42log 2 log 1 log 1 log if 1
T n T n n c n n n cn n n cn n c n cn n c =+≤+=-+=--≤≥
因此,命题得证。
5. 利用直接展开法求解下列递归式的渐近界。(20分)
(1) ()()242T n T n n =+, (2) (
)T n n =+
解:(1)
()()()()
()()()
()()()()()2
2222222
232423322log log 2222424422422442224234242log 1log log k k n n T n T n n T n n n T n n T n n n T n n T n kn T n n n n T n n O n n =+=++=+=++=+=
=+=
=+=+=