《计算复杂性:现代方法》——1.6 类P

简介:

本节书摘来自华章计算机《计算复杂性:现代方法》一书中的第1章,第1.6节,作者 [美]桑杰夫·阿罗拉(Sanjeev Arora),博阿兹·巴拉克(Boaz Barak),译 骆吉洲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.6 类P

screenshot

screenshot

screenshot

1.6.1 为什么模型选择无关紧要

我们用图灵机定义“可计算”语言的各种复杂性类及类P。如果选用其他计算模型,这些类会有区别吗?在发现了计算但采用其他模型而不是图灵机作为计算模型的高等外星人眼里,这些类会有区别吗?

我们已经遇到图灵机模型的各种变形,用其中最弱的模型来模拟最强的模型将导致运行时间平方增加。因此,作为可计算问题的集合,多项式时间在这些变形上是一样的。

在图灵和邱奇的工作发表之后的最初几十年中,很多其他的计算模型被发现,其中有些模型十分怪异。当时人们很容易地就证明了图灵机能够模拟其他计算模型,模拟过程至多使得运行时间多项式地变高。因此,在这些模型上类似地定义的类P不会比图灵机定义的P更大。

绝大多数科学家均相信邱奇图灵(CT)命题,它断言任何可被物理实现的计算装置均可以被图灵机模拟,不管这种装置是基于芯片、DNA、中子的还是基于外星人技术的。这就是说,任何其他模型上的可计算问题的集合不会比图灵机上可计算问题的集合更大。(CT命题不是定理,正如我们目前的理解,它仅仅是对世界的本质的一种信念。)

screenshot

1.6.2 P的哲学意义

screenshot
screenshot
screenshot

1.6.3 P的争议和解决争议的一些努力

现在,我们给出关于类P的定义的一些争议和解决这些争议的过程中出现的以下相关复杂性类。

最坏情况精确计算过于严格。类P的定义考虑的仅仅是在所有可能的输入上计算函数的算法。一个争议之处是,所有输入并不都出现在实际场合中,而算法只需对实际场合下出现的输入上有效即可。平均复杂性部分地解决了这一争议,并由此产生了平均复杂性意义下类似P的复杂性类,参见第18章。我们的观点是,限定在“实际场合”讨论P仅有纯技术意义。

类似地,在遇到像图的最大独立集这样大小的计算函数时,人们通常更愿意讨论问题的近似解。第11章和第22章对近似复杂性进行了严格处理。

其他可物理实现的模型。前面已经提到了强邱奇图灵命题,它断言在任意可物理实现的计算模型上类P不会更大,但其中还有一些微妙之处有待讨论。

(a) 精度问题。图灵机用离散符号进行计算,但现实生活中某些物理量可以取R中的实数。因此,人们也可以基于能操作实数的某些物理现象来构想执行实数计算的模型。由于存在精度问题,图灵机只能近似地模拟实数计算。即便这样,精度问题也不是图灵机遇到的本质性障碍(尽管有些研究者不认同这种观点)。毕竟,由于现实生活中设备存在噪音,因此物理量的测量只能精确到有限精度。因此,物理过程不可能涉及任意精度,继而图灵机当然可以用有限精度来完成模拟。27即便这样,我们仍将在第16章中考虑图灵机的一种修改,使其能够将实数运算当作基本操作。由此产生的复杂性类跟标准复杂性类之间的联系十分密切。

(b) 随机性的采用。前面定义的图灵机是确定型的。如果计算的领域中存在随机性,则人们也可以构想利用随机位源(如投掷硬币)的计算模型。第7章讨论了允许投掷硬币的图灵机并研究了复杂性类BPP,它是这种计算模型上与P类似的复杂性类。然而,我们在第19章和第20章将会看到,随机型计算模型极可能并不比确定型计算模型更强。

(c) 量子力学的采用。一个更聪明的计算模型使用了量子力学中违背直觉的一些性质。我们在第10章定义了复杂性类BQP,它是类P在量子计算模型中的推广。我们将看到BQP中的一些问题,目前还不知道它们是否属于P(尽管目前仍未证明BQP≠P)。然而,量子计算模型是否能被物理实现还是未知的。并且,量子计算机目前似乎也只能高效地求解为数不多的几个不属于P的问题。因此,研究P时获得的知识仍可能适用于量子计算机。

(d) 其他怪诞物理知识(如弦论)的采用。目前,许多物理理论似乎都得到同样的复杂性类BQP,尽管许多理论还有待深入理解。

判定问题的限制太强。有些计算问题不易表达成判定问题。事实上,本书将引入几个复杂性类来处理某些任务的计算复杂性,这些任务包括非布尔函数的计算、搜索问题的求解、优化问题的近似求解、交互式任务,等等。然而,判定问题的框架已被证明具有强大的表达能力,本书也经常使用这种框架。

1.6.4 埃德蒙兹的引言

我们用埃德蒙兹的引言[Edm65]结束本节。埃德蒙兹曾在其著名的论文中给出了求解最大匹配问题的多项式时间算法,他在论文中这样解释其研究结果的意义:
screenshot

相关文章
|
9月前
|
存储 Java
Java面向对象的特征一:封装性
Java面向对象的特征一:封装性
47 0
|
9月前
|
机器学习/深度学习 算法 决策智能
最大熵图像复原方法原理(附完整代码)
最大熵图像复原方法原理(附完整代码)
119 0
|
9月前
【隐式动态求解】使用非线性纽马克方法的隐式动态求解研究(Matlab代码实现)
【隐式动态求解】使用非线性纽马克方法的隐式动态求解研究(Matlab代码实现)
|
12月前
|
机器学习/深度学习 存储 网络架构
比量子化学方法快六个数量级,一种基于绝热状态的绝热人工神经网络方法,可加速对偶氮苯衍生物及此类分子的模拟
比量子化学方法快六个数量级,一种基于绝热状态的绝热人工神经网络方法,可加速对偶氮苯衍生物及此类分子的模拟
|
存储 C++
基于C++来做一个多项式类的设计与实现
基于C++来做一个多项式类的设计与实现
|
Java 编译器 测试技术
Java面向对象的三大特征之继承
Java面向对象的三大特征之继承
|
机器学习/深度学习 人工智能 分布式计算
因果推断:效应估计的常用方法及工具变量讨论
日常工作中很多的策略/产品的效果是无法设计完美的随机实验的,要求我们从观察性数据中去(拟合随机试验)发现因果关系、测算因果效应。
1437 0
因果推断:效应估计的常用方法及工具变量讨论
|
Java 数据挖掘 编译器
Java面向对象的三大特征
程序设计追求“高内聚,低耦合”。 高内聚:类的内部数据操作细节自己完成,不允许外部干涉。 低耦合:仅对外暴露少量的方法用于使用。
85 0
|
Java 索引
java面向对象三大特征之一多态(多类调用)
多态是方法的多态,和属性没有关系
93 1
java面向对象三大特征之一多态(多类调用)
Java面向对象三大特征
Java面向对象的三大特征