NP完全问题

如果一个算法的最差时间效率属于 O ( p ( n )) ,其中 p (n ) 是问题输入规模 n 的一个多项式函数,我们说该算法能够在多项式的时间内对问题求解
我们把可以在多项式时间内求解的问题称为易解的,而不能在多项式时间内求解的问题则称为难解的

非正式地说,我们可以把那些能够在多项式时间内求解的问题当作计算机科学家所说的* P 集合*
正式点,只有那些能够回答是或否的问题(又称判定问题)才属于 P。

P 类问题是一类能够用确定性算法在多项式时间内求解判定问题
这种问题类型也称为多项式类型

绝大多数判定问题的一个公共特性是:

虽然在计算上对问题求解可能是困难的,但在计算上判定一个待定解是否解决了该问题却是简单的,并且,这种判定可以在多项式时间内完成。

一个不确定算法是一个两阶段的过程,它把一个判定问题的实例 l 作为它的输入,并进行下面的操作:

  • 猜测(非确定)阶段:

    生成一个任意串 S,把它当作给定实例 l 的一个候选解,但 S也可能是完全不着边际的。

  • 验证(确定)阶段:
    确定算法把 l 和 S 都作为它的输入,如果 S 的确是 l 的一个解的话,就输出“是”;
    如果 S 不是 l 的一个解,该算法要么返回“否”,要么就根本停不下来。

如果一个不确定算法在验证阶段的时间效率是多项式级的,我们说它是不确定多项式类型的算法。 **NP 类问题**(Non-deterministic Polynomial)是一类可以用不确定多项式算法求解的判定问题。我们把这种问题类型称为不确定多项式类。 我们说一个判定问题 D 1 可以多项式地化简为一个判定问题 D 2 ,条件是存在一个函数 t 能够把 D 1 的实例转化为D 2 的实例,使得:
  • t 把 D 1 的所有真实例映射为 D 2 的真实例,把 D 1 的所有假实例映射为 D 2 的假实例。
  • t 可以用一个多项式算法计算。

我们说一个判定问题 D 是 NP 完全问题,条件是:

  • 它属于 NP 类型。
  • NP 中的任何问题都能够在多项式时间内化简为 D。

NP 完全问题:

合取范式的可满足性问题
哈密顿回路问题
旅行商问题

NP 完全问题的定义意味着,如果我们得到了一个 NP 完全问题的多项式确定算法,就说明所有的 NP 问题都能够用一个确定算法在多项式的时间内解出,因此,P = NP.换句话说,得到了一个 NP 完全问题的多项式确定性算法可以表明,对于所有类型的判定问题来说,检验待定解和在多项式时间内求解在复杂性上没有本质的差别。
这种推论使得大多数计算机科学家相信 P ≠ NP但是,到目前为止,还没有人能从数学上证明这一猜想。

阅读更多
版权声明:本文为DmrfCoder原创作品,如有转载请注明出处 https://blog.csdn.net/qq_36982160/article/details/80314483
文章标签: NP P
个人分类: 算法
所属专栏: 算法与数据结构
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