P,NP,PSPACE都是什么鬼一文讲清计算复杂性分类

ml20170502 2023-07-15 17:08:56

导语

对于计算机来说,哪些问题是容易计算的,哪些是几乎不可能的?这些是计算复杂性领域的核心问题。本文是对这些问题的鸟瞰。(后附超大彩蛋)

编译:集智俱乐部翻译组来源:quantamagazine原题:A Short Guide to Hard Problems

根据不同的复杂类别可以把问题排列成如上图的层级状:某些类别能包含其他类别中的所有问题,同时还包含需要额外计算资源的其他问题。一个问题到底有多难?对于那些想把所有问题按照复杂类别(complexity claesses)排序的计算机科学家来说,这是一个最基本的任务。一个复杂类别包含了满足特定条件的所有计算问题:这些问题的时间和空间复杂度不超过某个值。举个简单的例子,对于整数123456789001,有些人可能会问:这个数是一个质数吗?计算机科学家可以使用一个快速算法解决这个问题,并且该算法对于任意大的数仍适用。在我们的例子中,123456789001不是质数,那么它的质数因子是什么呢?对于这个问题,就不存在上述快速算法了,当数变得相当大时,算法的时空复杂度会变得不切实际——如果你有量子计算机的话当我没说。因此,计算机科学家相信上述两个问题(判断是否为质数 | 找到非质数的质数因子)属于不同的计算复杂类别。7个计算复杂类别计算复杂类别有很多种,虽然大多数情况下研究者不能证明某个类别和其他类别截然不同。而证明这些复杂类别之间的关系是该领域最困难和最重要的开放性问题。复杂类之间的可能只有微妙的差异,也可能有着显著的差异,弄清楚类别之间的差异还挺有挑战性。为此,本文把最基本的七个复杂类别放在一起,希望你看完后不要再混淆BPP和BQP了:)P全称:多项式时间(Polynomial time)简述:能用经典计算机轻易解决的所有问题精确描述:

  • P类中的算法必须在n^c的时间内停止并给出正确答案,其中n是输入的规模,c是常数

典型问题:

  • 一个数是否是质数?
  • 两点之间的最短路径是什么?

研究者们关心:

  • P和NP是一回事吗?如果P=NP,那么计算机会被颠覆,大多数密码技术会在一夜之间失效。(几乎没人认为这是成立的。)

NP全称:不确定多项式时间 (Non-deterministic Polynomial time)简述:能用经典计算机快速验证答案的所有问题精确描述:

  • 如果给出某问题一个答案,存在对答案正确性的简短的证明,那么该问题就是一个NP问题。如果输入一个字符串X,你需要确认答案的是否是“YES”,那么上述简短的证明指另外一个字符串Y,这个字符串可以用来在多项式的时间内验证答案是否是“YES”。(Y时常被成为“short witnesses”---所有的NP问题都有“short witnesses”使其能快速验证答案)

典型问题:

  • 团问题(clique problem):想象一张点和边组成的图,例如Facebook上用户为点,朋友关系为点之间的连边所组成的图。团(clique)是指节点全连接的子图。人们也许会问:存在包含20个人的团吗?50个呢?100个呢?找到这样的团是一个“NP完全 (NP-complete) ”的问题,意为该问题在NP问题中具有最高的复杂度。但是给定一个20个人组成的子图,很容易检验该子图是否是正确答案。这就是NP问题的特点,很难找到正确的解,但是判断一个解是否正确十分容易;
  • 旅行商问题 (The traveling salesman problem):给定一些相互远离的城市,是否存在一条穿过所有城市的路径,路径长度小于给定值?例如,是否有一条路径能经过美国所有的州府,总距离却不超过11,000英里?

研究者们关心:

  • P=NP吗?而计算机科学家现在根本没法解决这个问题,这个问题也是信息学领域的最高峰。

PH全称:多项式层级 (Polynomial Hierarchy)简述:PH是NP问题的一种扩展,如果一个问题开始是NP,但是随后会增加额外的复杂性,那么该问题就属于PH。精确描述:

  • PH中的问题都包含一些交替的量词,使得问题变得更加复杂。例如,给定X,是否存在一个Y,使得对于所有的Z,都存在一个W使得R为真?问题中包含的量词越多,问题越复杂,问题在多项式层级中越高。

