zoukankan      html  css  js  c++  java
  • 关于NP问题的初步理解

    最近在写一篇关于人力资源的文章,在整理资料的过程中看到了一个比较有意思的问题,就是NP问题。还以为是No Problem的缩写。上网查了查,有了一些初步的了解,但我觉得对我们非数学专业,对NP问题做一个初步的了解就够了。下面就是关于NP问题的一些小小的整理,当然这都是别人的成果,我只是稍加整理,网上有很多详细的解释。

    1
    NP的含义
    


    NP是 Non-deterministic Polynomial 的缩写,意思即是多项式的非确定性问题。NP 问题通俗来说是其解的正确性能够被很容易检查的问题,这里"很容易检查"指的是存在一个多项式检查算法(出自于http://blog.ednchina.com/yanshen/24599/message.aspx);

    1
    什么是非确定性问题呢?
    


    有些计算问题是确定性的,比如加减乘除之类,按公式肯定能求出结果,并且结果是唯一的。但是,有些问题是无法按部就班直接地计算出。比如,找大质数的问题。有没有一个公式,你一套公式,就可以一步步推算出来,下一个质数应该是多少呢?这样的公式是没有的。
    这种问题的答案,是无法直接计算得到的,只能通过间接的“猜算”来得到结果。这也就是非确定性问题。而这些问题通常有个算法,它不能直接告诉你答案是什么,但可以告诉你,某个可能的结果是正确的答案还是错误的。这个可以告诉你“猜算”的答案正确与否的算法,假如可以在多项式时间(多项式时间: 运行时间最多是输入量的多项式函数)内算出来,就叫做多项式非确定性问题。而如果这个问题的所有可能答案,都是可以在多项式时间内进行正确与否的验算的话,就叫完全多项式非确定问题NP(Non-deterministic Polynomial)—Complete。

    1
    一个例子
    


    著名的推销员旅行问题(Travel Saleman Problem or TSP):假设一个推销员需要从香港出发,经过广州,北京,上海,…,等 n 个城市, 最后返回香港。 任意两个城市之间都有飞机直达,但票价不等。现在假设公司只给报销 $C 块钱,问是否存在一个行程安排,使得他能遍历所有城市,而且总的路费小于 $C?
    推销员旅行问题显然是 NP 的。因为如果你任意给出一个行程安排,可以很容易算出旅行总开销。但是,要想知道一条总路费小于 $C 的行程是否存在,在最坏情况下,必须检查所有可能的旅行安排! 这将是个天文数字。

  • 相关阅读:
    Linux dnsmasq.conf
    Linux 关闭网络管理服务
    Python Mysql_db对数据查询进行处理
    Python windows安装MYSQL_db
    Python 递归
    Nginx 系统维护配置
    ls 查看时间排序
    Nginx Linux yum安装
    Nginx 前后端分离配置 分发
    Spring boot 执行jar文件 方式
  • 原文地址:https://www.cnblogs.com/lan0725/p/1873894.html
Copyright © 2011-2022 走看看