【计算理论】计算理论总结 ( P 、NP 、NPC 总结 ) ★★

简介: 【计算理论】计算理论总结 ( P 、NP 、NPC 总结 ) ★★

文章目录

一、P 类

二、NP 类

三、NPC 类 ( NP 完全 )

四、P 、NP 、NPC 三者关系





一、P 类


P \rm PP 类 : ★


所有 能够被 确定性 单个带子图灵机 , 在 多项式时间 内 , 能够被 判定的计算问题 ( 语言类 ) ,


将这些问题放在一起 ( 广义并集 ⋃ \bigcup⋃ ) , 组成一个整体 , 就称为 P \rm PP


符号化表示 : P = ⋃ k T I M E ( n k ) \rm P = \bigcup_k TIME( n^k )P=⋃

k


TIME(n

k

)



P \rm PP 类 , 就是定义 有效算法 所组成的类 ,


有效算法 , 就是在 多项式时间 内 , 可以执行完毕 , 得到一个确定的结果的算法 ;


确定的结果就是 接受状态 , 或 拒绝状态 ;



P \rm PP 类有效算法示例 : ★


① PATH


② 贪心算法


③ 动态规划算法


④ REGULAR


⑤ CFL



参考博客 : 【计算理论】计算复杂性 ( P 类 | 有效算法函数 | NP 直觉 | NP 简介 | NP 类严格数学定义 )






二、NP 类


验证机 : A \rm AA 语言 ( 计算问题 ) 的 验证机 V \rm VV ; ★


< w , c > \rm <w,c><w,c> 含义 : 给定一个 输入 w \rm ww , w \rm ww 是输入字符串 , c \rm cc 是输入 w \rm ww 被接受的情况下的输入 , 即正确的输入 ;


A \rm AA 语言 ( 计算问题 ) 的 验证机 V \rm VV 条件 : 给定了正确的输入 c \rm cc , 让验证机 V \rm VV 进行一步步验证 , 如果 验证机 V \rm VV 接受了输入的字符串 c \rm cc , 称 验证机 V \rm VV 就是计算问题 A \rm AA 的验证机 ;



符号化表示 : A = { w : 验 证 机 V 接 受 < w , c > 中 正 确 的 输 入 c } \rm A = \{ w : 验证机 V 接受 <w,c> 中正确的输入 c \}A={w:验证机V接受<w,c>中正确的输入c}



验证操作 : 已经有了正确答案 c \rm cc , 有一个有限的规则 , 将正确答案 c \rm cc 每一步 , 代入有限规则中进行验证是否正确 ;


验证时间 : 已经有了正确答案 c \rm cc , 有一个有限的规则 , 将正确答案 c \rm cc 每一步 , 代入有限规则中进行验证是否正确 , 最后记录整个验证过程所花费的时间 ; 即 学习的过程 ;


N P \rm NPNP 计算问题要求 : 如果花费的时间 在 多项式时间 之内 , 就称 该问题是 N P \rm NPNP 对应的计算问题 ;



多项式时间验证机 : A \rm AA 语言 如果 可以在 多项式时间 内 可以 验证 的话 , 就称该语言 有一个 多项式时间验证机 ; ★



N P \rm NPNP 类就是有 多项式时间验证机 的 语言类 ( 计算问题集合 ) ; ★



1 . N P \rm NPNP 类算法举例 : ★


① 蛮力穷举算法 ;



2 . N P \rm NPNP 类包含 N P C \rm NPCNPC 类 ( N P \rm NPNP 完全 ) , N P C \rm NPCNPC 算法举例 : ★


① 布尔可满足性问题 SAT


② 3-SAT


③ 团问题 : 无向图中是否包含 k \rm kk 团 , k \rm kk 个节点两两之间有边相连 ;


④ 独立集问题


⑤ 顶点覆盖问题


⑥ 哈密顿路径问题


⑦ 旅行商问题


⑧ 子集和问题



3 . N P \rm NPNP 类中 , 既不属于 P \rm PP , 又不属于 N P C \rm NPCNPC 的问题也是存在的 , 如 : ★


① 图同构问题



参考博客 :


【计算理论】计算复杂性 ( P 类 | 有效算法函数 | NP 直觉 | NP 简介 | NP 类严格数学定义 )

【计算理论】计算复杂性 ( NP 完全问题 - 布尔可满足性问题 ★ | 布尔可满足性问题是 NP 完全问题证明思路 ) ★

【计算理论】计算复杂性 ( 3-SAT 是 NP 完全问题 | 团问题是 NP 完全问题 | 团问题是 NP 完全问题证明思路 )

