Hard Problems简介

1. 引言

computational complexity的核心问题在于:

  • 计算机容易实现什么?计算机几乎不可能实现什么?

某hard problem从根本上有多困难?这是计算机科学家的基本任务,他们希望将问题分类为所谓的“complexity classes”。这些“complexity classes”中包含所有计算问题,这些计算问问题需要少于一定数量的计算资源——如时间或内存。
根据“complexity classes”,可将Hard Problems分为如下层级结构:
Hard Problems简介_第1张图片
其中某类包含了其它所有hard problems,以及某些hard problems需要额外的计算资源。

举个简单例子,对于大数123,456,789,001,提2个问题:

  • 问题1:该数是否为素数?即只能被1和其自身整除:计算机科学家可使用快速算法来解决该问题——算法不会因为数字变得任意大而陷入困境。
  • 问题2:该数的素数因子有哪些?除非使用量子计算机,现在没有快速算法来解决该问题。

即,从计算机科学家的角度来看,这2个问题分属与不同的complexity classes。

现存有多种不同的complexity classes,但大多数情况下,研究人员还不能证明某类class与其他类的绝对不同之处。证明这些类型的分类区别是该领域最困难、最重要的公开问题之一。

complexity classes之间的差异可能是微妙的,也可能是明显的,保持类的straight(正统性)是一项挑战。出于这个原因,本文重点关注七个最基本的complexity classes:

  • 1)P
  • 2)BPP
  • 3)BQP
  • 4)NP
  • 5)PH
  • 6)PSPACE
  • 7)EXPTIME

2. P

P表示:

  • Polynomial time。

所谓P hard problem,是指:

  • 经典(即非量子)计算机易于解决的所有问题。

准确来说,是指:

  • P中的算法必须在最多 n c n^c nc time时限内停止运行并给出正确答案,其中 n n n为输入长度, c c c为某常量值。

经典的P hard problem有:

  • 某数字是素数么?
  • 2点之间的最短路径?

当前研究人员想知道的是:

  • P与NP是否等价?若等价,它将颠覆计算机科学,并使大多数密码学在一夜之间失效。(几乎没有人认为是这样。)

3. NP

NP表示:

  • Nondeterministic Polynomial time

所谓NP hard problem,是指:

  • 一旦给出问题的解决方案,可在经典计算机上快速验证的所有问题。

准确来说,是指:

  • 若某问题为NP Problem,已知该问题答案为“yes”,则存在简短proof来证明该答案是正确的。若输入为string X,需判断其答案为“yes”,相应的简短proof为string Y,可使用Y在polynomial time内验证其答案确实是“yes”。(Y有时称为“short witness”——所有NP Problem都有可快速验证的“short witness”。)

经典的NP hard problem有:

  • 成团问题。想象一个有边和节点的图——如,该图中,节点是Facebook上的个人,若两个节点是“朋友”,则通过一条边连接。团是该图的一个子集,团中所有人都是其他人的朋友。有人可能会问在图中:是否有20人的团?50人?100?找到这样的团是一个“NP-complete”问题,即意味着它是NP中任何问题中复杂度最高的。但如果给出一个潜在的答案——50个节点的子集,可能形成也可能不形成团——则很容易检查。
  • 旅行推销员问题。给定一个城市列表,以及 两两城市间的举例,有没有一种方法可以在不到一定英里数的情况下穿过所有城市?如,一个旅行推销员能在不到11000英里的范围内穿过美国的各州首府吗?

当前研究人员想知道的是:

  • P与NP是否等价?计算机科学家离解决该问题还差得很远。

4. PH

PH代表:Polynomial Hierarchy

所谓PH hard problem,是指:

  • 为NP的泛化。其包含了所有NP问题,并增加了额外的complexity layer。

准确来说,是指:

  • PH中包含一些具有alternating “quantifiers”(交替量词)的问题,这些“quantifiers”使问题更加复杂。alternating “quantifiers”问题举例:给定X,是否存在Y,对于每个Z都存在W,使得R发生?一个问题包含的量词越多,它就越复杂,其多项式层次也越高。

经典的PH问题为:

  • 判断是否存在50人团而不存在51人团。

当前研究人员想知道的是:

  • 计算机科学家还不能证明PH不同于P。该问题与"P是否等于NP"等价,应为,若(不幸地)P=NP,则所有的PH将塌缩为P,即P=PH。

5. PSPACE

PSPACE表示:

  • Polynomial Space。

所谓PSPACE hard problem,是指:

  • 能以合理内存量来解决的所有问题。

准确来说,是指:

  • PSPACE中不关心time,仅关心运行某算法所需的内存量。计算机科学家已证明了PSPACE中包含了PH,进而包含了NP,再进而包含了P。

经典PSPACE问题有:

  • 每个P问题、NP问题和PH问题,均为PSPACE问题。

当前研究人员想知道的是:

  • P与PSPACE是否存在不同之处?

6. BQP

BQP表示:

  • Bounded-error Quantum Polynomial time

所谓BQP难题,是指:

  • 量子计算机易于解决的所有问题。

准确来说,是指:

  • 量子计算机可在polynomial time时限内解决的所有问题。

经典BQP难题有:

  • 识别某正数的素数因子。

当前研究人员想知道的是:

  • 计算机科学家已证明BQP包含在PSAPCE中,且BQP中包含了P。但不确定BQP是否在NP中,但计算机科学家坚信NP与BQP为incomparable:即有些问题是NP而不是BQP,反之亦然。

7. EXPTIME

EXPTIME表示:

  • Exponential Time

所谓EXPTIME难题,是指:

  • 经典计算机可在exponential amount of time时限内解决的所有问题。

准确来说,是指:

  • EXPTIME难题中包含了之前所有种类——P、NP、PH、PSPACE、BQP。研究人员已证明EXPTIME不同于P,因为已找到了属于EXPTIME的问题,其不属于P难题。

经典EXPTIME难题有:

  • 通常的棋类和checker游戏都属于EXPTIME。若棋盘可为任意size,则判断某棋手在特定棋盘位置是否有优势,就是EXPTIME难题。

当前研究人员想知道的是:

  • 计算机科学家希望能够证明PSPACE不包含EXPTIME。他们认为EXPTIME中存在的问题不在PSPACE中,因为有时在EXPTIME中需要大量内存来解决问题。计算机科学家知道如何分离EXPTIME和P。

8. BPP

BPP表示:

  • Bounded-error Probabilistic Polynomial time

所谓BPP难题,是指:

  • 可由,包含随机数的算法,快速解决的问题。

准确来说:

  • BPP与P完全相同,但不同之处在于该算法允许包括决策随机化的步骤。BPP中的算法只需要给出概率接近1的正确答案。

经典BPP难题有:

  • 有2个不同的共识,每个都生成一个具有很多变量的多项式。这2个公式是否计算的是完全相同的多项式?——称为polynomial identity testing problem。

当前研究人员想知道的是:

  • 计算机科学家想知道BPP=P是否成立。若成立,则意味着每个随机化算法都可以去随机化。科学家认为事实就是这样——对于每一个存在有效随机算法的问题,都有一个有效的确定性算法——但他们无法证明这一点。

参考资料

[1] Kevin Hartnett 2018年在Quanta Magazine上的博客 A Short Guide to Hard Problems

你可能感兴趣的:(基础理论,基础理论)