算法导论习题解答
文章平均质量分 70
IndiaPrince
这个作者很懒,什么都没留下…
展开
-
算法导论习题解答 2.3-7
•2.3-7 请给出一个运行为Θ(nlgn)的算法(伪码),使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。解:解题思路:先对集合S进行归并排序,然后新建一个数组S1,使得S1[i] = x – S[i],再将两个数组并起来。如果在并的过程中发现有两个元素相等且两个元素一个来自S,一个来自S1,则可以确定S中存在有两个其和等于x的元素。Fi...2011-07-18 17:18:21 · 296 阅读 · 0 评论 -
算法导论习题解答 4-4
见附件。2011-07-19 13:48:18 · 285 阅读 · 0 评论 -
算法导论习题解答 4-1
见附件。2011-07-19 13:43:29 · 233 阅读 · 0 评论 -
算法导论习题解答 4.4-2
见附件。2011-07-19 12:57:14 · 436 阅读 · 0 评论 -
算法导论习题解答 4.2-4
4.2-4利用递归树来找出递归式T(n)=T(n-a)+T(a)+cn的渐进紧确解,其中a>=1且c>0是常数。 解: cn cn c(n-a) ca cn ...2011-07-19 12:52:23 · 755 阅读 · 0 评论 -
算法导论习题解答 4.1-6
4.1-6通过改变变量求解递归式T(n)=2T(√n)+1。得到的解应当是渐进紧确的。不必担心值是否为整数。 解:设m=lgn,则:n=2^m,T(2^m)=2T(2^(m/2))+1。再设S(m)= T(2^m),可得:S(m)=2S(m/2)+1,由主方法,a=2,b=2,f(m)=1,n^(log_b^a )=n^(log_2^2 )=n。f(n)=n^0=O(n^(1-1))满足第一种情况...2011-07-19 12:48:56 · 601 阅读 · 0 评论 -
算法导论习题解答 4.1-2
4.1-2 证明T(n)=2T(⌊n/2⌋)+n的解为O(nlgn)。证明这个递归的解也是Ω(nlgn),得到的解为Θ(nlgn)。 证明:(1)假设T(⌊n/2⌋)<=c⌊n/2⌋lg(⌊n/2⌋)。则有: T(n)<=2(c⌊n/2⌋lg(⌊n/2⌋))+n <=cnlg(n/2)+n ...2011-07-19 12:42:31 · 635 阅读 · 0 评论 -
算法导论习题解答 4.1-1
4.1-1 证明T(n)=T(⌈n/2⌉)+1的解为O(lgn)。 证明:假设T(⌈n/2⌉)<=clg(⌈n/2⌉-b)+1,则有: T(n)<= clg(⌈n/2⌉-b)+1 <= clg(n/2-b+1)+1 =clg((n-2b+2)/2)+1 =clg(n-2b+2)-clg2+1 (1) 如果b>=2 && ...2011-07-19 12:39:16 · 916 阅读 · 0 评论 -
算法导论习题解答 2-2
•2-2 冒泡排序算法的正确性证明 伪代码: BUBBLESORT(A) 1、 for i <- 1 to Length[A] 2、 do for j <- 1 to Length[A]downto i+1 3、 do if A[j] < A[j-1] 4、 then exchange A[j] &...2011-07-19 12:26:37 · 220 阅读 · 0 评论 -
算法导论习题解答 2-4
•2-4 给出一个能在Θ(nlgn)的最坏情况运行时间,确定n个元素的任何排列中逆序对的数目。(修改归并排序) 解:可以修改归并排序,在归并时加入计数器,求得逆序对的数目。在归并排序“分”的过程中,逆序对的数目等于两个分开的数组里分别计算出的逆序对的个数加上数组间的逆序对个数,而在继续细分的过程中,原来数组间的逆序对顺序不会改变,所以只要在合并时加上计数器来计算逆序对的个数即可。比如在合并已经排好...2011-07-18 23:30:35 · 242 阅读 · 0 评论 -
最小费用最大流
1、给定有向图G=(V,E),每条边e具有正整数容量,源点为s,汇点为t。假设G的最大流整数流为f。现在取E中的一条边,把它的容量增加一个单位,证明如何在O(m+n)的时间内在新容量的图中找到一个最大流。这里m是G中的边数,n是节点数。证明:假设把边e1增加一个单位容量,取新图的残留网络,运用广度优先搜索的办法搜索一条增广路经p(时间代价为O(m))。若p不存在,则原图的流f即是新图的最大...2011-07-21 13:54:19 · 339 阅读 · 0 评论