哈密顿圈问题是NP完全的
【哈密顿圈问题】
对于一个有向图G=(V,E),如果G中的圈C恰好经过每一个顶点一次,则称圈C是一个哈密顿圈。即,哈密顿圈构成一条经过所有的顶点,没有重复的“路线”。如图6是一个含有哈密顿圈的图。
图6 一个含有哈密顿圈的有向图
证明哈密顿圈问题是NPC的,可以通过证明3-SAT ≤ p \leq_p ≤p哈密顿圈来得到。
【3-SAT ≤ p \leq_p ≤p哈密顿圈】
构造方法如下:
(1)对于每一个变量 x i x_i xi,创建3m+3个顶点。命名为 v i , 1 , . . . , v i , 3 m + 3 v_{i,1},...,v_{i,3m+3} vi,1,...,vi,3m+3,并且对相邻的顶点,添加边( v i , j , v i , j + 1 v_{i,j},v_{i,j+1} vi,j,vi,j+1)和( v i , j + 1 , v i , j v_{i,j+1},v_{i,j} vi,j+1,vi,j)。如图中7中红色的点和绿色的边。如果 x i x_i xi为1,则路径 P i P_i Pi从左到右。反之,如果 x i x_i xi为0,则路径 P i P_i Pi从右到左。
(2)对于每一个变量,添加边 ( v i , 1 , v i + 1 , 1 ) (v_{i,1},v_{i+1,1}) (vi,1,vi+1,1), ( v i , 1 , v i + 1 , 3 m + 3 ) (v_{i,1},v_{i+1,3m+3}) (vi,1,vi+1,3m+3), ( v i , 3 m + 3 , v i + 1 , 1 ) (v_{i,3m+3},v_{i+1,1}) (vi,3m+3,vi+1,1), ( v i , 3 m + 3 , v i + 1 , 3 m + 3 ) (v_{i,3m+3},v_{i+1,3m+3}) (vi,3m+3,vi+1,3m+3)。
(3)添加两个节点s,t。添加边 ( s , v 1 , 1 ) (s,v_{1,1}) (s,v1,1), ( s , v 1 , 3 m + 3 ) (s,v_{1,3m+3}) (s,v1,3m+3), ( v 3 m + 3 , 1 , t ) (v_{3m+3,1},t) (v3m+3,1,t), ( v 3 m + 3 , 3 m + 3 , t ) (v_{3m+3,3m+3},t) (v3m+3,3m+3,t)。
(4)添加边 ( t , s ) (t,s) (t,s)。
构造后的图如图7所示。
图7 3-SAT到哈密顿圈的归约,第1部分
在图7中,可以看到有哈密顿回路:从t出发到达s,s再经过 P i P_{i} Pi,最后到达t,记为A。
之后对子句进行约束。
(5)对于每个子句 C a C_a Ca,假设子句为 C 1 = x 1 ∨ x ‾ 2 ∨ x 3 C_1=x_1 \vee \overline x_2 \vee x_3 C1=x1∨x2∨x3,则这个子句表示哈密顿圈首先由左到右通过 P 1 P_1 P1,然后由右向左通过 P 2 P_2 P2,最后由左向右通过 P 3 P_3 P3。如图8所示,添加点和边。
图8 3-SAT到哈密顿圈的归约,第2部分
可以看到,图中有哈密顿圈当且仅当3-SAT实例有满足的赋值。
证明:假设3-SAT实例有满足的赋值,则给出的哈密顿圈中,如果在满足的赋值中 x i x_i xi为1,则由左到右通过 P i P_{i} Pi,反之由右到左通过 P i P_{i} Pi。对于每一个子句,因为其是被满足的,所以至少有一条路径是按照与该项相关的“正确”的方向通过的。从而添加的子句顶点在哈密顿圈中能够被通过。反之,假设图G中有一个哈密顿圈,则所有添加的子句顶点(图8添加的点)都会被通过。即所有的子句都被满足。
因此,可以得到3-SAT实例是可满足的当且仅当G有哈密顿圈。证明了3-SAT ≤ p \leq_p ≤p哈密顿圈。因此哈密顿圈问题是NPC的。
,.♥,.,.♥,.,.♥,.♥,.,.♥,.,.♥,.,.♥,.,.♥,.,.♥,.,.♥,.,.♥♥,.,.♥,.,.♥,.,.♥,.♥,.,.♥,.,.♥,.,.♥,.,.♥,.,.♥,.,.♥,.,.♥
广告时间:
本宝宝开通了一个公众号,记录日常的深度学习和强化学习笔记。希望大家可以共同进步,嘻嘻嘻!求关注,爱你呦!
哈密顿圈问题是NP完全的相关推荐
- 【计算理论】计算复杂性 ( NP 完全问题 | 顶点覆盖问题 | 哈密顿路径问题 | 旅行商问题 | 子集和问题 )
文章目录 一.顶点覆盖问题 二.哈密顿路径问题 三.旅行商问题 四.子集和问题 五.NP 完全问题 一.顶点覆盖问题 顶点覆盖 ( Vertex Cover ) : 给定一个 无向图 G\rm GG ...
- NP难问题以及近似算法(基于次模)
主要是对自己研究领域的多源定位NP问题转换和证明,以及在别人已经有次模函数的基础上,设计有次模性质的函数,(将想法形式化到次模函数中)效果更好(比如时间.比如效果). 改进思路: 我们首先从一个 ...
- np.percentile()函数超详解 异常值极端值百分位四分位数
20211115 当有空值存在时,四分位数会是空值 20211019 https://www.zhihu.com/question/58421946 https://baike.baidu.com/i ...
- python pandas 如何找到NaN、缺失值或者某些元素的索引名称以及位置,np.where的使用
我们在处理数据的时候,经常需要检查数据的质量,也需要知道出问题的数据在哪个位置.我找了很久,也尝试了很多办法,都没能找到一种非常直接的函数,本文所要介绍的是一种我认为比较方便的方法:np.where( ...
- 【Math】P=NP问题
文章目录 **P vs NP** **0 P=NP基本定义** 0.1 Definition of NP-Completeness 0.2 NP-Complete Problems 0.3 NP-Ha ...
- python对数运算符号_科学网—Python中算数运算符之注意及np.logspace - 张伟的博文...
(一)算数运算符 数字2 是一个整数的例子. 长整数 不过是大一些的整数. 3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E-4表示52.3 * 10-4. (-5+4j ...
- 准备IE--复习NP,NP从头开始,每天学一点,就多一点收获
2011-07-07 今天开始重新开始NP!每天一实验,加油!写下心路历程,为自己加油! 转载于:https://blog.51cto.com/sunchangsheng/605482
- 什么是多项式时间?什么是NP问题?
参考:https://zhidao.baidu.com/question/68492427.html?qbl=relate_question_0&word=%B6%E0%CF%EE%CA%BD ...
- P、NP、NPC问题最通俗的讲解
转:Matrix67原创 什么是P问题.NP问题和NPC问题 这或许是众多OIer最大的误区之一. 你会经常看到网上出现"这怎么做,这不是NP问题吗"."这个只有 ...
最新文章
- 留学计算机Ps模板,留学ps怎么写?出国留学ps模板
- 使用python对比两个目录下的文件名差异
- 一次关于 Mysql 索引优化的思考
- libc glibc glib 的关系
- PostgreSQL 当月最后一天的工作日 , 计算日期是星期几
- 测试面试题集-3.生活物品测试:行李箱、电梯、洗衣机
- java随机输出_用java随机输出汉字
- 大小仅17KB!这个微型风格迁移模型太好玩了 | 代码+教程
- Android一种常见的布局困扰
- vuejs2和echarts3组合显示图表
- sqlite数据库保存聊天记录
- 好用的 edge 插件有哪些?
- R语言Γ(gamma)分布
- 茶道形式、用具及要素
- TTL expired in transit (TTL 传输中过期) ping一个ip却返回另一个ip
- Qt5.12+VS2017环境下编译QtAV视频库
- echarts从全国地图切换成省级地图地图不居中的问题
- HGOI 20190821 慈溪一中互测
- C语言输入一串数字字符串,C语言——输入一个字符串,将连续数字字符转换为数字(示例代码)...
- 如何高效的配置Nginx
热门文章
- WireShark发现局域网中的ARP病毒
- XmlMapper详解及工具类封装
- 零基础制作【武林外传】辅助工具(三)
- 上交所前总工程师白硕:Libra招招制敌,中国是全球唯一有能力的应对者(全文)...
- SELinux is preventing /usr/sbin/httpd from name_bind access on the tcp_socket port
- win10记事本转为html,把IE浏览器“查看源”的HTML编辑器修改为记事本、Word或Excel...
- 党员管理系统 spring boot
- MIT牛人解说数学体系 Ⅰ
- win10系统与win7系统双系统怎么设置默认启动系统
- Bottleneck