算法设计练习题(共7页).doc
《算法设计练习题(共7页).doc》由会员分享,可在线阅读,更多相关《算法设计练习题(共7页).doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上算法设计练习题一. 计算复杂性1 P184 10.3 设计一个多项式时间的算法判断一个无向图G是否是2可着色的算法:2-COLORING输入:无向图G(V, E)输出:该图是2可着色的,则输出yes;否则,输出no.1. 取任一节点,标记为白色2. 所有与它邻接的节点标记为黑色3. 对任意已标记的节点v,将所有与v邻接且未标记的节点标记为与v相反的颜色4. 重复步骤3,直到不存在与已标记节点邻接且还未标记的节点5. 如果图中还有未标记的节点,那么这些节点一定在一个新的连通分量中,再选 择其中一个节点标记为白色,转到步骤36. 如果得到的图中,所有邻接的节点都标记为不同
2、的颜色,则输出yes;否则,输出no.End 2-COLORING 时间复杂度分析:在n个顶点和m条边的图上进行分析,算法的运行时间是2 P185-186 10.16 团集问题的NP完全性是由可满足性问题归约到它证明的,给出一个从顶点覆盖到团集的较简单的归约法1:规约方法:设G=(V,E)是连通无向图,SV是一个团集当且仅当是中的一个顶点覆盖。证明:设e=(u,v)是G中的任意边,SV是一个团集当且仅当u和v都在S中,即是中的一个顶点覆盖。法2:证明:设G=(V,E)是连通无向图,SV是G中的一个独立集,则S是的一个团集,独立集poly团集。因为顶点覆盖poly独立集,根据定理10.3,顶点覆
3、盖poly团集。3 P185-186 10.26 用顶点覆盖问题规约到集合覆盖问题,证明集合覆盖问题是NP完全问题。证明:第一步是说明集合覆盖问题是NP的。因为一个不确定性算法可以从猜测一个集合X的子集族F开始,然后验证是否存在F中的k个子集的并是集合X。第二步证明顶点覆盖问题可以在多项式时间内规约到集合覆盖问题。设任意连通无向图G=(V,E),集合X为G中所有与边相邻的顶点的集合,其子集族则是每个顶点与其相邻的顶点构成的子集。集合X是满足集合覆盖的当且仅当X的子集族中存在k个子集的并是X,当且仅当G中存在大小为k的顶点覆盖。4 P215 12.16 证明:设x1,x2,xn是一个正实数集合。
4、对于每一个实数xi,我们使它和二维平面中的点 (x1,1),(xj,0) | j2,n 相联系,这样,所构造的n个点都位于三角形边上。如果我们用TRIANGULATION问题的任何算法求解构造的实例,输出将是根据它们的x坐标排序的构造点的表,遍历表并读出每点的第一个坐标,结果是排序好的数。所以,排序问题规约到TRIANGULATION问题,排序问题是(n logn),TRIANGULATION问题也是(n logn)。5 P215 12.17 证明:设x1,x2,xn是一个升序排列的正实数集合,及实数x。对于实数x及每一个实数xi,我们使它和二维平面中的点(x,0),(xi,0) | i1,n
5、 相联系,这样,所构造的点都位于x轴上。如果我们用NEAREST POINT问题的任何算法求解,输出就是二分搜索要查找的数。所以,二分搜索问题规约到NEAREST POINT问题,二分搜索问题是(logn),NEAREST POINT问题也是(logn)。6 P215 12.18证明:设x1,x2,xn是一个正实数集合,对于每一个实数xi,我们构造点(xi,0)与之对应,于是这些点在x轴上。如果我们用ALL NEAREST POINT问题的任何算法求解,输出将是每个点(xi,0)对应的最近点对(xi,0),(xj,0)。所以,CLOSEST-PAIR问题规约到ALL NEAREST POINT
6、问题,CLOSEST-PAIR问题是(n logn),ALL NEAREST POINT问题也是(n logn)。二. 随机算法1 P241 14.2 假定你有一枚硬币,请设计一个有效的随机算法用来生成整数1,2.n的随机排列,n为正整数,分析你的算法的时间复杂性。基本思想:从空序列开始,逐个向序列添加1, 2, , n。根据二分搜索的思想,并利用多次抛硬币,来随机确定每个添加的数在序列中的位置。算法 RANDOMIZE2 输入:正整数n 输出:1, 2, , n的一个随机排列。 A1=1 for i=2 to n j=randombisearch(1, i-1)/在数组A中随机确定i的插入位
7、置。 insert(A , j, i) /在数组A的j位置上插入值i。 end for output A1.n end RONDOMIZE2 过程 randombisearch(low, high)/ 利用二分搜索在Alow.high+1中随机确定值i的插入位置,/ 并返回该位置。if lowhigh then return lowelse mid= k=random(1,2) /抛一次硬币。 if k=1 then high=mid-1 /插入位置在Alow.mid中。 else low=mid+1 /插入位置在Amid+1.high+1中。 return randombisearch(lo
8、w, high)end if end randombisearch时间复杂性:(n2) 2 P241 14.5 在算法RANDOMIZEDQUICKSORT的讨论中曾说过,为算法QUICKSORT得到一个O(log n)期望时间的一种可能性,是通过排列输入元素使它们的次序变成随机的来获得的。描述一个O(n)时间算法,先随机排列下算法思想:对预排序的数组进行随机排列,使该数组与原先相比显得无序。尽量避免QUICKSORT算法最坏情况的发生即n2时间,使之更趋近于最佳情况nlogn时间。算法PRE_DISPOSE输入:n个元素的数组a1n输出:随机排列的数组a for i=1 to n P =ra
9、ndom(n)/随机选择小于n的数 Q=random(n) /随机选择小于n的数 互换aP和aQ end forend PRE_DISPOSE3 P241 14.7 考虑对算法BINARYSERCH做如下修改见1.3节,在每次迭代中,随机的选择剩下的位置来代替搜索区间减半设元素存储在一维数组C中,第0个位置不放元素,若每次生成的随机数都是要查找的剩余元素的第一个且未找到要搜索的数,则时间复杂度计算公式如下:计算得到时间复杂度为4 写出n皇后问题的如下随机算法:先在棋盘上随机放置m(mn)个互不冲突的皇后,然后用回溯法搜索其余皇后的位置。算法 NQUEENS_RAN_ACCU输入:正整数n,m,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 设计 练习题
限制150内