欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

理解计算难题:NP完全性(顶点覆盖、哈密顿路径、旅行商与子集和问题详解)

最编程 2024-07-28 08:19:53
...

文章目录

一、顶点覆盖问题

二、哈密顿路径问题

三、旅行商问题

四、子集和问题

五、NP 完全问题





一、顶点覆盖问题


顶点覆盖 ( Vertex Cover ) :


给定一个 无向图 G \rm GG , G \rm GG 的 点集覆盖 定义 :


找到 无向图 G \rm GG 的 点集子集 V \rm VV ,


使得 无向图 G \rm GG 中的任何一条边 , 都与 点集子集 V \rm VV 的至少一个节点是接触的 ;



顶点覆盖问题 : 查看 无向图 G \rm GG 中 是否包含一个指定大小的 满足上述要求的 点集子集 V \rm VV ;



符号化表示 :


V E R T E X − C O V E R = { < G , K > ∣ G 是 无 向 图 , 包 含 k 个 节 点 的 点 集 覆 盖 } \rm VERTEX-COVER = \{ <G, K> | G 是无向图 , 包含 k 个节点的 点集覆盖 \}VERTEX−COVER={<G,K>∣G是无向图,包含k个节点的点集覆盖}


其中 k \rm kk 个节点 的 点集覆盖 就是无向图中有 k \rm kk 个点的点集子集 , 满足点集覆盖要求 ;



点集覆盖 是 N P \rm NPNP 完全问题 ;






二、哈密顿路径问题


哈密顿路径问题在图论中是很重要的问题 ;



在下图中 , 从某个顶点出发 , 将所有的顶点都走一遍, 并且每个顶点只能经过一次 ,

image.png



经过所有顶点的 圈 称为 哈密顿圈 ,


经过所有顶点的 道路 称为 哈密顿道路 , 又称为 哈密顿路径 ;



哈密顿路径问题 就是 找到无向图中的哈密顿路径 ;



涉及到的其它概念 :

途径 : 顶点和边的交替出现的序列 , 其顺序符合图中的位置即可 ;

迹 : 每个边不能相同的 途径 ;

路 : 每个点都不相同的 迹 ;

这三个概念 , 一个比一个严格 ;

闭途径 : 起点 和 终点 相同的 途径 ;

闭迹 : 起点 和 终点 相同的 迹 , 也称 回路 ;

圈 : 起点 和 终点 相同的 路 ;

G GG 指的是 Graphic 图 ;

E EE 指的是 Edge 边 ;

V VV 指的是 Vertext 顶点 ;



哈密顿路径 , 参考 【图论】简单 概念 及 公式 入门 ( 完全图 | 二部图 | 连通图 | 欧拉回路 | 哈密顿圈 | 平面图 | 欧拉定理 ) 博客中的 欧拉回路 与 哈密顿圈 ;



哈密顿路径问题 是 N P \rm NPNP 完全的 ;


无向图中哈密顿路径是否存在 , 该问题也是 N P \rm NPNP 完全的 ;



前者是求出具体的哈密顿路径 , 后者求哈密顿路径是否存在 ;






三、旅行商问题


旅行商问题 : 无向图中 , 每条边都有一个权重 , 求是否有一条哈密顿路径的权重之和 , 不超过给定的自然数 W \rm WW ;


旅行商问题 是 N P \rm NPNP 完全的 ;






四、子集和问题


子集和问题 : 给定一个 自然数集合 , 给定一个 自然数 t \rm tt , 问给定的自然数集合中 , 是否存在子集 , 使它们之和等于给定的自然数 t \rm tt ;


子集和问题 是 N P \rm NPNP 完全的 ;






五、NP 完全问题


计算理论中的 N P \rm NPNP 完全问题 :


S A T \rm SATSAT 布尔可满足性问题 ;


d H A M P A T H \rm dHAMPATHdHAMPATH 哈密顿路径问题 ;


T S P \rm TSPTSP 旅行商问题 ;



下图就是已知的 N P \rm NPNP 完全问题 ;

image.png