当然,这里是为了帮助理解而简约化的两个🙉概念,是抛开了数学上的严谨性和复杂性,简而明了的理解做出的简化。
p代表了这样一类🁠问题,计算机在解决它们的🞒📦🝄时候可以有速度非常快的方法。这个速度🄯🁄和计算机硬件无关,仅仅取决于这个解决方法本身的便捷性。
而Np代表了另一类问题,它们有最优解,但是,其中很多问题,计算机在寻求最优解时,没有快速的方法,甚至,只能傻傻的、暴力的♰🟇、尝试所有可能的组合,然后找到最优解🕣。
Np问题中,最🄎难的一类问题,被称为Npc,也就是N♿🎊p完⛧全问题。
如果这样说依旧🄎不够具体的话,用一个小小的故事来举例,相信你能⛟🛬更加简约的理解。
假设你在参加一个盛大的宴会,想要知道里面有没有认♟识的人。
这个时候,宴会的主人对你说,你一定认识🙉正站在甜点桌右边角落里的女士小A,于是你立刻扫向那🛏🜷里,发现他说的是对的,你的确认识她。
于是,通
过宴会主人的信🄎息,你很容易判断出A女士你认识。
但如果他不告诉你这些,你就需要环顾整个大厅,审视过每一个🙺🏟人,然后才知道有没有认识的人。
通过宴会主人的暗示,找到🞋💦小A女士,就是🙉p类😏⛾☛问题;
而你按照他的提示发现自己认识小A女🄤士,容易检查到小A女士就是Np问题。
在某岛国作家《嫌疑人x的献身》推理🄤中,石神和汤川曾讨论,解决一个命题和判断一个命题💍🐦🂉是否正确,哪个更难。
其实数学界早就已经给出了答案,p=Np?问题就放在哪里,它告诉了所有人,生成问♹🍓🇧题的一个解,通常比验证一个给定的解,要花费更多时间。
比如,如果让你计算世界上所有原子个数的总和,这🕈🇪个问题很困难,甚至无解。🖰🖰
但是,如果有人告诉你世界上一共有500🙉个原子,那♟么你能很快验证他是错的。很容易验证,却不容易求解,这种就是Np类问题。
p类问题是可以在多项式时间内解决并🄤验证的一类问题;Np类问题是可以多项式时间验证但是不确定能否在多项式🝛时间内解决的一类问题。
很显然,🙼🏱所有p类问题都属于Np类问题,但是无法确定Np是否等于p。
而自「p=Np?」提出以来,无论是数学界也好,还是计算机🙺🏟领域也好,都做了很多尝试。💍🐦🂉
要证明p=Np,最显然的方♥👭法就是给出一个Np完全问题的多项式时间的算法。
但在过去的几十🄎年里,一大批数学家和程序人员为寻找Np完全问题的多项式时间的算法做了很🅻多工作,都没有成功。😆⚯
当然,也有很大的一批人在尝试给出p≠Np?,甚至在如今的主流数学界和计算机行业,大部分的学者和研究人员都😆⚯认⚝为p≠Np?。
原因很简单,🖿😔🁄如果p=Np,♥👭则意味着,每一🞒📦🝄个Np问题都可以转化成p,也就是每一个难题最终可以变成一个简单命题,让计算机可以快速求解。