精华内容
下载资源
问答
  • NP完全问题

    2011-10-20 11:36:11
    NP完全问题 NP完全问题 NP完全问题 NP完全问题
  • 一、3-SAT 是 NP 完全问题、 二、团问题是 NP 完全问题、 三、团问题是 NP 完全问题 证明思路





    一、3-SAT 是 NP 完全问题



    布尔可满足性问题 ( Boolean Satisfiability Problem , SAT ) , 是 N P \rm NP NP 完全的 ;

    3-SAT 问题 也是 N P \rm NP NP 完全问题 ;


    3-SAT 问题 的逻辑公式 , 是由一些合取范式 , 这些合取范式中 , 每个子项中 , 所包含的 原子逻辑命题 或其否定命题 的 个数一定为 3 \rm 3 3 ;

    合取范式概念参考 【数理逻辑】范式 ( 合取范式 | 析取范式 | 大项 | 小项 | 极大项 | 极小项 | 主合取范式 | 主析取范式 | 等值演算方法求主析/合取范式 | 真值表法求主析/合取范式 ) ;

    如下逻辑公式就是 3-SAT 问题逻辑公式 : 举例说明 :

    ( a 1 ∨ a 2 ∨ z 1 ) ∧ ( z 1 ‾ ∨ a 3 ∨ z 2 ) ∧ ( z 2 ‾ ∨ a 4 ∨ z 3 ) ∧ ⋯ ∧ ( z l − 3 ‾ ∨ a l − 1 ∨ a l ) \rm ( a_1 \lor a_2 \lor z_1 ) \land ( \overline{z_1} \lor a_3 \lor z_2 ) \land ( \overline{z_2} \lor a_4 \lor z_3 ) \land \cdots \land ( \overline{z_{l-3}} \lor a_{l-1} \lor a_l ) (a1a2z1)(z1a3z2)(z2a4z3)(zl3al1al)


    SAT 与 3-SAT 问题是相互等价的 , 如果一般的命题逻辑公式 ( a 1 ∨ a 2 ∨ ⋯ ∨ a l ) \rm ( a_1 \lor a_2 \lor \cdots \lor a_l ) (a1a2al) 是可以满足的 , 当且仅当 ( a 1 ∨ a 2 ∨ z 1 ) ∧ ( z 1 ‾ ∨ a 3 ∨ z 2 ) ∧ ( z 2 ‾ ∨ a 4 ∨ z 3 ) ∧ ⋯ ∧ ( z l − 3 ‾ ∨ a l − 1 ∨ a l ) \rm ( a_1 \lor a_2 \lor z_1 ) \land ( \overline{z_1} \lor a_3 \lor z_2 ) \land ( \overline{z_2} \lor a_4 \lor z_3 ) \land \cdots \land ( \overline{z_{l-3}} \lor a_{l-1} \lor a_l ) (a1a2z1)(z1a3z2)(z2a4z3)(zl3al1al) 逻辑公式也是可以满足的 ;





    二、团问题是 NP 完全问题



    团问题是 NP 完全问题

    是一个无向图 点集子集 , 使得 该点集子集 中 任何两个节点之间都有边相连 ;

    团问题 就是 判定无向图中 , 是否包含有 k \rm k k 个节点的 团 ;

    在这里插入图片描述

    上述团问题 , 是 N P \rm NP NP 问题 ;

    给定一个无向图 , 其中有一个 n \rm n n 个节点组成的集合 , 验证该 n \rm n n 集合是否是团 ;

    验证的方法就是看这 n \rm n n 元集中的节点之间两两之间是否有边相连即可 ;

    验证所花的时间是多项式时间 , 该计算问题在 N P \rm NP NP 中 ;





    三、团问题是 NP 完全问题 证明思路



    证明一个命题是 N P \rm NP NP 完全问题 :

    ① 证明是 N P \rm NP NP 问题 : 首先证明该问题是 N P \rm NP NP 问题 ;

    ② 证明是最难的 N P \rm NP NP 问题 : 然后证明所有的 N P \rm NP NP 问题 , 可以在多项式时间内规约到 该命题中 ; 也可以使用一个已经证明的 N P \rm NP NP 完全问题 , 在多项式时间内规约到 需要被证明的命题 ;


    证明 团问题 是 N P \rm NP NP 完全的 , 从已知的 N P \rm NP NP 完全问题出发 , 已知的 N P \rm NP NP 完全问题就是 3-SAT 问题 ,

    如果 3-SAT 问题是 N P \rm NP NP 完全的话 ,

    只要证明 3-SAT 问题 可以在 多项式时间内规约 团问题 中 , 3-SAT ≤ \leq 团问题 ,

    就可以证明 团问题 是 N P \rm NP NP 完全问题 ;


    3-SAT 问题 可以在 多项式时间内规约 团问题 中 ,

    给定一个 3-SAT 问题 的 布尔逻辑公式 ,

    ϕ = ( x 1 ∨ x 1 ∨ x 2 ) ∧ ( x 1 ‾ ∨ x 2 ‾ ∨ x 2 ‾ ) ∧ ( x 1 ‾ ∨ x 2 ∨ x 2 ) \rm \phi = ( x_1 \lor x_1 \lor x_2 ) \land ( \overline{x_1} \lor \overline{x_2} \lor \overline{x_2} ) \land ( \overline{x_1} \lor x_2 \lor x_2 ) ϕ=(x1x1x2)(x1x2x2)(x1x2x2)

    构造一个 无向图 ,

    使得 布尔逻辑公式 是可满足的 , 当且仅当 , 无向图中有一个 k \rm k k 团 ;

    k \rm k k 团就是无向图中 k \rm k k 个节点子集 , 每两个节点之间都有边相连 ;


    证明过程 :给定的 3-SAT 布尔逻辑公式 ϕ = ( x 1 ∨ x 1 ∨ x 2 ) ∧ ( x 1 ‾ ∨ x 2 ‾ ∨ x 2 ‾ ) ∧ ( x 1 ‾ ∨ x 2 ∨ x 2 ) \rm \phi = ( x_1 \lor x_1 \lor x_2 ) \land ( \overline{x_1} \lor \overline{x_2} \lor \overline{x_2} ) \land ( \overline{x_1} \lor x_2 \lor x_2 ) ϕ=(x1x1x2)(x1x2x2)(x1x2x2) 中 , 构造出一个无向图 出来 , 使得该无向图可以满足 " 布尔逻辑公式 是可满足的 , 当且仅当 , 无向图中有一个 k \rm k k "

    展开全文
  • P问题、NP问题、NP完全问题和NP难问题

    万次阅读 多人点赞 2019-06-12 14:06:30
    在讲P类问题之前先介绍两个个概念:多项式,时间复杂度。(知道这两概念的可以自动跳过这部分) 1、多项式:axn-bxn-1+c 恩....就是长这个样子的,叫x最高次为n的多项式.... 咳咳,别嫌我啰嗦。。有些人说不定还真...

     

     

    转载出处。 https://blog.csdn.net/qq_21768483/article/details/80430590

    在讲P类问题之前先介绍两个个概念:多项式,时间复杂度。(知道这两概念的可以自动跳过这部分)

    1、多项式:axn-bxn-1+c

    恩....就是长这个样子的,叫x最高次为n的多项式....

    咳咳,别嫌我啰嗦。。有些人说不定还真忘了啥是多项式了。。例如第一次看到的鄙人→_→

    2、时间复杂度

    我们知道在计算机算法求解问题当中,经常用时间复杂度和空间复杂度来表示一个算法的运行效率。空间复杂度表示一个算法在计算过程当中要占用的内存空间大小,这里暂不讨论。时间复杂度则表示这个算法运行得到想要的解所需的计算工作量,他探讨的是当输入值接近无穷时,算法所需工作量的变化快慢程度。

    举个例子:冒泡排序。

    在计算机当中,排序问题是最基础的,将输入按照大小或其他规则排好序,有利于后期运用数据进行其他运算。冒泡排序就是其中的一种排序算法。假设手上现在有n个无序的数,利用冒泡排序对其进行排序,

    ①首先比较第1个数和第2个数,如果后者>前者,就对调他们的位置,否则不变

    ②接着比较第2个数和第3个数,如果后者>前者,就对调他们的位置,否则不变

    ③一直向下比较直到第n-1和第n个数比较完,第一轮结束。(这时候最大的数移动到了第n个数的位置)

     

    ④重复前三步,但是只比较到第n-1个数(将第二大的数移动到第n-1个数位置)

    ⑤持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

    举个实例:5,4,3,2,1,对其进行排序,先是比较5跟4变成4,5,3,2,1,第一轮结束后变成43215,可以计算,当对其排序完正好要经过4+3+2+1=10次比较,当然这是最复杂的情况,即完全反序。可以知道对于n个数,至多要经过1+2+...+n-1即(n^2-n)/2次比较才能排好序。这个式子里n的最高次阶是2,可知道当n→∞时,一次性对其比较次数影响很小,所以我们把这个算法的时间复杂度比作:o(n^2)。取其最高次,可以看出,这是一个时间复杂度为多项式的表示方式。

    时间复杂度排序o(1)<o(n)<o(lgn)<o(n^2)<o(n^a)<o(e^n)(a>2,n表示输入的数据个数,o(1)为常数级别)

     

    好了,介绍完上面的概念就可以开始讲关于什么叫P类问题了。以上个例子冒泡排序为例,我们知道了,在排序这个大问题里,是可以找到一种时间复杂度为多项式o(n^2)的算法(如冒泡排序法)来求解排序问题的,所以我们说排序问题是一个有多项式时间算法的问题。

    所以我们称,

    P类问题:存在多项式时间算法的问题。(P:polynominal,多项式)

     

    然后扯个题外话,为什么我们要研究这个?因为计算机处理的输入常常不是那么几十个几千个那么一点点,想象一下,当计算机处理的数据达到100万个的时候,时间复杂度为o(n^2)和o(e^n)的算法,所需的运行次数简直是天壤之别,o(e^n)指数级的可能运行好几天都没法完成任务,所以我们才要研究一个问题是否存在多项式时间算法。而我们也只在乎一个问题是否存在多项式算法,因为一个时间复杂度比多项式算法还要复杂的算法研究起来是没有任何实际意义的。

     

    好了,接下来我们介绍NP,先给定义,

    NP类问题:能在多项式时间内验证得出一个正确解的问题。(NP:Nondeterministic polynominal,非确定性多项式)

    P类问题是NP问题的子集,因为存在多项式时间解法的问题,总能在多项式时间内验证他。

     

    注意定义,这里是验证。NP类问题,我用个人的俗话理解就是,不知道这个问题是不是存在多项式时间内的算法,所以叫non-deterministic非确定性,但是我们可以在多项式时间内验证并得出这个问题的一个正确解。举个例子,

    著名的NP类问题:旅行家推销问题(TSP)。即有一个推销员,要到n个城市推销商品,他要找出一个包含所有n个城市的环路,这个环路路径小于a。我们知道这个问题如果单纯的用枚举法来列举的话会有(n-1)! 种,已经不是多项式时间的算法了,(注:阶乘算法比多项式的复杂)。那怎么办呢?我们可以用猜的,假设我人品好,猜几次就猜中了一条小于长度a的路径,我画画画画,好的,我得到了一条路径小于a的环路,问题解决了,皆大欢喜。可是,我不可能每次都猜的那么准,也许我要猜完所有种呢?所以我们说,这是一个NP类问题。也就是,我们能在多项式的时间内验证并得出问题的正确解,可是我们却不知道该问题是否存在一个多项式时间的算法,每次都能解决他(注意,这里是不知道,不是不存在)。

    所以这就引出了这类讨论的一个千年问题:是否 NP类问题=P类问题?

    即,是否所有能在多项式时间内验证得出正确解的问题,都是具有多项式时间算法的问题呢?

    太让人震惊了,要是解决了这个问题,那岂不是所有的NP问题都可以通过计算机来解决?

     

    圣战的结果是,有的存在,有的不存在。=_=

    在这场圣战中,人们还发现了很多的东东,也就是我们接下来要介绍的NPC问题(啊喂,我不是游戏NPC)和NPH问题。

    (PS :网络上经常有人说,这不是个NP问题吗,其实很多时候他们说的应该是NPC问题,而不是NP问题)

    为了证明这个千古难题,科学家想出了很多办法。其中之一就是问题的约化。所谓问题约化就是,可以用问题B的算法来解决A ,我们就说问题A可以约化成问题B。举个例子,一元一次方程的求解,跟二元一次方程的求解,我们知道,只要能求解二元一次方程,那就可以用二元一次方程的解法来求解一元一次方程,只需要将一元一次方程加上y,并附加一个方程y=0就可以将一元一次方程变形为一个二元一次方程,然后用二元一次方程的解法来求解这个方程。注意,这里二元一次方程的解法会比一元一次的复杂。所以我们说,只需要找到解二元一次方程的规则性解法,那就能用这个规则性解法来求解一元一次方程。从这里也可以看出,约化是具有传递性的,如A约化到B,B约化到C,A就可以约化到C,同时不断约化下去,我们会发现一个很惊人的特性,就是他一定会存在一个最大的问题,而我们只需要解决了这个问题,那其下的所有问题也就解决啦!这就是我们所说的NPC问题的概念!!!

    引到NP问题里就是,对于同一类的所有的NP类问题,若他们都可以在多项式时间内约化成最难的一个NP类问题,(我们直观的认为,被约化成的问题应具有比前一个问题更复杂的时间复杂度)当我们针对这个时间复杂度最高的超级NP问题要是能找到他的多项式时间算法的话,那就等于变向的证明了其下的所有问题都是存在多项式算法的,即NP=P!!!!给出NPC问题定义。

    (3)NPC类问题(Nondeterminism Polynomial complete):存在这样一个NP问题,所有的NP问题都可以约化成它。换句话说,只要解决了这个问题,那么所有的NP问题都解决了。其定义要满足2个条件: 

    首先,它得是一个NP问题;

    然后,所有的NP问题都可以约化到它。

    要证明npc问题的思路就是: 

    先证明它至少是一个NP问题,再证明其中一个已知的NPC问题能约化到它。

    (4)NP难问题(NP-hard问题):

        NP-Hard问题是这样一种问题,它满足NPC问题定义的第二条但不一定要满足第一条(就是说,NP-Hard问题要比 NPC问题的范围广,NP-Hard问题没有限定属于NP),即所有的NP问题都能约化到它,但是他不一定是一个NP问题。

        NP-Hard问题同样难以找到多项式的算法,但它不列入我们的研究范围,因为它不一定是NP问题。即使NPC问题发现了多项式级的算法,NP-Hard问题有可能仍然无法得到多项式级的算法。事实上,由于NP-Hard放宽了限定条件,它将有可能比所有的NPC问题的时间复杂度更高从而更难以解决。

     

    以上四个问题他们之间的关系可以用下图来表示: 
    这里写图片描述

    展开全文
  • 算法:NP问题,NP完全问题(NPC),NPhard问题

    万次阅读 多人点赞 2016-12-14 22:51:03
    在做计算机算法关于NP完全问题这一章的作业的时候,发现有很多概念理解的不是很透彻,然后就反复看老师的讲义,在网上查阅各种资料,花了很多时间来弄懂这块的内容。发现书上的概念太正式,定义太标准,不容易很快...

        在做计算机算法关于NP完全问题这一章的作业的时候,发现有很多概念理解的不是很透彻,然后就反复看老师的讲义,在网上查阅各种资料,花了很多时间来弄懂这块的内容。发现书上的概念太正式,定义太标准,不容易很快理解,而网上的资料有些地方论述的不够全面,像我这样的新手在遇到NP家族的概念和问题的时候就很容易懵逼…因此在此将我的心得与整理的资料放在这里,一方面供我以后自己参考,避免又搞混,一方面和大家进行交流。

    一、概念介绍

    下面就对这些令人头疼的概念做个简单的介绍和对比:

    1. P类问题

        这类问题是最简单的一类问题,即所有这类问题都可以用一个确定性算法在多项式时间内求出解。此类问题的复杂度是此类问题的一个实例的规模n的多项式函数。比如排序问题,求最短路径问题等。

    2. NP(Non-deterministic Polynomial,即多项式复杂程度的非确定性问题)问题

        有些问题很难找到多项式时间的解法(也许根本就不存在),但是如果给出了该问题的一个解,我们可以在多项式时间内判断这个解是否正确,比如对于哈密尔顿回路问题,如果给出一个任意的回路,我们可以很容易的判断出该回路是否是哈密尔顿回路(看是不是所有顶点都在回路中)。


    P类问题是NP问题的子集,原因是P类问题既然能在多项式时间内求解,也必然能在多项式时间在验证它的解,满足NP类问题的定义。

    3. NP完全问题(NPC)


        如果所有NP问题都能在多项式时间内转化为A,则称A为NPC问题。

    NPC是NP的子集。

    4. NP-hard问题(NPH,NP困难问题)

        问题A不一定是一个NP问题,但所有的NPC问题都可以在多项式时间内转化为A,则称A为NPH问题。

    二、其他知识

    1. NPC问题一定是NP困难问题

        根据NP完全问题和NP困难问题的定义可以发现,NP完全问题A的定义中,除了要求对于所有别的判定问题A’ ∈NP,都有A’ ∝A,还要求A∈NP,而NP困难问题不一定是NP问题,所以可以看出NP完全问题是NP困难问题的子集,所以NP完全问题一定都是NP困难问题。

    2.NP困难问题中包含的一些问题是既不属于NP也不属于P类问题的,一个典型的例子就是第k个最重子集问题。

    3.证明一个新问题A是NPC问题的方法:

    a.证明A∈NP;

    b.选取一个已知的NPC问题B;

    c.构造一个从B到A的变换f;

    d.证明f为一个多项式变换。

    这里一个关键的问题是如何选取参照物B和构造多项式变换f。在实际的证明中参照物的选择带有一定的经验性,已知的NPC问题越多越有利。第一个被证明的NPC问题是sat问题(可满足性问题),这个开创性的工作是由COOK完成的,自从他证明了sat问题是NPC问题以来,人们已经发现并证明了数千个NPC问题,如0/1背包问题和哈密尔顿回路问题等。

    4.几个典型的NPC问题

    三维匹配问题(3 dimensional matching,3DM);三元精确覆盖问题(exact cover by 3-set,X3C);顶点覆盖问题(vertex cover,VC);

    哈密尔顿回路问题(Hamiltonian circuit,HC);划分问题(PARTS);三元可满足性问题(3SAT);团问题(CLIQUE);0/1背包(判定)问题(0/1KPS)

        暂时先写这么多,本人水平有限,可能有些讲的不清楚的地方,欢迎批评指正。

    展开全文
  • 2.NP(Nondeterministic Polynominal)问题–非确定多项式问题 能在多项式时间内验证得出一个正确解的问题。 关于P是否等于NP是一个存在了很久的问题,这里不做讨论。 通俗的理解这两个问题的话:在借助计算机的前提...
  • 本文档对NP完全问题详细解释,举了很多的例子 NP完全问题(NP-C问题),是世界七大数学难题之一。 NP的英文全称是Non-deterministic Polynomial的问题,即多项式复杂程度的非确定性问题。简单的写法是 NP=P?,问题就...
  • NP问题和NP完全问题

    千次阅读 2015-06-15 09:40:46
    NP就是Non-deterministic Polynomial的问题,也即是多项式...而如果任何一个NP问题都能通过一个多项式时间算法转换为某个NP问题,那么这个NP问题就称为NP完全问题(Non-deterministic Polynomial complete problem)。
        NP就是Non-deterministic Polynomial的问题,也即是多项式复杂程度的非确定性问题。而如果任何一个NP问题都能通过一个多项式时间算法转换为某个NP问题,那么这个NP问题就称为NP完全问题(Non-deterministic Polynomial complete problem)。NP完全问题也叫做NPC问题。
    
        这种问题的答案,是无法直接计算得到的,只能通过间接的“猜算”来得到结果。这就是非确定性问题。而这些问题的通常有个算法,它不能直接告诉你答案是什么,但可以告诉你,某个可能的结果是正确的答案还是错误的。这个可以告诉你“猜算”的答案正确与否的算法,假如可以在多项式时间内算出来,就叫做多项式非确定性问题。而如果这个问题的所有可能答案,都是可以在多项式时间内进行正确与否的验算的话,就叫完全多项式非确定问题.
    
        完全多项式非确定性问题可以用穷举法得到答案,一个个检验下去,最终便能得到结果。但是这样算法的复杂程度,是指数关系,因此计算的时间随问题的复杂程度成指数的增长,很快便变得不可计算了。
    
        解决NP完全问题一般采用模拟退火法,遗传算法,神经网络。
    
    展开全文
  • NP完全问题证明

    2012-01-05 02:38:27
    NP完全问题证明 CNF-SAT 3-SAT CLIQUE VERTEX-COVER 均分
  • NP完全问题的概述,包括P类、NP类、CNP类问题的介绍。
  • 算法基础:NP完全问题

    万次阅读 多人点赞 2019-03-05 16:57:37
    对于NP完全问题的定义,百度百科是这样给出的:NP完全问题(NP-C问题),是世界七大数学难题之一。 NP的英文全称是Non-deterministic Polynomial的问题,即多项式复杂程度的非确定性问题。简单的写法是 NP=P?,问题就...
  • 一、NP 完全问题 - 布尔可满足性问题 ★、 二、布尔可满足性问题是 NP 完全问题证明思路
  • P问题,NP问题,NP完全问题,NP-hard问题P问题NP问题NPC问题(NP-Complete)多项式规约深入理解NPC问题(NP-Complete)P=NP?第一个NPC问题Circuit Satisfiability(电路满足性问题)NPC问题的证明NP-hard问题常见的...
  • 简单了解一下P类问题、NP类问题和NP完全问题 P 类问题 一个问题可以在多项式时间(polynimal time)内解决,就是P类问题,时间复杂度为O(n),O(n^2)…多项式时间求解 NP类问题(nondeterministic polynomial) 一个...
  • NP完全问题,动态规划

    千次阅读 2018-11-14 22:55:56
    NP完全问题 没办法迅速找到最优解的问题,叫做np完全问题 np完全问题可以用贪婪算法求解 涉及到集合覆盖的问题一般是np完全问题 背包问题可以用动态规划来求解 ...
  • NP完全问题&贪婪算法

    千次阅读 2019-09-24 18:33:35
    文章目录什么是NP完全问题:贪婪算法:算法实现:如何识别NP完全问题: 什么是NP完全问题:   算法导论中这样描述NP完全问题:在多项式时间内可解的问题是易处理的问题,在超多项式时间内解决的问题是不易...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,802
精华内容 22,720
关键字:

np完全问题