【计算理论】计算复杂性 ( NP 完全问题 | 顶点覆盖问题 | 哈密顿路径问题 | 旅行商问题 | 子集和问题 )

【计算理论】计算复杂性 ( NP 完全问题 | NP 难 问题 P = NP 的情况 | NP 难 问题 P ≠ NP 的情况 )





三、NPC 类 ( NP 完全 )


NPC 是 NP-Completeness ( NP 完全 ) 的简称 ;



NP 完全 定义 ★ :


如果 语言 B \rm BB 是 N P \rm NPNP 完全的 , 必须满足如下两个条件 :


① 是 N P \rm NPNP 问题 : 语言 B \rm BB 对应的计算问题必须在 N P \rm NPNP 中 , 换句话说就是可以找到一个多项式算法 , 可以验证该计算问题 ;


② 是 N P \rm NPNP 最难问题 : 在 N P \rm NPNP 中的任何计算问题 A \rm AA , 都可以在 多项式时间规约 到 B \rm BB , 也就是说在 N P \rm NPNP 中的任何计算问题 , 其难易程度都不会超过 B \rm BB , B \rm BB 是 N P \rm NPNP 中最难的问题 ;



N P \rm NPNP 中其它所有的计算问题的难以长度都不会超过 B \rm BB , B \rm BB 问题是 N P \rm NPNP 中最难的问题 ;



NP 完全命题 ★ : 如果 B \rm BB 问题是 N P \rm NPNP 完全的 , 并且 B \rm BB 能在 多项式时间规约 到 C \rm CC , 记作 B ≤ C \rm B \leq CB≤C , 则 C \rm CC 也是 N P \rm NPNP 完全的 ;




该命题是很重要的命题 , 验证一个命题是 N P \rm NPNP 完全的 , 需要满足上面的两个条件 , ① 是 N P \rm NPNP 问题 , ② 是 N P \rm NPNP 最难问题 ;


将计算问题与 N P \rm NPNP 中最难问题 B \rm BB 进行比较 , 是很难的 , 如果已经知道某个计算问题是 N P \rm NPNP 完全的 , 就不需要与 N P \rm NPNP 中所有问题进行比较 , 只与当前已知的 N P \rm NPNP 完全问题比较即可 ;



将 已知的 N P \rm NPNP 完全的 计算问题 B \rm BB , 与 要验证的 C \rm CC 问题 , 进行规约 , 就知道 C \rm CC 问题是否是 N P \rm NPNP 完全的 ;



历史已经找到了一个 N P \rm NPNP 完全问题 : 布尔可满足性问题 ( Boolean Satisfiability Problem;SAT ) ;



N P \rm NPNP 类包含 N P C \rm NPCNPC 类 ( N P \rm NPNP 完全 ) , N P C \rm NPCNPC 算法举例 : ★


① 布尔可满足性问题 SAT


② 3-SAT


③ 团问题 : 无向图中是否包含 k \rm kk 团 , k \rm kk 个节点两两之间有边相连 ;


④ 独立集问题


⑤ 顶点覆盖问题


⑥ 哈密顿路径问题


⑦ 旅行商问题


⑧ 子集和问题



参考博客 :


【计算理论】计算复杂性 ( P 类 | 有效算法函数 | NP 直觉 | NP 简介 | NP 类严格数学定义 )

【计算理论】计算复杂性 ( 多项式时间规约 | NP 完全 ★ | 布尔可满足性问题 ) ★

【计算理论】计算复杂性 ( NP 完全问题 - 布尔可满足性问题 ★ | 布尔可满足性问题是 NP 完全问题证明思路 ) ★

【计算理论】计算复杂性 ( 3-SAT 是 NP 完全问题 | 团问题是 NP 完全问题 | 团问题是 NP 完全问题证明思路 )

【计算理论】计算复杂性 ( NP 完全问题 | 顶点覆盖问题 | 哈密顿路径问题 | 旅行商问题 | 子集和问题 )

【计算理论】计算复杂性 ( NP 完全问题 | NP 难 问题 P = NP 的情况 | NP 难 问题 P ≠ NP 的情况 )





四、P 、NP 、NPC 三者关系


该观点目前认为是正确的 , 同样也没有严格的证明 ;



P ≠ N P \rm P \not= NPP


=NP 情况分析 : 如果 P ≠ N P \rm P \not= NPP


=NP , 则有


P < N P \rm P < NPP<NP , ★


N P \rm NPNP 完全 < N P \rm <NP<NP ★



