zoukankan      html  css  js  c++  java
  • P、NP、NP-Complete、NP-Hard问题

    P、NP、NP-Complete、NP-Hard这些概念都是用来描述一个问题的难度的。即一个问题能否在以上时间内求解,或者验证一个解是否符合一个问题。 在下面的讨论中,我们假设问题的输入规模是n,那么问题的解决时间,或者验证时间都应该是n的一个函数,记为f(n).

        1、规约(Reduction):将一个问题,等价转换成另一个问题的子问题的方式。

        2、P问题:P即Polynomial time,多项式时间。f(n)=a0+a1*n1+a2*n2+a3*n3+…. 。意思是说给定一个问题,能在多项式时间内  找到  符合该问题的解。此时,问题的时间复杂度是O(nj)。

        3、NP问题(Non-deterministic problem):即非确定性多项式时间问题。 NP  就是指能在多项式时间内  验证  一个解是否满足的一类问题。

         什么是非确定性问题呢?有些计算问题是确定性的,比如加减乘除之类,你只要按照公式推导,按部就班一步步来,就可以得到结果。但是,有些问题是无法按部就班直接地计算出。比如,找大质数的问题。有没有一个公式,你一套公式,就可以一步步推算出来,下一个质数应该是多少呢?这样的公式是没有的。再比如,大的合数分解质因数的问题,有没有一个公式,把合数代进去,就直接可以算出,它的因子各自是多少?也没有这样的公式。

        这种问题的答案,是无法直接计算得到的,只能通过间接的“猜算”来得到结果。这也就是非确定性问题。而这些问题的通常有个算法,它不能直接告诉你答案是什么,但可以告诉你,某个可能的结果是正确的答案还是错误的。这个可以告诉你“猜算”的答案正确与否的算法,假如可以在多项式时间(多项式时间: 运行时间最多是输入量的多项式函数)内算出来,就叫做多项式非确定性问题。而如果这个问题的所有可能答案,都是可以在多项式时间内进行正确与否的验算的话,就叫完全多项式非确定问题。

    4、NP-Complete问题:NP中有  最难  的一类问题。这类问题就是  NP-Complete  问题。

    最难,就意味着所有NP类的问题都能归约到这个问题上。该问题本身也是NP问题。

    所以,NP-Complete问题的形式化定义是: L是NP-Complete问题,当其满足如下两个条件:

    (1) L ∈ NP

    (2)任意L1 ∈ NP, L1 可以归约到 L

    5、NP-Hard问题:实际上是“at least as hard as an NP-complete problem”,即这个问题至少和NP完全问题一样难,所以不用满足上面的条件1.

     

    总结:他们四者的关系,可以用下图描述:

    总结来说:

    P类:已有多项式时间算法的判定问题.

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

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

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

    from 

    http://blog.sina.com.cn/s/blog_768df4d70102wdfz.html

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

  • 相关阅读:
    November 07th, 2017 Week 45th Tuesday
    November 06th, 2017 Week 45th Monday
    November 05th, 2017 Week 45th Sunday
    November 04th, 2017 Week 44th Saturday
    November 03rd, 2017 Week 44th Friday
    Asp.net core 学习笔记 ( Area and Feature folder structure 文件结构 )
    图片方向 image orientation Exif
    Asp.net core 学习笔记 ( Router 路由 )
    Asp.net core 学习笔记 ( Configuration 配置 )
    qrcode render 二维码扫描读取
  • 原文地址:https://www.cnblogs.com/cpsmile/p/8393990.html
Copyright © 2011-2022 走看看