zoukankan      html  css  js  c++  java
  • NP完全问题

    研究生生活开始了,第一次阅读英文文献,通过查找其他博客记录一下盲区的笔记。

    ———————————————————————————————————————————————

    1各种定义

    P类问题:
    可以在多项式O(n^k)的时间复杂度内求解 的判定问题
    NP类问题:
    一个问题的解可以在多项式时间内被验证。可以在多项式时间内被猜出。
    NP-hard问题:
    任何NP问题都可以在多项式时间内归约为NP-hard问题,但NP-hard问题本身不一定是NP问题。归约:为了解决A,先将问题A归约为另一个问题B(更复杂),
    故解决B问题的同时也间接解决了问题A。
    NPC问题:

    首先是一个NP问题,其次是所有NP问题都可以归约到它(更复杂)。

    判定问题:输出结果为Yes Or No的问题。
    多项式时间:O(1)、O(logN)、O(N^2) 等这类可用多项式表示的时间复杂度;而O(2^N)、O(N!)这类非多项式级别的问题,其复杂度往往已经到了计算机都接受不了的程度。

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

    NP完全问题:NP中的一类特殊问题,这类问题中的每个问题的复杂度与整个类的复杂度有关联。

     

    2P=NP?

    既然所有的NP问题都能归约成NPC问题,那么只要任意一个NPC问题找到了一个多项式的算法,那么所有的NP问题都能用这个算法解决了,那么NP也就等于P了。因此,目前NPC问题还没有多项式的有效算法,只能用指数级甚至阶乘级复杂度的算法来解决,那么意思就是如果能够找到一个能用多项式时间复杂度解决的NPC问题就证明了P=NP了。

    3如何判断一个问题是NP-C?

    元素较少时算法运行速度非常快,随着元素数目增加,速度会变得很慢。
    涉及“所有组合”的问题通常是NP-C问题。
    不能采用分治法的思想将大问题分解成小问题,必须考虑各种可能情况,这很可能是NP-C
    如果问题涉及“序列”或“集合”,并难以解决,很可能就是NP-C
    如果问题可能转化为商旅问题和集合覆盖问题,那肯定就是NP-C

    参考自:https://blog.csdn.net/leowinbow/article/details/88187386

    参考自:https://blog.csdn.net/databatman/article/details/49304295

    参考自:https://www.jianshu.com/p/dcb0b52f4935

    参考自:https://blog.csdn.net/csshuke/article/details/74909562?spm=1001.2014.3001.5506

  • 相关阅读:
    【STM32F429】第6章 ThreadX操作系统移植(IAR)
    【STM32F429】第5章 ThreadX操作系统移植(MDK AC6)
    【硬核】超强八位半开源万用表
    【STM32H7】第4章 ThreadX操作系统移植(MDK AC5)
    【STM32F429】第4章 ThreadX操作系统移植(MDK AC5)
    【STM32H7】第3章 ThreadX操作系统介绍
    【STM32F429】第3章 ThreadX操作系统介绍
    ST发布M33内核新品STM32U5,首款40nm工艺超低功耗系列,160MHz全速运行19uA/MHz
    CAN总线35周年特别篇 -- CAN总线的前世今生
    【STM32H7】第2章 初学ThreadX准备工作
  • 原文地址:https://www.cnblogs.com/liuChang888/p/14643224.html
Copyright © 2011-2022 走看看