什么是TOC中的NP完全性?


**非确定性多项式(NP)问题**有点难以理解。就解决NP问题而言,运行时间不是多项式的。它可能是O(n!)或更大的级别。

但是,这类问题给定一个特定的解决方案,检查该解决方案的运行时间是多项式的。

例如,数独游戏。

NP难问题

如果一个用于解决NP难问题的算法可以转化为解决任何NP问题,则称该问题为NP难问题。那么我们可以说,这个问题至少与任何NP问题一样难,但它可能更难或更复杂。

NP完全问题

NP完全(NPC)问题是同时存在于NP和NP难类中的问题。也就是说,NP完全问题可以在多项式时间内验证,并且任何NP问题都可以在多项式时间内简化为该问题。

如果一个问题在NP类中并且与NP中任何问题一样难,则该问题属于NPC类。如果NP中的所有问题都可以在多项式时间内简化为它,即使它本身可能不在NP类中,则称该问题为NP难问题。

如果任何这类问题存在多项式时间算法,则NP中的所有问题都可以用多项式时间求解。这些问题称为NP完全问题。NP完全性对于理论和实践都具有重要意义。

NP完全性的定义

如果一个语言M满足以下两个条件,则它是NP完全的:

  • M属于NP。

  • NP中的每个A都可以多项式时间归约到M。

如果一个语言满足第二个性质,但不一定满足第一个性质,则该语言M被称为NP难。

非正式地,如果存在某个NP完全问题A可以图灵归约到M,则搜索问题M是NP难的。

NP完全问题

目前尚不知道存在多项式时间算法的NP完全问题的例子如下:

  • 确定一个图是否具有哈密顿循环

  • 确定布尔公式是否可满足等。

NP难问题

以下问题是NP难的

  • 电路可满足性问题

  • 集合覆盖问题

  • 顶点覆盖问题

  • 旅行商问题

更新于:2021年6月14日

13K+浏览量

启动您的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.