中科大算法导论第一,二次和第四次作业答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二次作业
• 3.2-3 证明等式lg(n!)=Θ(nlgn)。并证明等式n!=ω(2n)和 n!=o(nn)。
n n 证明:由于 ( ) 2 n! n n , 两边取对数可知: lg(n!) (n lg n) 2
3.2-4函数⌈lgn⌉! 是否多项式有界?函数⌈lglgn⌉! 呢
• 4.1-2 证明T (n) 2T (n / 2 n的解为O(n lg n). 证明这 个递归的解也是Ω(nlgn)。得到解为Θ(nlgn)。
10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
k ←p while((i<=n1) and (j<=n2)) do if L[i]<=R[j] do A[k]=L[i] i++ else do A[k]=R[j] j++ k++ while(i<=n1) do A[k++]=L[i++] while(j<=n2) do A[k++]=R[j++]
证明:假设当n 1时,T(n) 1是唯一的边界条件, T (n) cn lg n c 1 lg1 0, 假设T (n) cn lg n对n / 2成立 T (n) 2T ( n / 2) n 2c n / 2 lg( n / 2) n cn lg( n / 2) n cn lg n - (c 1)n cn lg n(当c 1时) 所以,T (n) O(n lg n),下面证T (n) (n lg n)
则T ( n) T ( n / 2) T ( n / 2) ( n) c ( n / 2) lg( n / 2) c ( n / 2) lg( n / 2) (
再证(n lg n),即要证T (n) cn lg n 设T (n / 2) c(n / 2) lg( n / 2)成立, 则T (n) T ( n / 2) T ( n / 2) (n) c( n / 2) lg( n / 2) c( n / 2) lg( n / 2) (n) n n n 1 n 1 lg( ) c lg( ) ( n ) 2 2 2 2 n c n 1 n 1 c lg n n lg 2 c lg( n 1) c lg 2 (n) 2 2 2 2 n c n c c lg n (2n 1) c lg( n 1) lg( n 1) (n) 2 2 2 2 c c c c cn lg n n lg n n lg( n 1) (2n 1) lg( n 1) (n) 0 2 2 2 2 c c c cn lg n n(lg(n 1) lg n) (2n 1) lg( n 1) (n) 2 2 2 1 1 lg( n 1) lg n lg(1 )是递增函数,取 n 2, 有 lg(1 ) 1 n n c c T (n) cn lg n (3n 1) lg( n 1) (n) 2 2 c cn lg n (n 1 lg( n 1)) ((1) 2c)n 2 1 取n 3, 有n 1 lg( n 1) 0, 取c (1),有((1) 2c) 0 2 T (n) cn lg n c
第四次作业
• 7.1-2 当数组A[p..r]中的元素均相同时,PARTITION返回的q 值是什么?修改PARTITION,使得当数组A[p..r]中所有元素 的值相同时, q ( p r ) / 2
• 2.3-2改写MERGE过程,使之不使 用哨兵元素,而是在一旦数组L或R 中的所有元素都被复制回数组A后, 就立即停止,再将另一个数组中 余下的元素复制回数组A中。 • MERGE(A,p,q,r) 1. n1←q-p+1 2. n2 ←r-q 3. create arrays L[1..n1] and R[1..n2] 4. for i ←1 to Baidu Nhomakorabea1 5. do L*i+ ←A*p+i-1] 6. for j ←1 to n2 7. do R*j+ ←A*q+j+ 8. i ←1 9. j ←1
则T ( n) T ( n / 2) T ( n / 2) ( n) c ( n / 2) lg( n / 2) c ( n / 2) lg( n / 2) (
再证(n lg n),即要证T (n) cn lg n 设T (n / 2) c(n / 2) lg( n / 2)成立, 则T (n) T ( n / 2) T ( n / 2) (n) n n n 1 n 1 c( n / 2) lg( n / 2) c( n / 2) lg( n / 2) (n) c lg( ) c lg( ) ( n ) 2 2 2 2 n n n 1 n 1 c lg( ) c lg( ) (n) cn lg n 2 2 2 2 n n n 1 n 1 c lg( ) c lg( ) (n) cn lg n 0 2 2 2 2 n 1 c 2n 1 c lg(1 ) lg( n 1) c ( n ) 0 2 n 2 2 1 1 lg(1 )是递增函数,取n 2, 有 lg(1 ) 1 n n n 1 c 2n 1 c 3n 1 c lg(1 ) lg( n 1) c (n) (n) lg( n 1) c 2 n 2 2 2 2 c (n 1 lg( n 1)) ((1) 2c)n 2 1 取n 3, 有n 1 lg( n 1) 0, 取c (1),有((1) 2c) 0 2 n n n 1 n 1 c lg( ) c lg( ) (n) cn lg n 2 2 2 2 即T (n) cn lg n
设T (n / 2) c(n / 2) lg( n / 2)成立。 则T (n) 2T ( n / 2) n 2c n / 2 lg( n / 2) n n 1 n 1 n 1 2c lg n c(n 1) lg n 2 2 2 n 1 n 1 c(n 1) lg n cn lg n c(n 1) lg n cn lg n 0 2 2 n 1 cn lg (1 c)n c lg( n 1) c 0 n n 1 1 n 1 lg( ) lg(1 )是递增函数,取n 2, 则lg ( ) 1 n n n n 1 cn lg (1 c)n c lg( n 1) c (1 2c)n c lg( n 1) c n 取c 1 / 3, 则(1 2c)n c lg( n 1) c c[n lg( n 1) 1] 0 取c 1 / 3,n 2时,有T (n) cn lg n, T (n) (n lg n) 所以T (n) (n lg n).
• 4.1-4证明合并排序算法的“准确”递归式(4.2)的解为 Θ(nlgn)
如果n 1 (1) T ( n) T ( n / 2) T ( n / 2) (n) 如果n 1
证明:先证O ( n lg n),即要证T ( n) cn lg n 设T ( n / 2) c ( n / 2) lg( n / 2)成立 n 1 n 1 n n lg( ) c lg( ) ( n) 2 2 2 2 n 1 n 1 n n c lg( ) c lg( ) ( n) 2 2 2 2 n 1 n 1 n n c lg( n 1) c c lg( n) c lg 2 ( n) 2 2 2 2 cn c n c lg( n 1) lg( n 1) c lg( n) ( 2n 1) ( n) 2 2 2 2 c c c cn lg n n(lg(n 1) lg n) lg( n 1) ( 2n 1) ( n) 2 2 2 1 1 lg( n 1) lg n lg(1 )是递增函数,取 n 1 ,有 lg(1 ) 1 n n c c 2n 1 则有T ( n) cn lg n n lg( n 1) c ( n ) 2 2 2 c n n cn lg n (lg(n 1) 1) ( 4(1) c ) 2 2 4 n 取n 3,有 lg( n 1) 1 0, 取c 4(1), 有4(1) c 0 2 即T ( n) cn lg n c
第一次作业
2.2-3 再次考虑线性查找问题 (见练习2.1-3)。在平均情况 下,需要检查输入序列中的多 少个元素?假定待查找的元素 是数组中任何一个元素的可能 性是相等的。在最坏情况下有 怎样呢?用Θ形式表示的话,线 性查找的平均情况和最坏情况 运行时间怎样?对你的答案加 以说明。 • 线性查找问题 • 输入:一列数A=<a1,a2,…,an>和一 个值v。 • 输出:下标i,使得v=A[i],或者当 v不在A中出现时为NIL。 • 平均情况下需要查找 (1+2+…+n)/n=(n+1)/2 • 最坏情况下即最后一个元素为待 查找元素,需要查找n个。 • 故平均情况和最坏情况的运行时 间都为Θ(n)。
证明方法二:先证 O ( n lg n),即要证T ( n) cn lg n 设T ( n / 2) c ( n / 2) lg( n / 2)成立 n 1 n 1 n n lg( ) c lg( ) ( n) 2 2 2 2 n 1 n 1 n n c lg( ) c lg( ) ( n) cn lg n 2 2 2 2 n 1 n 1 n n c lg( ) c lg( ) ( n) cn lg n 0 2 2 2 2 n 1 c 2n 1 c lg(1 ) lg( n 1) c ( n ) 0 2 n 2 2 1 1 lg(1 )是递增函数,取 n 1 ,有 lg(1 ) 1 n n n 1 c 2n 1 c n 1 c lg(1 ) lg( n 1) c ( n) lg( n 1) ( n) c 2 n 2 2 2 2 c n ( 2 lg( n 1) n 2) ( 4(1) c ) 4 4 取n 3,有2 lg( n 1) n 2 0, 取c 4(1), 有4(1) c 0 c n 1 n 1 n n lg( ) c lg( ) ( n) cn lg n 2 2 2 2 即T ( n) cn lg n c
相关文档
最新文档