N P \rm NPNP 问题 中包含了三种计算问题 : ★


① P \rm PP 问题


② N P \rm NPNP 完全问题


③ 其它问题 , 既不属于 P \rm PP 问题 , 又不属于 N P \rm NPNP 完全问题 ;



图同构问题 , 就属于 其它问题 , 既不属于 P \rm PP 问题 , 又不属于 N P \rm NPNP 完全问题 ;



N P \rm NPNP 难 问题 , 包含了 N P \rm NPNP 完全问题 , 不包含 P \rm PP 问题 和 N P \rm NPNP 中的其它问题 ;

image.png




参考博客 : 【计算理论】计算复杂性 ( NP 完全问题 | NP 难 问题 P = NP 的情况 | NP 难 问题 P ≠ NP 的情况 )


目录
相关文章
|
7月前
|
算法 应用服务中间件 图形学
贝叶斯推理导论:如何在‘任何试验之前绝对一无所知’的情况下计算概率
这篇文章探讨了贝叶斯推理的发展历史,从帕斯卡尔和费马的早期工作到托马斯·贝叶斯、皮埃尔-西蒙·拉普拉斯和哈罗德·杰弗里斯的贡献。文章指出,贝叶斯分析经历了从使用均匀先验到发展更为客观的方法,如杰弗里斯先验的过程。它讨论了费雪对逆概率的批评,以及贝叶斯方法在处理不确定性问题上的优势。文章还介绍了如何通过匹配覆盖率来评估先验分布的合理性,并通过几个例子展示了不同先验在二项分布和正态分布问题中的应用。最后,文章提出了贝叶斯分析在统计学中的地位,强调了在缺乏先验知识时建立良好先验的重要性,并讨论了主观性和客观性在统计推理中的角色。
104 1
|
7月前
|
数据可视化
R语言可视化渐近正态性、收敛性:大数定律、中心极限定理、经验累积分布函数
R语言可视化渐近正态性、收敛性:大数定律、中心极限定理、经验累积分布函数
Matlab:如何利用层次分析法(升级版)计算具有多重指标的判断矩阵的一致性检验和权重
Matlab:如何利用层次分析法(升级版)计算具有多重指标的判断矩阵的一致性检验和权重
370 0
|
Python
Python漫游数学王国 | 总体参数的区间估计
本文讨论总体参数的区间估计。
183 0
|
机器学习/深度学习 算法
深度之眼(七)——矩阵的初等变换(附:数模一些模型的解释)
深度之眼(七)——矩阵的初等变换(附:数模一些模型的解释)
152 0
深度之眼(七)——矩阵的初等变换(附:数模一些模型的解释)
【计算理论】计算复杂性 ( NP 完全问题 | 顶点覆盖问题 | 哈密顿路径问题 | 旅行商问题 | 子集和问题 )
【计算理论】计算复杂性 ( NP 完全问题 | 顶点覆盖问题 | 哈密顿路径问题 | 旅行商问题 | 子集和问题 )
374 0
【计算理论】计算复杂性 ( NP 完全问题 | 顶点覆盖问题 | 哈密顿路径问题 | 旅行商问题 | 子集和问题 )
|
机器学习/深度学习 资源调度 算法
【计算理论】计算理论总结 ( 图灵机设计 ) ★★
【计算理论】计算理论总结 ( 图灵机设计 ) ★★
377 0
【计算理论】计算理论总结 ( 图灵机设计 ) ★★
|
资源调度
【计算理论】计算理论总结 ( 自动机设计 ) ★★
【计算理论】计算理论总结 ( 自动机设计 ) ★★
328 0
【计算理论】计算理论总结 ( 自动机设计 ) ★★
|
机器学习/深度学习
【计算理论】计算复杂性 ( 3-SAT 是 NP 完全问题 | 团问题是 NP 完全问题 | 团问题是 NP 完全问题证明思路 )
【计算理论】计算复杂性 ( 3-SAT 是 NP 完全问题 | 团问题是 NP 完全问题 | 团问题是 NP 完全问题证明思路 )
498 0
【计算理论】计算复杂性 ( 3-SAT 是 NP 完全问题 | 团问题是 NP 完全问题 | 团问题是 NP 完全问题证明思路 )
【计算理论】计算复杂性 ( coNP 问题 | coNP 完全 | P、NP、coNP 相互关系 )
【计算理论】计算复杂性 ( coNP 问题 | coNP 完全 | P、NP、coNP 相互关系 )
528 0
【计算理论】计算复杂性 ( coNP 问题 | coNP 完全 | P、NP、coNP 相互关系 )