精华内容
下载资源
问答
  • 近似算法关于np问题,很经典的一部著作,可以好好研究近似算法关于np问题,很经典的一部著作,可以好好研究近似算法关于np问题,很经典的一部著作,可以好好研究
  • 目录基础知识P(polynomial)问题NP(non-deterministic polynomial)问题NP-Complete问题NP-hard问题各问题难易程度 基础知识 多项式时间复杂度可解:如果一个问题可以在O(nk)O(n^k)O(nk)时间复杂度内得到解决,称该...

    基础知识

    1. 多项式时间复杂度可解:如果一个问题可以在 O ( n k ) O(n^k) O(nk)时间复杂度内得到解决,称该问题在多项式时间复杂度内可解,其中,n是实例的长度,k是固定常数。
    2. 规约:对于两个问题 L 1 和 L 2 L_1和L_2 L1L2,若存在多项式时间复杂度的函数 f f f,将L1中的实例对应到L2中,则称 L 2 L_2 L2可规约到 L 1 L_1 L1,记作 L 1 ⊆ P L 2 L_1⊆_PL_2 L1PL2.

    P(polynomial)问题

    对一个问题,若存在算法,可在多项式时间复杂度内求解该问题,称该问题为P问题。

    NP(non-deterministic polynomial)问题

    对于一个问题,若存在算法,能在多项式时间复杂度内验证一个解是否成立,则该问题称为NP问题。

    NP-Complete问题

    若一个 L L L问题满足一下两个条件:

    1. 该问题是NP问题;
    2. 对于任意的NP问题 L ’ L^’ L,都有 L ’ ⊆ P L L^’⊆_PL LPL,即所有NP问题复杂度都小于L问题。
      则称该问题为NP完全问题。

    NP-hard问题

    若一个问题L只满足NP完全问题条件中的第2条,称该问题为NP-hard问题。

    各问题难易程度

    P ⊆ ⊆ NP ⊆ ⊆ NP-C ⊆ ⊆ NP-H

    展开全文
  • 1 基本概念 1.1 多项式和时间复杂度 (1)多项式 axn+bxn−1+cax^n+bx^{n-1}+caxn+bxn−1+c,形如这种形式的就被称为x的最高位为n的多项式。...1.2 P和NP (1)P(deterministic polynomial time quest

    1 基本概念

    1.1 多项式和时间复杂度

    (1)多项式
    a x n + b x n − 1 + c ax^n+bx^{n-1}+c axn+bxn1+c,形如这种形式的就被称为x的最高位为n的多项式。
    (1)时间复杂度
    定义为随着问题规模的增大,算法执行时间增长的快慢。它可以用来表示一个算法运行的时间效率。举个例子,冒泡排序的时间复杂度为 O ( n 2 ) O(n^2) O(n2) ,取其最高次,可以看出,这是一个时间复杂度为多项式的表示方式

    1.2 P和NP

    (1)P(deterministic polynomial time question):
    多项式时间问题,简称P问题,意思是能在多项式时间内解决的问题。简单理解是算起来很快的问题
    (2)NP(No-deterministic polynomial time question)
    非确定多项式时间问题,简称NP问题,就是能在多项式时间验证答案正确与否的问题。简单的理解是NP问题算起来不一定快,但对于任何答案我们都可以快速的验证这个答案对不对。

    1.3 NP-hard和NP-C

    NP-hardness问题:任意NP问题都可以在多项式时间内归约为一类问题,这类问题就称为NP-hard问题,这是比所有的NP问题都难的问题。归约的意思是为了解决问题A,先将问题A归约为另一个问题B,解决问题B同时也间接解决了问题A。
    NP-Complete问题:但若所有的NP问题都能多项式归约到一类问题X,则称X为NP-hard问题,进一步如果X是NP的,称X是NP complete的。换句话说,只要解决了这个问题,那么所有的NP问题都解决了。其定义要满足2个条件:一是NP-hard的问题,二是NP问题。

    1.4 总结

    (1)理想:NP问题 = P问题
    NP=P意思是,如果对于一个问题能在多项式时间内验证其答案的正确性,那么是否能在多项式时间内解决它。
    因为如果将所有的NP问题都多项式规约到某一个NP Complete问题,且只要一个NP Complete问题能在多项式时间内得到解决的话,那么所有的NP问题都可以在多项式时间内得到解决了。这个问题的解决将会带来世界性的进步。
    (2)现实:我们仍然相信P问题!=NP问题
    至今并没有人能证明某个NP Complete问题是P的。而且目前主流的观点是P不等于NP,当然这也没有确切的证明。如左图所示。
    在这里插入图片描述

    2 举例理解NP问题

    最著名的NP问题是TSP旅行商推销问题。题目是在以下条件下,求出访问所有城市的最短路径

    • 推销商有N个目的地城市
    • 他需要访问所有城市一次,即不能重复
    • 任意两座城市都是连接的,距离已知,即对应有权完全图

    分析:
    解决这个问题如果单纯的用枚举法来列举的话会有(n-1)! 种,已经不是多项式时间的算法了。将会是N的阶乘的复杂度O(n!)。

    但是有快捷的方法,可以用猜的,假设人品爆炸猜几次就猜中了一条小于长度a的路径,TSP问题解决了,皆大欢喜。可是,我不可能每次都猜的那么准,也许我要猜完所有种方案呢?所以我们说,这是一个NP类问题。也就是这个问题能在多项式的时间内验证并得出问题的正确解,可是我们却不知道该问题是否存在一个多项式时间的算法,每次都能解决他(注意,这里是不知道,不是不存在,即能解决,但是无法找到一个多项式时间的算法的通解)

    3 其他NP问题

    • Edge Cover 边覆盖
    • Set Cover 集合覆盖
    • Steiner Tree(Forest) 斯坦纳树
    • Max cut 最大割
    • SAT 可满足性
    展开全文
  • NP-Hard问题是这样一种问题,它满足NPC问题定义的第二条但不一定要满足第一条(就是说,NP-Hard问题要比 NPC问题的范围广,NP-Hard问题没有限定属于NP),即所有的NP问题都能约化到它,但是它不一定是一个NP问题。...

    时间复杂度不是表示一个程序解决问题需要花多少时间,而当程序所处理的问题规模扩大后,程序需要的时间长度对应增长得有多快

    一、多项式时间(Polynomial time)

    多项式复杂度

    容易看出,前面的几类复杂度被分为两种级别,其中后者的复杂度无论如何都远远大于前者。

    等,我们把它叫做多项式级复杂度,因为它的规模n出现在底数的位置;

    非多项式级的复杂度

    另一种像是等,它是非多项式级的复杂度,其复杂度计算机往往不能承受

    当我们在解决一个问题时,我们选择的算法通常都需要是多项式级的复杂度,非多项式级的复杂度需要的时间太多,往往会超时,除非是数据规模非常小。

    二、P问题

    1. P problem(Polynomial-time)多项式问题(能解决)

    说的是某些问题可以用一组多项式来表示。

    P是一类可以通过确定性图灵机(以下简称 图灵机)在多项式时间(Polynomial time)内解决的问题集合。

    P类:能够在多项式时间内用算法求解的问题

    P问题:有多项式时间算法,算得很快的问题。

    比如说,给10个、20个、30个… 元素排序,复杂度是 x^2 ,这里的x^2 就是一个多项。
     

    三、NP问题

    能够在多项式时间内使用非确定性算法(non-deterministic)被解决的问题。

    简单来说就是,必须以非常规方法才能在多项式时间内解决的问题,就叫做NP问题。

    NP问题:算起来不确定快不快的问题,但是我们可以快速验证这个问题的解。

    1. NP problem(Nondeterministic polynomial-time)不确定性问题(能给出解决方案)

    什么是非确定性问题呢?

    无法直接计算得到的,只能通过间接的“猜算”来得到结果。但可以告诉你,某个可能的结果是正确的答案还是错误的。

    例:一个路径规划问题,有5个地:A,B,C,D,E,一个地去另外一个地距离不一样,花费也不一样,问遍历完这5个地最低花销的方案是怎么样。这个问题你能知道,我花多点时间一个一个枚举可以得出结果的,但是呢,我猜一个,然后那个就是最低花销的,我运气特别好,总能在一定时间内猜到最佳方案,这就是np问题。
     

    NP是一类可以通过非确定性图灵机Non-deterministic Turing Machine)在多项式时间(Polynomial time)内解决的决策问题集合。

    P是NP的子集,也就是说任何可以被图灵机在多项式时间内解决的问题都可以被非确定性的图灵机解决。

    NP类:不确定是否存在多项式时间的求解算法,但可以在多项式时间内验证一个猜测解的正确性的问题。

    已有指数时间算法的判定问题,包括P类.

    2. NP-complete problem(Non-deterministic Polynomial complete problem)NP完全问题(无法解决,可以给出近似解)

    只能通过非确定性算法,在多项式时间内解决的问题,叫做NP完全问题。

    一般来说,非常规方法既可以解决P问题,也可以解决NP问题,所以,只有用非常规方法才能解决的问题,才能叫做NP完全问题。

    这个问题是由多个np问题抽象而成,他具有多个np问题的基本性质,因此只要这个np-complete问题解决了,与他关联的np-complete问题也就能解决。要成为np-complete问题,第一步,他是np问题;第二步,其他所有np问题都能约化(抽象)成他。

    如果一个决策问题 L 是 NP-complete的,那么L具备以下两个性质:

    1) L  是 NP(给定一个解决NP-complete的方案(solution),可以很快验证是否可行,但不存在已知高效的方案 。)

    2) NP里的任何问题可以在多项式时间内转为 L

    NPC类:是NP的一个子集,且其中每一个问题均能由NP中的任何问题在多项式时间内转化成.

    如果所有NP问题可在多项式时间内归约成某个NP问题(归约,意思是解决了后者也就相应的解决了前者),则该NP问题称为NP完全问题。

    NPC包含了NP中最难的问题。

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

    3. NP-Hard problem(Non-deterministic Polynomial hard problem(NPH))NP难问题,非多项式问题(无法解决,可以给出近似解)

    如果说np-complete还是在多项式解决一个问题的范畴,np-hard问题会涉及到非多项式的问题。

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

    而NP-Hard只需要具备NP-complete的第二个性质,因此NP-complete是NP-Hard的子集。

    若问题A不属于NP类,已知某一NPC问题可在多项式时间内转化为问题A,则称A为NPH.

    NPH:如果所有NP问题可在多项式时间内转化(归约,意思是解决了后者也就相应的解决了前者)成某个问题,则该问题称为NP难问题。

    三、这四者的关系如下图(假设P!=NP):

    在这里插入图片描述

     

    在这里插入图片描述

    https://www.cnblogs.com/sancyun/p/4250360.html

    https://blog.csdn.net/wxdsdtc831/article/details/7942435

    https://blog.csdn.net/sinat_21591675/article/details/86521190

    https://blog.csdn.net/liusisi_/article/details/107160947

    https://blog.csdn.net/weixin_39278265/article/details/115060817

    展开全文
  • Approximation.Algorithms.for.NP-Hard.Problems,.Dorit.S..Hochbaum,.PWS.1997,.WPCBJ.1998.311S
  • 文章目录NP-hard vs NP-CompleteReductionSAT ProblemReducing SAT to Shortest Clique ProblemReducing SAT to Shortest Tour ProblemA List of NP-CompleteSet Vertex Cover Problem & ...

    NP-hard vs NP-Complete

    判断一个问题是不是NP-Complete有两个步骤:

    1. 判断是否NP,就是算法结果的正确性能不能在多项式时间内验证
    2. 判断是否NP-hard,要判断NP-hard,我们可以使用一个叫Reduction的技巧。直观来说,如果你能用你的问题的求解器来求解另一个已知是NP-hard问题,那么你的问题也是NP-Hard的。

    Reduction

    Reduction是将两个算法建立联系的一个过程。我们说X reduce 到Y,意味着,假设现在有一个Y的黑盒求解器,于是我们设计一个多项式算法来用Y的求解器来求解问题X。
    也就是说,当这个求解器是多项式时间的时候,意味着X也可以多项式求解。那如果我们已经知道X是很难求解,如果X可以reduce到Y,那么意味着Y跟X一样难解,因为只有困难的求解器才能解决困难的问题。
    而这正是证明问题Y是NP-hard或NP-complete的思路,只要找到一个Np-hard或者NP-complete的问题X可以reduce到Y就可以了。

    在这里插入图片描述

    那么NP-hard是什么?

    如上图,在所有NP(non-deterministic polynomial-time)问题中(结果正确性可以在多项式时间验证),有些问题是特别难的,如NP-complete问题,有些问题很简单,如P问题,可以在多项式时间解决。

    那如果我们找到一个特别的问题H,使得所有NP问题都可以reduce到问题H上,那这个问题H肯定特别难,因为我们能用这个问题H解决所有的NP问题,因此我们称这个问题H为NP-Hard问题。

    这个经过reduce的问题H不一定是NP问题,于是才有上述示意图的上部分,即有一部分NP hard问题是落在圈外的。如果问题H是属于NP的话,那么问题H就是NP-complete问题,NP完全是NP和NP-hard的交集。

    NP定义: 可以在多项式时间验证结果正确性的问题。
    NP-hard定义: 对于问题H,所有NP问题都可以reduce到H。

    这意味着,如果NP-hard可以用多项式解决,那么所有NP问题都可以用多项式解决。不过目前还没人找到多项式算法。

    SAT Problem

    在实际中,我们判断一个问题是不是NP-hard,通常不会去根据这个定义来判断,而是使用Reduction来判断,就是找到一个已经被证明是NP-complete的问题,然后尝试reduce。

    总的来说,判断一个NP问题是不是NP-Complete的两个方法

    1. 找到一个NP-Complete问题,经过证明可以reduce to 你的问题,这意味着你的方法可以解决这个NP-Complete问题,那很显然,这个解决方法也是NP-Complete的。
    2. 所有的NP问题都可以reduced到你的问题

    很显然,方法1简单多的,我们只要找到一个现成的 NP-Complete问题就可以了,然而,这个世界上,总得有第一个NP-Complete问题才能够用这个方法,这第一个NP-Complete问题的证明,注定了只能用方法2,那就是要证明所有NP问题都可以reduced到这个问题上,而万幸的是这第一个NP-Complete问题在40年前被找到了,它就是著名的SAT问题。

    SAT实际上并没有真的遍历所有的算法一个个去reduce,相反,他证明了所有的算法都是可以编码为boolean formula问题,这意味着所有算法都可以使用SAT的求解器去求解,因为他们本质上就是boolean formula问题。至于怎么证的,太难了这里就不讲了。

    现在我们介绍一下SAT问题。对于任意的boolearn foumula我们总能写成以下标准式:
    ( . . ∨ . . . ∨ . . ) ∧ ( . . ∨ . . . ∨ . . ) ∧ . . . ( ..\lor ...\lor ..) \land ( ..\lor ...\lor ..) \land ... (.......)(.......)...
    其中 ∨ \displaystyle \lor 表示或, ∧ \displaystyle \land 表示与。上述表达式是很多个 ∧ \displaystyle \land 并在一起的,所以我们称每一个 ( . . ∨ . . . ∨ . . ) \displaystyle ( ..\lor ...\lor ..) (.......)都是一个Clause. 接下来举个例子:
    ( x 1 ∨ x 2 ‾ ∨ x 3 ) ∧ ( x 1 ‾ ∨ x 2 ) ∧ ( x 2 ‾ ∨ x 3 ) \left( x_{1} \lor \overline{x_{2}} \lor x_{3}\right) \land \left(\overline{x_{1}} \lor x_{2}\right) \land \left(\overline{x_{2}} \lor x_{3}\right) (x1x2x3)(x1x2)(x2x3)

    上面的每个 x 1 ,   x 2 ,   x 3 \displaystyle x_{1} ,\ x_{2} ,\ x_{3} x1, x2, x3只能取0,1两个值,加上一个横线表示取非,那么当 x 1 ,   x 2 ,   x 3 \displaystyle x_{1} ,\ x_{2} ,\ x_{3} x1, x2, x3取什么值的时候,这个公式为真?或者根本不存在一个取值使公式为真?这就是SAT问题。最后这道题答案是x1=0,x2=0,x3=任意。一个更简单的问题是3-SAT问题,每个clause恰好都有3个元素,可以证明这个3-SAT也是NP Complete的。

    Reducing SAT to Shortest Clique Problem

    接下来介绍Reduction到底是怎么使用。首先Clique问题就是找到一个图大小为k的团,其中团是一个完全图(每个结点相互联结)。
    考虑以下 bool formular,在什么情况下才是真?

    ( x 1 ∨ x 2 ‾ ∨ x 3 ) ∧ ( x 1 ‾ ∨ x 2 ) ∧ ( x 2 ‾ ∨ x 3 ) \left( x_{1} \lor \overline{x_{2}} \lor x_{3}\right) \land \left(\overline{x_{1}} \lor x_{2}\right) \land \left(\overline{x_{2}} \lor x_{3}\right) (x1x2x3)(x1x2)(x2x3)
    这个公式只有在3组clause中,每组取1个变量,这3个变量同时为真的时候才成立。那么找到“三个变量同时为真”,不相当于一个大小为3的团吗?

    在这里插入图片描述

    为了体现这点我们构造一个图,每个clause作为一组结点,分别有3组,并与其他组之间的结点连线,注意,因为我们需要3个变量同时为真,所以,不可以同时为真的结点不可以连线,比如 x 2 ‾ , x 2 \displaystyle \overline{x_{2}} ,x_{2} x2,x2是没有连线的,那么只要我们在三组变量之间找到一个团,就可以同时设这3个变量为1,也就找到了这个bool formula的解了。

    Reducing SAT to Shortest Tour Problem

    在这里插入图片描述

    Shortest Tour 问题就是如何找到一条最短路径,访问所有的结点并回到原点。

    现在构造一个特殊的结构:

    A-B

    从A到B的最短路径有多少条?答案是只有两条,不管我们怎么加长这个结构,也是只有两条。为了将SAT跟 Shortest Tour 联系起来,直觉来看,我们似乎可以利用选择选择哪条路径来表达 真还是假。

    如果我们将这些结构复制n份然后连起来
    在这里插入图片描述
    那么一共就有 2 n 2^n 2n条可能的路径。那么每一份路径就表示一个true或false。现在x1,x2,…,xn有了,那么怎么将他们组合起来形成clause呢?

    假设有一个clause就是 . . . ∧ x 2 ∧ . . . ...\land x_2 \land ... ...x2...,很显然这个clause意味着x2一定要等于true,那么就相当于下图,额外加了一个结点,强制让x2只走那条等于true的路。
    在这里插入图片描述

    同理对于一个更复杂的clause,就是连接多条边。只要x1 x2 x3其中有一个经过下面clause的结点,那么这个clause就为真,如果一共有m个clause,我们就可以构造出m个这样类似的结点,如果能找到一条最短路径,使得他经过所有的clause结点,那么这个bool formula就一定为true.
    在这里插入图片描述

    A List of NP-Complete

    为了证明一个问题是NP complete我们有必要去了解更多的NP complete问题以方便证明,不然每次都只用SAT去证也是挺困难的事情。wiki上有一个列表,基本上很全了:List_of_NP-complete_problems

    这里拿一些经典问题来介绍一下。

    Set Vertex Cover Problem & Independent Set

    在这里插入图片描述

    最大独立集和最小结点覆盖其实是两个互补的问题。
    所谓independent set就是在集合中,每个结点都不会相互连接。上图结点 {3, 4, 5} 是一个大小为3的 independent set 而 {1, 4, 5, 6} 则是最大的 independent set。

    而Vertex Cover就是找到一个结点集合使得图上的每一条边的至少一端是在集合中。在上图结点{2, 3, 7} 就是最小的覆盖结点,大小为3。

    显然{2, 3, 7}恰好跟最大独立集 {1, 4, 5, 6}互补。这是因为在independent set中,任意2个结点<u,v>都不会有一条边相连,所以与u,v相连的结点一定在集合外面,所以independent set的补集一定是vertex cover的。

    K-coloring and Clique

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P0oVTu20-1576142062972)(https://upload.wikimedia.org/wikipedia/commons/thumb/9/90/Petersen_graph_3-coloring.svg/330px-Petersen_graph_3-coloring.svg.png)]
    染色问题就是找到一种染色方式,使得邻居的颜色都不一样。
    染色问题跟找团问题是很相近的,考虑一下两个问题:

    1. 如果一个图包含一个大小为k的clique,那么需要多少种颜色?
    2. 如果一个图最多需要k种颜色,那么最大团的大小是多少?
      他们的答案都是k。因为jk-color问题要求所有邻居的颜色不同,而团正是这种相互邻居的数量。

    Packing

    这个问题就是给你一定容量和形状的容器,怎么装上价值最高的东西,又或者是装尽可能多的东西,这问题有很多变种。

    Longest Common Subsequence

    有两个字符串:

    1. lemonade
    2. blendev
      他们最大的公共的序列是什么?注意,这个序列是不需要连续的(连续的叫substring,它不是np hard问题),可以中间跳过一些元素,而且序列的个数是任意的,如果是确定的话,比如已知只有两个,那不是np-hard,而可以用动态规划求解。
      显然这个字符串最大公共部分是: lende

    参考资料

    https://classroom.udacity.com/courses/cs313/
    wiki: NP-hardness
    Algorithm design - Jon Kleinberg, Éva Tardos

    附录

    Big O Notation

    影响一个算法的速度的因素有非常多,输入的大小,电脑的速度,内存大小,算法使用什么语言来实现等等,因此想要分析算法,我们要做几个简化的假设来忽略掉不必要的细节。

    假设有两个算法,他们的最坏运行时间分别为,A: 3 n 2 − n + 10 \displaystyle 3n^{2} -n+10 3n2n+10,B: 2 n − 50 n + 256 \displaystyle 2^{n} -50n+256 2n50n+256,其实我们并不关心里面常数项的大小,很显然当n足够大的时候,算法A要比算法B块。基于此我们可以定义一个大O符号来表达这种关系。
    大O的定义:我们称 f ( x ) = O ( g ( x ) )  as  x → ∞ \displaystyle {\displaystyle f(x)=O(g(x))\text{ as } x\rightarrow \infty } f(x)=O(g(x)) as x,当且仅当,存在一个实数M,使得
    ∣ f ( x ) ∣ ≤   M g ( x )  for all  x ≥ x 0 . {\displaystyle |f(x)|\leq \ Mg(x)\text{ for all } x\geq x_{0} .} f(x) Mg(x) for all xx0.
    话句话说,大O表示了一种上界,举几个例子。 n + 1 = O ( n 2 ) \displaystyle n+1=O\left( n^{2}\right) n+1=O(n2), n 2 + n + 1 = O ( n 2 ) \displaystyle n^{2} +n+1=O\left( n^{2}\right) n2+n+1=O(n2)。对于算法而言,我们一般使用算法的最坏时间复杂度作为f(x),然后再求出其g(x),在算法中,一般假设内存读取时不需要运算时间的,只有运算的时候(加减乘除判断大小)才会算次数。举个例子,

    result=0
    for i in range (0,n):
    	for j in range(i,n):
    		result=result+1
    

    该算法的运行时间为 3 ∗ ( n + n − 1 + . . . + 2 + 1 ) = 3 ∗ n 2 + n 2 = O ( n 2 ) \displaystyle 3*( n+n-1+...+2+1) =3*\frac{n^{2} +n}{2} =O\left( n^{2}\right) 3(n+n1+...+2+1)=32n2+n=O(n2),每次for循环以及最后的加法都是需要消耗计算资源的,所以3是这么来的。

    展开全文
  • 学习笔记——NP-Hard Problems

    千次阅读 2019-10-19 11:46:21
    NP-hard problems:most people believe cannot be solved in polynomial time, even though nobody can prove a super-polynomial lower bound. 典例:电路可满足性问题 The circuit satisfiability problem asks...
  • NP-hard:如果某个问题S是NP-hard,那么对于任意一个NP问题,我们都可以把这个NP问题在多项式时间之内转化为S,并且原问题的答案和转化后S的答案是相同的。也就是说只要我们解决了S,那么就解决了所有的NP问题。 NP...
  • 通俗解释NP,NPC,NP-Hard问题 我们把解决一类问题的方法或过程,称之为算法。而算法有一个很重要的指标就是时间复杂度O。因为我们最终是要通过计算机来执行这些算法的,而计算机的算力再高也终究是个有限值,因此如果...
  • 算法的时间复杂度 如果某个算法的复杂度可以表示为 O ( n k ) O(n^k) O(nk),即问题规模n出现在底数的... 参考文献 算法的时间复杂度和空间复杂度-总结 什么是P问题、NP问题和NPC问题 P/NP/NPC/NP-hard NP-Hard问题浅谈
  • 查了好多资料,现在网上的资料都不说人话,简单的问题故意写得让别人看懂不以显示自己的水平很高深?真正的大师难道不是把复杂问题说得很简单的人?...NP问题:一个问题的解可以在多项式的时间内被证实或证伪,即给
  • 同时,如果我们已知一个问题为NP-C或NP-hard,当遇到一个新问题时,若已知问题可多项式归约为新问题,则新问题为NP-hard,进而若克验证新问题属于NP类,则新问题为NP-C。 参考文献: 《物流配送车辆路径...
  • NP-hard类问题证明

    2021-03-15 21:35:26
    NP-hard类问题:所有的非确定性多项式时间可解的判定问题构成NP类问题。 证明1:问题A给定限制条件得到一个特例B问题 证明2:问题B是NPC问题 首先必须知道以下概念: 1. P Problem 如果一个问题可以找到一个能在...
  • NP-Hard问题

    2020-09-29 05:40:00
    N皇后问题是一个NP-Hard问题,其算法复杂度是指数复杂度的。 ①图着色问题 ②哈密顿回路问题:天文学家哈密顿(William Rowan Hamilton) 提出,在一个有多个城市的地图网络中, 寻找一条从给定的起点到给定的终点...
  • @[TOC]P NP NPC NP-hard以及多项式时间 P NP NPC NP-hard以及多项式时间 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的...
  • 运筹学-3-NP-hard问题

    2020-10-29 12:19:11
    判断一个线性规划问题好不好解,就要引入np-hard的概念。 polynomial time是衡量算法快慢的分水岭。
  • P问题、NP问题、NPC问题、NP-hard问题详解

    万次阅读 多人点赞 2018-09-19 18:44:24
    要理解P问题、NP问题、NPC问题、NP-hard问题,需要先弄懂几个概念: 什么是多项式时间? 什么是确定性算法?什么是非确定性算法? 什么是规约/约化? 多项式时间(Polynomial time) 什么是时间复杂度? 时间...
  • 左图在假设P≠NP的情况下有效,右图在假设P=NP的情况下有效 在假定P≠NP的情况下, 有 NP问题:可以在多项式时间内被验证的问题。或者说,可以在非确定性多项式时间内被解决的问题。 即可以在非...
  • NP-Hard问题及组合最优化问题

    千次阅读 2019-09-21 23:49:19
    在讲NP-Hard问题问题之前,先讲P类问题和NP类问题P类问题:可以找到一个多项式时间复杂度的算法去解决的问题;NP类问题:可以在多项式时间复杂度的算法去验证结果正确性的问题;比如随便拿一个结果,可在多项式时间...
  • P、NP、NPC和NP-Hard相关概念的图形和解释

    千次阅读 多人点赞 2019-01-12 22:34:48
    P、NP、NPC和NP-Hard相关概念的图形和解释 文章转自:https://blog.csdn.net/huang1024rui/article/details/49154507#commentBox 一、相关概念 &nbsp; &nbsp; &nbsp; P:&nbsp;能在多项式时间内...
  • NP-hard问题概念理解

    万次阅读 2019-01-20 22:16:59
    在阅读“三维装箱”问题的论文时,接触到NP-hard problem的概念。该博文记录与其相关的一些概念理解。 时间复杂度:指当问题规模扩大后,程序需要的时间的增长程度,而不是表示一个程序运行需要花的时间。 多项式级...
  • 什么是NP-Hard

    万次阅读 2018-11-19 14:52:28
    JSP是典型NP-hard问题之一 所以首先我想解释一下什么是NP-hard问题 在这之前,必须了解一个概念叫做多项式时间:在计算复杂度理论中,指的是一个问题的计算时间不大于问题大小的多项式倍数,通俗些理解我觉得就是...
  • P,NP, NPC, NP-Hard问题的关系详解

    千次阅读 2019-01-13 18:44:41
    我想试着把p, np, npc, np-hard问题给大家讲清楚了。讲不清楚,你给我留言,砸我招牌砸我店。 在介绍之前,先说一下什么是确定性问题,什么是非确定性问题。 确定性: 比如小学学的加减乘除之类的,你只要按部就班的...
  • 何为 NP-hard

    万次阅读 多人点赞 2018-05-09 11:13:54
    NP-hard 问题 NP-hard problem, NP(Non-deterministic Polynomial) 一、 预备知识1. 时间复杂度表明问题规模扩大后,程序需要的时间长度增长得有多快。 程序的时间复杂度一般可以分为两种级别: 多项式级的...
  • 证明一个问题是NP-Hard问题

    千次阅读 2019-11-19 20:18:37
    证明一个问题是NP-Hard问题 证明问题A是NP-Hard问题可以分为两步: 1)对问题A给定一个限制条件,得到问题B; 2)证明问题B是NPC问题。
  • P NP NP-C NP-Hard

    2021-07-07 19:56:53
    P NP NPC NP-HardP & NPNP-completeNP-Hard P & NP 问题 多项式时间内可解 多项式时间内可验证 ...NP ...NP-complete NP-complete问题为所有NP问题可规约的一类问题。只要解决了一个NP-complete...NP-Hard NP-Har
  • NP-hard问题证明

    千次阅读 2019-02-23 12:26:07
    NP-hard问题:比NPC更难,通常在多项式时间内无法验证一个解的正确性。几个复杂度的区别可以看NPC介绍。 常见证明 我们要证明一个问题A是NP-hard问题一般可以分为两步: 1) 对问题A给定限制条件得到一个特例B问题 2...
  • P、NP、NPC和NP-hard 问题 算法的时间复杂度 时间复杂度是指在 问题的规模扩大之后,程序求解所需要的时间增长的有多快 示例: 如果无论数据有多大,时间总是那么多,则称常数级复杂度,O(1) 若数据规模变多...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,987
精华内容 4,794
关键字:

np-hard