首页 > 其他分享 >NP完全问题

NP完全问题

时间:2023-12-28 14:55:17浏览次数:27  
标签:多项式 完全 问题 Polynomial 算法 确定性 NP

NP完全问题

  NP完全问题是不确定性图灵机在P时间内能解决的问题,是世界七大数学难题之一。

  NP完全问题排在百万美元大奖的首位,足见他的显赫地位和无穷魅力。

  数学上著名的NP问题,完整的叫法是NP完全问题,也即“NP COMPLETE”问题,简单的写法,是 NP=P?的问题。问题就在这个问号上,到底是NP等於P,还是NP不等於P。证明其中之一,便可以拿百万美元大奖。

  这个奖还没有人拿到,也就是说,NP问题到底是Polynomial(意思是多项式的),还是Non-Polynomial,尚无定论。

  NP里面的N,不是Non-Polynomial的N,是Non-Deterministic(意思是非确定性的),P代表Polynomial倒是对的。NP就是Non-deterministic Polynomial的问题,也即是多项式复杂程度的非确定性问题。

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

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

  完全多项式非确定性问题可以用穷举法得到答案,一个个检验下去,最终便能得到结果。但是这样算法的复杂程度,是指数关系,因此计算的时间随问题的复杂程度成指数的增长,很快便变得不可计算了。

  人们发现,所有的完全多项式非确定性问题,都可以转换为一类叫做满足性问题的逻辑运算问题。既然这类问题的所有可能答案,都可以在多项式时间内计算,人们於是就猜想,是否这类问题,存在一个确定性算法,可以在指数时间内,直接算出或是搜寻出正确的答案呢?这就是著名的NP=P?的猜想。

  解决这个猜想,无非两种可能,一种是找到一个这样的算法,只要针对某个特定NP完全问题找到一个算法,所有这类问题都可以迎刃而解了,因为他们可以转化为同一个问题。另外的一种可能,就是这样的算法是不存在的。那么就要从数学理论上证明它为什么不存在。

  前段时间轰动世界的一个数学成果,是几个印度人提出了一个新算法,可以在多项式时间内,证明某个数是或者不是质数,而在这之前,人们认为质数的证明,是个非多项式问题。可见,有些看来好象是非多项式的问题,其实是多项式问题,只是人们一时还不知道它的多项式解而已。

  如果判定问题π∈NP,并且对所有其他判定问题 π∈NP,都有π'多项式变换到π(记为π'∞π),则称判定问题π 是NP完全的。

  对P类,NP类及NP完全问题的研究推动 了计算复杂性理论的发展,产生了许多新概念,提出了许多新方法。但是还有许多难题至今没有解决,P=NP?就是其中之一。许多学者猜想P≠NP,但无法证明。

 

标签:多项式,完全,问题,Polynomial,算法,确定性,NP
From: https://www.cnblogs.com/wangprince2017/p/17932721.html

相关文章

  • 【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分
    变分推断:从求分布的推断问题,变成缩小距离的优化问题频率学派与贝叶斯学派隐空间和隐变量变分推断完整推导 频率学派与贝叶斯学派学过概率论,应该了解过,概率分为2个学派:频率学派:数据是客观的(看到啥就是啥,隐变量z->观察变量/输入变量x),直接求统计指标即可(似然函数),代表之作像CNN、......
  • 公司使用数据加密软件时要注意哪些问题?
    当公司使用数据加密软件时,具体的关注点和优势包括:数据保护:加密确保敏感数据在传输和存储过程中不容易被未经授权的访问者获取,增强了数据的保密性。防范数据泄露:通过有效的密钥管理和访问控制,公司可以最小化数据泄露的风险,确保只有授权人员能够访问特定的加密数据。遵......
  • MySQL 5.6 到 MYSQL 5.7 应用迁移有什么问题,升级后打脸又降回去
    最近说来惭愧,有开始说mysql5.6的问题了,是在是无奈有一个项目古老且XX,大批的在用MySQL5.6这个版本的数据库,之前并未进行管理,但基于Enterprise的数据库都管理的还可以,所以这个项目也就到了手里,然后我们提出从5,6升级数据库版本的问题,并提出升级后的各种利好,但在升级过程中,我们遇......
  • 遇到跨端开发或多项目开发时,遇到的一些问题探讨,后端开发语言如何选择?
    ​ 最近有同学问我,做后端开发项目时用php,java,c#,go,pathon...哪个好,从最近阿里云、美团服务器崩溃来看,我想给你最直接的回答是,没有完美的,只有适合自己的。咱们讨论最多的问题就是跨多端开发,以及多项目开发后期所带来的升级、维护等相关问题,接下来就该问题,我发表一点自己的看法,也算是......
  • SpringBoot+JaywayJsonPath实现Json数据的DSL(按照指定节点表达式解析json获取指定数
    场景若依前后端分离版手把手教你本地搭建环境并运行项目:若依前后端分离版手把手教你本地搭建环境并运行项目_前后端分离项目本地运行在上面搭建SpringBoot项目的基础上,并且在项目中引入fastjson、hutool等所需依赖后。JaywayJsonPath:GitHub-json-path/JsonPath:JavaJsonPathi......
  • vs code 运行python 项目问题
    1. 安装python、vscode;2. anaconda配置运行项目的虚拟环境;3. vscode打开运行项目文件夹;4 vscode安装python插件;   打开VScode编辑器,按下快捷键“Ctrl+Shift+P”,或者左下角图标 ,选择“CommandPalette”         调出全局设置搜索窗......
  • 深入探究多线程中的虚假唤醒现象--从生产者消费者问题到高级解决方案的全方位解读
    文章目录生产者和消费者问题虚假呼唤问题解决方案线程之间的虚假唤醒问题常出现在多线程编程中。我看国内很多教程都解释的稀里糊涂的,所以打算写一篇博客好好絮叨絮叨。首先看一下线程虚假唤醒的定义:多线程环境下,有多个线程执行了wait()方法,需要其他线程执行notify()或者notifyAl......
  • 今天遇到一个去重失败的问题,记录一下
    首先是一个按钮,用来打开问题的弹窗,弹窗页面大致如下 使用方法如下,dataList为左边的数据,list为右边选择的数据,当我打开后无论如何选择,他都可以进行去除  当我关闭再打开后,进行重新选择,这个数据去重就会出现失败,并且只会叠加一次,如此重复,总会新增重复的数据一次 ......
  • 神经网络优化篇:详解归一化输入(Normalizing inputs)
    归一化输入训练神经网络,其中一个加速训练的方法就是归一化输入。假设一个训练集有两个特征,输入特征为2维,归一化需要两个步骤:零均值归一化方差;希望无论是训练集和测试集都是通过相同的\(μ\)和\(σ^2\)定义的数据转换,这两个是由训练集得出来的。第一步是零均值化,\(\mu......
  • openssh升级对应问题解决方案
    问题1:./openssl:errorwhileloadingsharedlibraries:libssl.so.1.1:cannotopensharedobjectfile:Nosuchfileordirectory解决方案:cp/usr/local/openssl1.1.1/lib/libssl.so.1.1/lib64/cp/home/tydl/openssl-1.1.1u/libcrypto.so.1.1/lib64/ 问题2:/etc/ssh/s......