典型问题:

  • “存在一个大小为50且不存在大小为51的团”是否为真?

研究者们关心:

  • 计算机科学家还没能证明PH是与P不同的。这个问题是和P=NP等价的,因为:如果 P=NP,则所有的 PH 可归化到 P,也即 P=PH。

PSAPCE全称:多项式空间 (Polynomial Space)简述:PSPACE包含了所有可以通过合理内存来解决的问题精确描述:

  • 在PSAPCE类的问题中,你不在乎时间,只关心一个算法所需的内存空间。计算机科学家已经证明PSPACE包含PH类,而PH类包含NP,同时NP还包含P类。

典型问题:

  • P, NP, PH类中的所有问题,都属于PSAPCE类

研究者们关心:

  • P和PSPACE不同吗?

BQP全称:有界误差量子多项式时间 (Bounded-error Quantum Polynomial time)简述:所有能用量子计算机快速解决的问题精确描述:

  • 所有能用量子计算机在多项式时间内解决的问题

典型问题:

  • 确定整数的素因子

研究者们关心:

  • 计算机科学家们已经证明,BQP包含在PSPACE中,且BQP包含P。但是他们不知道BQP是否包含在NP中,但是他们相信这两类是不可比的:存在NP中的问题但不是BQP,反之亦然。

EXPTIME全称:指数时间 (Exponential Time)简述:所有能用经典计算机在指数级时间内解决的问题精确描述:

  • EXP包含前面的所有类:P,NP,PH,PSAPCE,BQP。研究者已经证明EXP与P不同,因为他们呢已经发现了在EXP而不在P中的问题。

典型问题:

  • 像象棋和跳棋一类游戏的扩展都属于EXP。如果象棋棋盘能是任何大小,那么在给定棋局时,确定哪位棋手更加有优势,便是一个EXP问题。

研究者们关心:

  • 计算机科学家能够证明PSAPCE并不包含EXP。他们认为在EXP中存在不属于PSPACE的问题,因为有些EXP问题需要用大量内存才能解决。计算机科学家们知道如何将EXP和P这两类问题分开。

BPP全称:有界误差概率多项式时间 (Bounded-error Probabilistic Polynomial time)简述:可以通过包含随机因素的算法快速解决的问题精确描述:

  • BPP与P完全相同,但是该类问题允许算法在某些步骤包含随机因素。BPP中的算法只需给出概率趋近于1的正确答案。

典型问题:

  • 让你处理两个不同的公式,每个公式都产生包含多个变量的多项式。两个公式会是否计算的相同的多项式吗?这就是所谓的多项式身份测试问题。

研究者们关心:

  • 计算机科学家们想知道BPP=P是否成立。如果成立,即所有的随机算法都可以去随机化。他们认为情况确实如此——对于每个存在有效随机算法的问题,都存在一个有效的非随机算法——但是他们还无法证明这点。

推荐阅读

Geoffrey West精彩讲座视频回顾


每一个HTML文档中,都有一个不可或缺的标签:<head>,在几乎所有的HTML文档里, 我们都可以看到类似下面这段代码:

