算法设计练习题解析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计练习题 计算复杂性 P184 10.3 设计一个多项式时间的算法判断一个无向图G是否是2可着色的 算法:2-COLORING 输入:无向图G(V, E) 输出:该图是2可着色的,则输出yes;否则,输出no. 取任一节点,标记为白色 所有与它邻接的节点标记为黑色 对任意已标记的节点v,将所有与v邻接且未标记的节点标记为与v相反的颜色 重复步骤3,直到不存在与已标记节点邻接且还未标记的节点 如果图中还有未标记的节点,那么这些节点一定在一个新的连通分量中,再选 择其中一个节点标记为白色,转到步骤3 如果得到的图中,所有邻接的节点都标记为不同的颜色,则输出yes;否则,输出no. 2-COLORING 时间复杂度分析:在n个顶点和m条边的图上进行分析,算法的运行时间是 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,顶点覆盖∝poly团集。 证明:第一步是说明集合覆盖问题是NP的。因为一个不确定性算法可以从猜测一个集合X的子集族F开始,然后验证是否存在F中的k个子集的并是集合X。 第二步证明顶点覆盖问题可以在多项式时间内规约到集合覆盖问题。 设任意连通无向图G=(V,E),集合X为G中所有与边相邻的顶点的集合,其子集族则是每个顶点与其相邻的顶点构成的子集。集合X是满足集合覆盖的当且仅当X的子集族中存在k个子集的并是X,当且仅当G中存在大小为k的顶点覆盖。 证明:设{x1,x2,…,xn}是一个正实数集合。对于每一个实数xi,我们使它和二维平面中的点{ (x1,),(xj,0) | j∈2,…,n }相联系,这样,所构造的n个点都位于三角形边上。如果我们用TRIANGULATION问题的任何算法求解构造的实例,输出将是根据它们的x坐标排序的构造点的表,遍历表并读出每点的第一个坐标,结果是排序好的数。所以,排序问题规约到TRIANGULATION问题,排序问题是Ω(n logn),TRIANGULATION问题也是Ω(n logn)。 证明:设{x1,x2,…,xn}是一个升序排列的正实数集合,及实数x。对于实数x及每一个实数xi,我们使它和二维平面中的点{(x,0),(xi,0) | i∈1,…,n }相联系,这样,所构造的点都位于x轴上。如果我们用NEAREST POINT问题的任何算法求解,所以,二分搜索问题规约到NEAREST POINT问题,二分搜索问题是Ω(logn),NEAREST POINT问题也是Ω(logn)。 证明:设{x1,x2,…,xn}是一个正实数集合,对于每一个实数xi,我们构造点(xi,0)与之对应,于是这些点在x轴上。如果我们用ALL NEAREST POINT问题的任何算法求解,输出将是每个点(xi,0)对应的最近点对(xi,0),(xj,0)。所以,CLOSEST-PAIR问题规约到ALL NEAREST POINT问题,CLOSEST-PAIR问题是Ω(n logn),ALL NEAREST POINT问题也是Ω(n logn)。 算法 RANDOMIZE 输入:正整数n 输出:1, 2, …, n的一个随机排列。 A[1]=1 for i=2 to n j=randombisearch(1, i-1)//在数组A中随机确定i的插入位置。 insert(A , j, i) //在数组A的j位置上插入值i。 end for output A[1..n] end RONDOMIZE2 过程 randombisearch(low, high) // 利用二分搜索在A[low..high+1]中随机确定值i的插入位置, // 并返回该位置。 if lowhigh then return low else mid= k=random(1,2) //抛一次硬币。 if k=1 then high=mid-1 //插入位置在A[low..mid]中。 else low=mid+1 //插入位置在A[mid+1..high+1]中。 return randombisearch(low, high) end if e

文档评论(0)

光光文挡 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档