- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 曲沃县各级文物保护单位一览表(2021版).docx VIP
- 2025年甘肃省公路交通建设集团武仙公路收费运营人员招聘61人简历怎么投递笔试备考题库及答案解析.docx VIP
- 2025年安徽省淮南市招聘社区工作者考试题(含答案).docx VIP
- 小学新学期开学收心会开学第一课收心主题班会通用PPT.pptx
- 做中文讲师妈妈.doc VIP
- 细胞的基本结构-细胞膜的结构和功能.ppt VIP
- 2025年初中语文九年级上册教学计划及进度表 .pdf VIP
- 部编版小学四年级语文上册教案(全册).pdf VIP
- 2025年甘肃省公路交通建设集团武仙公路收费运营人员招聘61人简历怎么投递笔试备考试题及答案解析.docx VIP
- 高中生物实验探究教学中的跨学科学习研究教学研究课题报告.docx
文档评论(0)