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

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

文章目录

一、NP 完全的定位

二、NP 难 问题 ( P = NP ) 仅做参考 [ 潜在错误 ]

三、NP 难 问题 ( P ≠ NP ) 目前公认 [ 潜在正确 ]





一、NP 完全的定位


计算理论中三个重要概念 : P \rm PP , N P \rm NPNP , N P \rm NPNP 完全 ;



P \rm PP , N P \rm NPNP , N P \rm NPNP 完全 , 三者的相互关系如下 :


目前 P \rm PP 与 N P \rm NPNP 的是否相等不确定 , 只知道 P ≤ N P \rm P \leq NPP≤NP ;


如果 P ≠ N P \rm P \not= NPP


=NP , 则有 P < N P \rm P < NPP<NP , 三者关系如下图左边所示 ;


如果 P = N P \rm P = NPP=NP , 则三者关系如下图右边所示 ;



image.png






二、NP 难 问题 ( P = NP ) 仅做参考 [ 潜在错误 ]


该观点目前认为是错误的 , 不过没有严格的证明 ;



P = N P \rm P = NPP=NP 情况分析 : 如果 P = N P \rm P = NPP=NP , 则有 P = N P = N P \rm P = NP = NPP=NP=NP-完全 ;



N P \rm NPNP 难问题就是 满足 N P \rm NPNP 完全问题的第二个条件 , 不满足第一个条件的问题 ,


N P \rm NPNP 中的任何计算问题 , 难易程度 , 都不会超过当前的 计算问题 B \rm BB , 则称 B \rm BB 是 N P \rm NPNP 难 的 ;


N P \rm NPNP 难 问题包含了 P = N P = N P \rm P = NP = NPP=NP=NP-完全 这三种问题 ;



image.png





三、NP 难 问题 ( P ≠ NP ) 目前公认 [ 潜在正确 ]


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



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 中的其它问题 ;




证明 N P \rm NPNP 完全的意义 :


如果能够证明 计算问题 A \rm AA 是 N P \rm NPNP 完全的 , N P \rm NPNP 完全问题 与 P \rm PP 问题 不相交 ,


说明 该 计算问题 A \rm AA 一定没有有效算法 , 只有有效算法才会在 P \rm PP 中 ,


因为 没有任何有效算法在 是 N P \rm NPNP 完全的 ;



如果 计算问题 是 N P \rm NPNP 完全的 , 该算法一定不是有效算法 ;


目录
相关文章
|
存储 算法 计算机视觉
np.zeros初始化图像
np.zeros初始化图像
|
3月前
np.array()按权重求平均值详解
np.array()按权重求平均值详解
|
5月前
|
存储 数据挖掘 数据格式
np.fromfile
np.fromfile“【5月更文挑战第22天】”
413 3
|
2月前
|
机器学习/深度学习 算法
【机器学习】P问题、NP问题、NP-hard、NP-C问题解析与举例理解
本文解析了P问题、NP问题、NP-hard问题以及NP-Complete问题的概念,并通过实例帮助理解NP问题的特点和复杂性。
147 1
|
5月前
|
计算机视觉 Python
np.ones
np.ones
70 1
|
5月前
np.where()使用详解
1.函数介绍 np.where函数相当于三元表达式的向量版本,能够针对向量作三元操作,有两种使用方法。 np.where(condition, x, y):当满足第一个参数条件时,where返回x,不满足第一个参数的条件时返回y。
111 0
|
算法 定位技术
浅谈P、NP、NP-Complate和NP-Hard问题
时间复杂度 时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当程序所处理的问题规模扩大后,程序需要的时间长度对应增长得有多快。 也就是说,对于某一个程序,其处理某一个特定数据的效率不能衡量该程序的好坏,而应该看当这个数据的规模变大到数百倍后,程序运行时间是否还是一样,或者也跟着慢了数百倍,或者变慢了数万倍。 不管数据有多大,程序处理所花的时间始终是那么多的,我们就说这个程序很好,具O(1)O(1)O(1)的时间复杂度,也称常数级复杂度;
|
机器学习/深度学习 PyTorch 算法框架/工具
Numpy | np.random随机模块的使用介绍
Numpy | np.random随机模块的使用介绍
233 0
Numpy | np.random随机模块的使用介绍