html{color:#000;overflow-y:scroll;overflow:-moz-scrollbars}
body,button,input,select,textarea{font-size:12px;font-family:Arial,sans-serif}
h1,h2,h3,h4,h5,h6{font-size:100%}
em{font-style:normal}
small{font-size:12px}
ol,ul{list-style:none}
a{text-decoration:none}
a:hover{text-decoration:underline}
legend{color:#000}
fieldset,img{border:0}
button,input,select,textarea{font-size:100%}
table{border-collapse:collapse;border-spacing:0}
img{-ms-interpolation-mode:bicubic}
textarea{resize:vertical}
.left{float:left}
.right{float:right}
.overflow{overflow:hidden}
.hide{display:none}
.block{display:block}
.inline{display:inline}
.error{color:red;font-size:12px}
button,label{cursor:pointer}
.clearfix:after{content:'\20';display:block;height:0;clear:both}
.clearfix{zoom:1}
.clear{clear:both;height:0;line-height:0;font-size:0;visibility:hidden;overflow:hidden}
.wordwrap{word-break:break-all;word-wrap:break-word}
.s-yahei{font-family:arial,'Microsoft Yahei','微软雅黑'}
pre.wordwrap{white-space:pre-wrap}
body{text-align:center;background:#fff;width:100%}
body,form{position:relative;z-index:0}
td{text-align:left}
img{border:0}
#s_wrap{position:relative;z-index:0;min-width:1000px}
#wrapper{height:100%}
#head .s-ps-islite{_padding-bottom:370px}
#head_wrapper.s-ps-islite{padding-bottom:370px}#head_wrapper.s-ps-islite #s_lm_wrap{bottom:298px;background:0 0!important;filter:none!important}#head_wrapper.s-ps-islite .s_form{position:relative;z-index:1}#head_wrapper.s-ps-islite .fm{position:absolute;bottom:0}#head_wrapper.s-ps-islite .s-p-top{position:absolute;bottom:40px;width:100%;height:181px}#head_wrapper.s-ps-islite #s_lg_img,#head_wrapper.s-ps-islite#s_lg_img_aging,#head_wrapper.s-ps-islite #s_lg_img_new{position:static;margin:33px auto 0 auto}.s_lm_hide{display:none!important}#head_wrapper.s-down #s_lm_wrap{display:none}.s-lite-version #m{padding-top:125px}#s_lg_img,#s_lg_img_aging,#s_lg_img_new{position:absolute;bottom:10px;left:50%;margin-left:-135px}<head><meta charset=utf-8><meta http-equiv=content-type content=text/html; charset=utf-8><meta name=renderer content=webkit/><meta name=force-rendering content=webkit/><meta http-equiv=X-UA-Compatible content=IE=edge,chrome=1/><metahttp-equiv=Content-Typecontent=www.aimssg.cn/ent;charset=gb2312><meta name=viewport content=width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no></head>.s-ps-sug table{width:100%;background:#fff;cursor:default}.s-ps-sug td{color:#000;font:14px arial;height:25px;line-height:25px;padding:0 8px}.s-ps-sug td b{color:#000}.s-ps-sug .mo{background:#ebebeb;cursor:pointer}.s-ps-sug .ml{background:#fff}.s-ps-sug td.sug_storage{color:#7a77c8}.s-ps-sug td.sug_storage b{color:#7a77c8}.s-ps-sug .sug_del{font-size:12px;color:#666;text-decoration:underline;float:right;cursor:pointer;display:none}.s-ps-sug .sug_del{font-size:12px;color:#666;text-decoration:underline;float:right;cursor:pointer;display:none}.s-ps-sug .mo .sug_del{display:block}
.s-ps-sug .sug_ala{border-bottom:1px solid #e6e6e6}

head标签作为一个容器,主要包含了用于描述 HTML 文档自身信息(元数据)的标签,这些标签一般不会在页面中被显示出来。

...全文
830 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
源码直接下载地址: https://pan.quark.cn/s/0c43ed5159df 本资源为HCDA认证培训教程,旨在面向准备参加HCDA考试的学员,或希望掌握TCP/IP基础、路由、交换技术、广域网、以太网技术基本原理以及华为通用路由平台VRP上实现的相关内容。具体涵盖的模块包括:Module 1-网络互联基础、Module 2-路由和路由协议基础与实现、Module 3-以太网交换技术基础与实现、Module 4-广域网技术基本原理与实现、Module 5-网络安全基础、Module 6-华为数通产品概述 ### 华为-NAT技术详解 #### 一、概述 NAT(Network Address Translation,网络地址转换)是一种在专用网络内部使用私有IP地址的情况下,使这些设备能够通过公有IP地址进行外部通信的技术手段。NAT技术在多种网络环境中得到广泛应用,特别是在企业网络中发挥着关键性作用。作为HCDA认证培训教程的一部分,本文档将系统性地阐述NAT的基础理论及其实现方法,并深入探讨在华为VRP平台上的具体应用场景。 #### 二、NAT处理流程 NAT处理流程主要包含两种类型:基于源IP地址和基于目的IP地址的处理模式。 ##### 1. 基于源IP地址的NAT处理 **1.1 一对一NO-PAT** 一对一NO-PAT即非端口地址转换(No-Port Address Translation),在这种模式下,一个私有IP地址对应一个公有IP地址,不涉及端口号的转换。当配置了NAT no-pat时,华为设备会为已配置的多通道协议产生的实际流量数据建立server-map表项。这种方式适用于需要固定公网IP的服务器等场景。 **1.2 多对一...
内容概要:本文基于Simulink仿真平台,复现并深入研究了一篇关于全桥LLC谐振变换器的学术论文,重点聚焦于变频控制与移相控制相结合的协同策略,旨在优化变换器在不同工作模式切换过程中的动态响应特性。通过构建高精度的全桥LLC变换器仿真模型,系统分析了传统单一控制方式下模式切换易引发的电压电流冲击问题,进而提出一种融合频率调节与移相角调节的复合控制方法。该方法通过精确协调两个控制自由度,有效平抑了切换瞬态的电气应力,显著提升了系统的运行平稳性、效率及整体稳定性。文中详尽阐述了协同控制的逻辑架构、关键参数的设计与整定原则,并通过严谨的仿真对比实验,验证了所提策略在改善模式切换平滑性方面的优越性能。; 适合人群:具备扎实的电力电子与电力传动理论基础,熟练掌握Simulink/MATLAB仿真工具,正在从事高频软开关变换器、DC-DC电源变换、新能源并网逆变器等相关领域研究的硕士、博士研究生及科研技术人员。; 使用场景及目标:①深入理解全桥LLC谐振变换器的工作原理、谐振特性及其多模式运行机制;②掌握变频与移相结合的混合控制策略的设计思想与实现方法;③将其应用于高效率、高可靠性电源系统的动态性能优化,为解决实际工程中电源启停、负载突变等工况下的稳定性问题提供理论依据和技术方案。; 阅读建议:建议读者结合所提供的Simulink模型文件进行同步操作与学习,重点关注控制器模块的搭建细节、控制逻辑的实现方式以及各关键参数的调节过程。应主动对比单一变频、单一移相与协同控制三种策略下的仿真波形,从电压、电流的瞬态响应中直观感受协同控制的优势,从而深化对先进控制理论在电力电子系统中应用价值的理解。
代码转载自:https://pan.quark.cn/s/b9146ae38508 《Linux From Scratch》(LFS)是一部详尽阐述如何从源代码开始构建Linux系统的指南性著作。书中包含了完整的流程和说明,指导读者逐步构建个性化的Linux系统。这本书不仅适合那些希望探究Linux操作系统内部运作机制的用户,同时也适合那些希望构建专业级、高度定制化系统的进阶用户。LFS的中文版本将这一过程用中文详细描述,使中文用户能够毫无障碍地遵循书中的步骤来定制Linux系统。本书的翻译工作由多位译者分别承担,他们分别是金步国、ipconfigme和bobkey,各自负责不同章节的翻译任务。本书的结构分为若干部分,各部分内容如下: 第一部分主要阐述了如何构建LFS系统。在这一部分中,首先解释了LFS的定义以及构建LFS系统的必要性。接着,列出了构建LFS系统的目标读者群体、先决条件、对宿主系统的要求,并说明了排版约定和本书的组织结构。此外,还提供了版本更新记录,帮助读者了解不同版本之间的差异。 在“准备一个新分区”章节中,讲解了如何在计算机上创建新分区并在该分区上建立文件系统,为安装LFS系统进行准备。 在“软件包和补丁”章节,LFS列出了所有需要下载的软件包和补丁,并介绍了它们的用途。 在“最后的准备工作”章节,书中指导读者设置环境变量$LFS,创建$LFS/tools目录,添加LFS用户,并设定工作环境。 紧随其后,在“构建临时编译环境”章节中,详细介绍了如何创建一个临时编译环境,这个环境是编译和安装最终的LFS系统所必需的工具链。这一部分包括了如何编译安装Binutils、GCC、Linux内核头文件、Glibc,以及调整工具链等步骤。 本书详细说...

21

社区成员

发帖
与我相关
我的任务
社区描述
关注我,ITX带你飞( •̀ ω •́ )
社区管理员
  • 「已注销」
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