算法设计与分析复习(三):求解困难问题-NP完全问题

来源:互联网 发布:入住淘宝需要什么条件 编辑:程序博客网 时间:2024/06/05 10:25

参考书籍:算法设计与分析——C++语言描述(第二版)

求解困难问题-NP完全问题

NP完全问题

一般,将能在多项式时间内求解的问题看做易处理问题(tractable problem),而将至今尚未找到的多项式时间算法求解的问题视为难处理问题(intractable problem)。对于难处理问题,虽然至今尚未有人给出它们的多项式时间算法,但也同样未能证明对于此类问题不存在多项式时间算法。经过研究,发现这类难解问题在计算上是相关的,被称为NP难度或NP完全问题。关于这类问题的有意义的结论是:一个NP完全问题可以在多项式时间内求解,当且仅当所有其他的NP完全问题都可以在多项式时间内求解。如果任意一个NP难度问题存在一个多项式时间算法,那么所有NP完全问题都可以在多项式时间内求解。

还有一类问题被称为不可判定(undecidable)的,无论消耗多少计算机时间和空间也不能求解。所谓“停机”问题就是不可解的。

P类和NP类问题

定义(P类和NP类):P是所有可以在多项式时间内用确定算法求解的判定问题的集合。NP是所有可在多项式时间内用不确定算法求解的判定问题的集合。

因为确定算法只是不确定算法当Choice函数只有一种选择时的特例,所以有PNP。但计算机科学界至今无法断定是否P=NP或者PNP

定义(多项式约化):令Q1Q2是两个问题,如果存在一个确定算法A求解Q1,而算法A以多项式时间调用另一个求解Q2的确定算法B。若不计B的工作量,算法A是多项式时间的,则称Q1约化(reduce to)Q2,记做Q1Q2

这就是说,求解Q1的确定算法是通过调用求解Q2的确定算法完成的,Q1算法自身及对Q2算法实施的调用过程所需的时间都是多项式时间的,那么只要对问题Q2存在多项式时间求解算法,问题Q1就能在多项式时间内得以求解。

对于约化存在以下性质:

  • 性质1:若Q1PQ2Q1,则有Q2P
  • 性质2:若Q1Q2Q2Q3,则有Q1Q3

NP难度和NP完全问题

NP难度:对于问题Q以及任意问题Q1NP,都有Q1Q,则称Q是NP难度(NP hard)的。

NP完全:对于问题QNP,Q是NP难度的,则称Q是NP完全(NP complete)的。

上面定义表明一个问题是NP难度的,但不一定是NP完全的。一个NP难度问题,如果不是NP类问题,则不是NP完全的。所有NP完全问题都是NP难度的,反之不然

根据性质1和NP难度问题的定义可以知道,只要对任何一个NP难度问题Q,找到它的多项式时间算法,那么,可以断定所有NP类问题都能在多项式时间内求解,因为所有的NP类问题都能约化到问题Q。

一般证明某个问题Q是NP难度的,证明策略由以下两步组成:

  1. 选择一个已经证明是NP难度问题Q1
  2. 求证Q1Q

如果进一步表明Q本身是NP类的,则问题Q是NP完全的。

Cook定理

可满足性问题(satisfiability problem)是一个判定问题,它确定对于一个给定的命题公式,是否存在布尔变量的一种赋值(也称真假指派)使该公式为真。CNF可满足性是指判定一个CNF公式的可满足性。(CNF:conjunctive normal form,合取范式)

定理:(**Cook定理)可满足性问题在P中,当且仅当P=NP

定理:CNF可满足性问题是NP完全的。

一些典型的NP完全问题

证明一个问题Q是NP难度(或NP完全)问题的具体步骤:

  1. 选择一种已知的具有NP难度的问题Q1
  2. 证明能够从Q1的一个实例I1,在多项式时间内构造Q的一个实例I;
  3. 证明能够在多项式时间内从I的解确定I1的解;
  4. 从2和3可知,Q1Q
  5. 由1和4及约化的传递性得出所有的NP类问题均可约化到Q,所以Q是NP难度的;
  6. 如果Q是NP类问题,则Q是NP完全的。

    • 最大集团问题
    • 定理:CNF可满足性最大集团判定问题。
    • 顶点覆盖
    • 最大集团判定问题顶点覆盖判定问题。
    • 3元CNF可满足性
    • CNF可满足性3元CNF可满足性。
    • 图的着色数
    • 3元CNF可满足性着色数判定问题。
    • 有向哈密顿环
    • CNF可满足性问题有向哈密顿环问题
    • 恰切覆盖
    • 3-可着色问题恰切覆盖问题
    • 分划问题
    • 子集和数问题分划问题

小结

Cook定理证明了(CNF)可满足性问题是NP完全的,所有NP类问题都可以约化到可满足性问题。

CNF可满足性最大集团判定问题顶点覆盖判定问题,CNF可满足性3元CNF可满足性着色数判定问题恰切覆盖问题子集和数问题分划问题,CNF可满足性问题有向哈密顿环问题。还可以证明子集和数问题0/1背包问题,有向哈密顿环问题旅行商问题,分划问题非抢先调度最小完成时间,顶点覆盖判定问题集合覆盖问题等。

如果一个问题一经证明是NP难度的,可不必致力于寻找多项式时间算法,而采取其他多种算法设计策略,例如:启发式算法、局部寻优、随机算法和近似算法、演化算法和神经网络等。

原创粉丝点击