不能确定是否在多项式时间(多项式时间内是什么意思)

本文目录
多项式时间内是什么意思
该词语指的是一个问题的计算时间不大于问题大小的多项式倍数。
多项式时间在计算复杂度理论中,这里的计算时间并不是指具体的时间,而是解决问题时使用的算法的时间复杂度。
具体来说,任何抽象机器都拥有一复杂度类,此类包括可于此机器以多项式时间求解的问题。数学家有时会把“如多项式时间长的算法”视为快速计算,相对应的是超多项式时间,表示任何多项式时间的输入数目只要够大,超多项式时间所需的解题时间终究会大大超过任何多项式时间的问题。
什么是NP
P=NP就是解一个问题和验算一个答案是等价的。
P指多项式时间(Polynomial),一个复杂问题如果能在多项式时间内解决,那么它便被称为P问题,这意味着计算机可以在有限时间内完成计算。NP指非确定性多项式时间(nondeterministicpolynomial),一个复杂问题不能确定在多项式时间内解决。P=NP是等式,也可以看作是以N为未知数的方程。所以P=NP就是解一个问题和验算一个答案是等价的。
计算机科学的理念:
计算机科学是研究计算机及其在信息处理中的理论、算法、原理、应用和实现等方面的一门学科。计算机科学领域涉及的内容非常广泛,包括计算机体系结构、计算机网络、操作系统、数据库系统、编程语言、算法设计和分析、人工智能、计算机图形学、计算机辅助设计等等。计算机科学是一门理论性和实践性相结合的学科,既涉及到理论上的研究,也需要通过实践来验证和应用这些理论成果。计算机科学的研究内容和应用范围非常广泛,是当今信息化社会中不可或缺的一部分,也是推动现代科技进步的重要力量之一。
什么是NP完全问题
在学习决策树的时候,我们知道,其一大特点是:寻找最佳的决策树是NP完成问题。什么是NP完全问题,决策树的这一特点又是什么意思?
这里的NP其实是 Non-deterministic Polynomial 的缩写,即多项式复杂程度的非确定性问题,NP完全问题有时也会简称为NP-C问题。与此概念相关的还有P类问题、NP类问题等。要理解什么是NP完全问题,首先得从P类问题开始理解。
判定问题 是指回答结果输出为 Yes 或 No 的问题,比如:3233是否可以写成两个大于1的数字的乘积?是否存在一条路线有且仅有一次的走过 七桥问题 的每一座桥?
在设计程序时,我们经常需要评估这个程序的时间复杂度,即衡量当问题规模变大后,程序执行所需的时间增长会有多快。如O(1)表示常数级别,即不管问题的规模变大多少倍,所耗的时间不会改变;O(N^2) 表示平方级别,即当问题规模增大至2倍时,所花费的时间则放大至4倍;O(2^N) 表示指数级别,即当问题规模倍数扩大时,所用时间会呈指数放大。
多项式时间 则是指O(1)、O(logN)、O(N^2) 等这类可用多项式表示的时间复杂度,通常我们认为计算机可解决的问题只限于多项式时间内。而O(2^N)、O(N!)这类非多项式级别的问题,其复杂度往往已经到了计算机都接受不了的程度。
NP类问题将问题分为求解和验证两个阶段,问题的求解是非确定性的,无法在多项式时间内得到答案,而问题的验证却是确定的,能够在多项式时间里确定结果。
比如:是否存在一个公式可以计算下一个质数是多少?这个问题的答案目前是无法直接计算出来的,但是如果某人给出了一个公式,我们却可以在多项式时间里对这个公式进行验证。
可以说NP完全问题是NP类问题的一种特殊情况,总结这几类问题的特点,可参考如下这个表格:
注:表格中的问题类型的困难程度依次递增
由表可知,NP类问题是否能在多项式时间内求解,其答案并不明确,如果回答为「是」,岂不是跟P类问题一样了?值得一题的是,P=NP?是千禧七大难题的首个难题,是一个价值百万美元的问题,这个问题本质是求证:能用多项式时间验证解的问题是否内在多项式时间内找出解。
在决策树算法中,寻找最优决策树是一个NP完全问题。决策树的这一特点,说明我们无法利用计算机在多项式时间内,找出全局最优的解。
也正因为如此,大多数决策树算法都采用启发式的算法,如贪心算法,来指导对假设空间的搜索。可以说,决策树最后的结果,是在每一步、每一个节点上做的局部最优选择。决策树得到的结果,是没法保证为全局最优的。
(全文完)
参考文章:
1、 什么是P问题、NP问题和NPC问题
2、 what are the differences between np, np-complete and np-hard
有哪些有趣的数学问题
1.四色定理:这是一个关于地图染色的问题,即任何平面地图都可以用四种颜色来涂色,使得相邻的区域颜色不同。这个问题在1852年被提出,直到1976年才被证明。
2.哥德尔不完备定理:这是一个关于数学逻辑的问题,哥德尔证明了在任何足够复杂的形式系统中,都存在一些既不能被证明也不能被证伪的命题。
3.旅行商问题:这是一个关于图论的问题,即在一个图中找到一条最短的路径,使得每个顶点都被访问一次且仅一次,然后返回到起点。这个问题是NP-hard问题,也就是说,目前还没有已知的多项式时间算法可以解决它。
4.黎曼猜想:这是一个关于复数域上的黎曼ζ函数的零点分布的问题。黎曼猜想如果被证明,将会对数论和物理领域产生深远影响。
5.球面覆盖问题:这是一个关于几何的问题,即如何用最小数量的“球片”覆盖一个球面。这个问题是开放性的,也就是说,我们还不知道是否存在一个最优解。
6.PvsNP问题:这是一个关于计算理论的问题,即判断一个问题是否在多项式时间内可解是否等于判断该问题的任意一个实例是否在多项式时间内可解。这个问题是计算机科学中的一个未解决问题,也是克雷数学研究所悬赏的七个千禧年大奖难题之一。
你不知道的:贪婪算法
贪婪算法是关注局部最优而非全局最优的算法策略,在对问题求解时, 每次选择,都是当前最佳 。当找出一个大致能解决问题的优秀解,而不需要要找出最完美的解的情况下,贪婪算法还是不错的。优秀和完美之间,需要考虑实现代价。例如:精确算法的时间复杂度是冥函数或阶乘函数,其实现代价将远远高于结果还不错的贪婪算法
NP完全问题:不能在确定的多项式时间内解决的问题,为NP完全问题,例如:集合覆盖问题、旅行商问题(经由几个点的最短路径)、所有涉及排列组合的问题。NP完全问题,在数据量少的时候,还可求解;在数据量大的时候,求解时间不可控,速度非常慢;遇到NP完全问题,直接放弃求最优解,直接用贪婪算法求近似解即可。
集合覆盖/排列组合问题计算公式参考:

更多文章:
全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)
2026年9月7日 17:10
matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)
2026年9月7日 16:30
oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)
2026年9月7日 15:30
电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)
2026年9月7日 12:20
scrollthrough意思(“scroll”是什么意思)
2026年9月7日 08:00
怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)
2026年9月7日 06:30
vba编写excel插件(excel vba中能否动态创建控件)
2026年9月7日 04:40






