当前位置:网站首页>P问题、NP问题、NPC问题、NP-hard问题详解
P问题、NP问题、NPC问题、NP-hard问题详解
2022-07-06 05:58:00 【瞻邈】
1. 多项式时间(Polynomial time)
时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当程序所处理的问题规模扩大后,程序需要的时间长度对应增长得有多快。也就是说,对于某一个程序,其处理某一个特定数据的效率不能衡量该程序的好坏,而应该看当这个数据的规模变大到数百倍后,程序运行时间是否还是一样,或者也跟着慢了数百倍,或者变慢了数万倍。
不管数据有多大,程序处理所花的时间始终是那么多的,我们就说这个程序很好,具有O(1)的时间复杂度,也称常数级复杂度;数据规模变得有多大,花的时间也跟着变得有多长,比如找n个数中的最大值这个程序的时间复杂度就是O(n),为线性级复杂度,而像冒泡排序、插入排序等,数据扩大2倍,时间变慢4倍的,时间复杂度是,为平方级复杂度。还有一些穷举类的算法,所需时间长度成几何阶数上涨,这就是
的指数级复杂度,甚至
的阶乘级复杂度。
结合函数增加速度和算法的实际运行效果,多项式时间算法可视为高效算法或实用算法,指数时间算法为不实用算法。
2. 确定性算法与非确定性算法
2.1. 确定性算法
设A是求解问题B的一个解决算法,在算法的整个执行过程中,每一步都能得到一个确定的解,这样的算法就是确定性算法。
2.2. 非确定性算法
设A是求解问题B的一个解决算法,它将问题分解成两部分,分别为猜测阶段和验证阶段,其中
- 猜测阶段:在这个阶段,对问题的一个特定的输入实例x产生一个任意字符串y,在算法的每一次运行时,y的值可能不同,因此,猜测以一种非确定的形式工作。
- 验证阶段:在这个阶段,用一个确定性算法(有限时间内)验证。①检查在猜测阶段产生的y是否是合适的形式,如果不是,则算法停下来并得到no;② 如果y是合适的形式,则验证它是否是问题的解,如果是,则算法停下来并得到yes,否则算法停下来并得到no。它是验证所猜测的解的正确性。
3. 规约/约化
问题A可以约化为问题B,称为“问题A可规约为问题B”,可以理解为问题B的解一定就是问题A的解,因此解决A不会难于解决B。由此可知问题B的时间复杂度一定大于等于问题A。
现在有两个问题:求解一个一元一次方程和求解一个一元二次方程。那么我们说,前者可以规约为后者,意即知道如何解一个一元二次方程那么一定能解出一元一次方程。我们可以写出两个程序分别对应两个问题,那么我们能找到一个“规则”,按照这个规则把解一元一次方程程序的输入数据变一下,用在解一元二次方程的程序上,两个程序总能得到一样的结果。这个规则即是:两个方程的对应项系数不变,一元二次方程的二次项系数为0。
从规约的定义中我们看到,一个问题规约为另一个问题,时间复杂度增加了,问题的应用范围也增大了。通过对某些问题的不断规约,我们能够不断寻找复杂度更高,但应用范围更广的算法来代替复杂度虽然低,但只能用于很小的一类问题的算法。存在这样一个NP问题,所有的NP问题都可以约化成它。换句话说,只要解决了这个问题,那么所有的NP问题都解决了。这种问题的存在难以置信,并且更加不可思议的是,这种问题不只一个,它有很多个,它是一类问题。这一类问题就是传说中的NPC问题,也就是NP-完全问题。
4. P类问题、NP类问题、NPC问题、NP难问题
P类问题:能在多项式时间内可解的问题。
NP类问题:在多项式时间内“可验证”的问题。也就是说,不能判定这个问题到底有没有解,而是猜出一个解来在多项式时间内证明这个解是否正确。即该问题的猜测过程是不确定的,而对其某一个解的验证则能够在多项式时间内完成。P类问题属于NP问题,但NP类问题不一定属于P类问题。
NPC问题:存在这样一个NP问题,所有的NP问题都可以约化成它。换句话说,只要解决了这个问题,那么所有的NP问题都解决了。其定义要满足2个条件:
- 它是一个NP问题;
- 所有NP问题都能规约到它。
NP难问题:NP-Hard问题是这样一种问题,它满足NPC问题定义的第二条但不一定要满足第一条(就是说,NP-Hard问题要比 NPC问题的范围广,NP-Hard问题没有限定属于NP),即所有的NP问题都能约化到它,但是他不一定是一个NP问题。NP-Hard问题同样难以找到多项式的算法,但它不列入我们的研究范围,因为它不一定是NP问题。即使NPC问题发现了多项式级的算法,NP-Hard问题有可能仍然无法得到多项式级的算法。事实上,由于NP-Hard放宽了限定条件,它将有可能比所有的NPC问题的时间复杂度更高从而更难以解决。
以上四个问题之间的关系如下图所示:
参考文献
边栏推荐
- Go language -- language constants
- 数学三大核心领域概述:代数
- Novice entry SCM must understand those things
- Auto. JS learning notes 17: basic listening events and UI simple click event operations
- [untitled]
- MIT6.s081-2020 Lab2 System Calls
- The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
- Cannot build artifact 'test Web: War expanded' because it is included into a circular depend solution
- J'ai un chaton.
- A complete collection of necessary learning websites for office programmers
猜你喜欢
【课程笔记】编译原理
The digital economy has broken through the waves. Is Ltd a Web3.0 website with independent rights and interests?
A master in the field of software architecture -- Reading Notes of the beauty of Architecture
MPLS test report
Network protocol model
请求转发与重定向
Cannot build artifact 'test Web: War expanded' because it is included into a circular depend solution
Database: ODBC remote access SQL Server2008 in oracel
Embedded point test of app
Yygh-11-timing statistics
随机推荐
Processes and threads
The digital economy has broken through the waves. Is Ltd a Web3.0 website with independent rights and interests?
【无标题】
Station B Liu Erden softmx classifier and MNIST implementation -structure 9
[email protected]树莓派
Title 1093: character reverse order
Zoom through the mouse wheel
Clock in during winter vacation
Yygh-11-timing statistics
H3C V7版本交换机配置IRF
Station B, Master Liu Er - back propagation
IPv6 comprehensive experiment
初识数据库
实践分享:如何安全快速地从 Centos迁移到openEuler
Migrate Infones to stm32
LTE CSFB process
Query the standard text code corresponding to a work center (s) in the production order
H3C firewall rbm+vrrp networking configuration
【论文阅读】NFlowJS:基于鲁棒学习的合成负数据密集异常检测
GTSAM中李群的运用