P完全性和并行计算


23

我最近在阅读有关检查双相似性的算法,并了解到问题是P-complete的。此外,其结果是该问题或任何P完全问题不太可能具有有效的并行算法。

最后的陈述背后的直觉是什么?


这与NC(请参阅答案)有关,恕我直言是形式化“有效可并行化”的可怕方法。
拉斐尔

Answers:


17

任何P问题都不太可能具有有效的并行算法。为什么呢

的存在P -complete问题是最重要的线索(PPOLYLOGSPACE)P。那么问题是,为什么这个猜想与并行计算有关?让我们从计算中使用的资源开始。对于顺序计算:时间和空间;对于并行计算:时间和硬件(处理器数量)。有关系吗?是! 顺序空间↔并行时间;顺序时间↔并行硬件。顺序空间和并行时间之间的对应关系似乎与所采用的并行计算模型无关。这导致了以下未经证实的所谓并行计算论点

(钱德拉和斯托克迈尔)可以在时间T n = O S n O 1 的并行计算模型中模拟具有空间复杂度的TM的每个计算,以及并行计算的每个计算具有时间复杂度T 'n O的模型可以通过空间复杂度S 'n = O T 'n OS(n)T(n)=O(S(n)O(1))T(n)S(n)=O(T(n)O(1))

类的问题在多项式空间顺序可解是和该组的在多项式时间内可解决的问题是P。由于P 小号P Ç é被认为是一个更大的类的比问题P,本文量化通过并行实现的有效改进。本文的结果是,PRAM可以在多项式时间内解决N P-完全问题……不幸的是,没有!并行计算理论表明,我们实际上可以处理属于P S P A C E的问题PSPACEPPSPACEPNPPSPACE…但这需要成倍数量的处理器!时空权衡正在起作用:顺序计算模型上的指数时间被转换为并行计算模型上处理器的指数数量,而顺序计算模型上的多项式空间被转换为并行计算模型上的多项式时间计算模型。

这种权衡比较容易理解,如果我们试图限制这两个平行的时间和并行硬件:如果并行计算模型具有处理器的多项式数,那么类的问题可以解决并行多项式时间是。如果将处理器的数量限制为多项式,则可以提高顺序机的性能,但最多只能提高多项式因数。因此,我们可以减少表示时间复杂度的多项式的次数,但是我们无法使用并行性将指数成本降低为多项式成本。P

与多项式时间复杂度并行解决的问题是属于那些问题。对处理器数量的多项式约束导致了等效于TM的并行计算模型。有两个重要的实际考虑因素:哪个处理器可以接受/负担得起的多项式数量?实际上,处理器的多项式数是线性的或近似的。哪个次多项式时间可以实现?事实证明,几乎所有高度并行的可行问题都可以实现多对数并行时间。并行地,在输入长度上为对数的时间复杂度表示有效的并行计算。如果在给定处理器多项式的情况下,其时间复杂度是对数的,则并行算法被认为是有效的。P

给定一个问题其中ķħ为常数,并行计算论文意味着并行算法的存在对于[R与时间复杂度O l o g n k '其中k 'RTIME_SPACETM(nk,(logn)h)khRO((logn)k)k是一个常数。顺序时间和并行时间之间的比较允许将分类为高度可并行化的问题(从时间角度来看)。R

从并行计算理论出发,可以得出是高度可并行化的问题。P ø 大号ÿ 大号ö ģ 小号P Ç é不包含完整的问题是关于对数空间的减少; 这意味着P O L Y L O G S P A C E P。看起来POLYLOGSPACEPOLYLOGSPACEPOLYLOGSPACEP

  1. POLYLOGSPACEP
  2. PPOLYLOGSPACE

包含可在多项式时间内使用polylogarithmic空间来解决的问题。P -complete问题可能属于 P - P P ø 大号ý 大号ö ģ 小号P Ç ë PPOLYLOGSPACEPP(PPOLYLOGSPACE)

(尼克类-为了纪念尼古拉斯·皮彭格(Nicholas Pippenger),第一个在1979年对其进行鉴定和表征)是可以在对数时间(即时间复杂度 O l o g n ķ与处理器的数目的多项式(即,通过有界 Ó ˚F ñ 对于某些多项式函数 ˚F其中 ñ是问题的规模)的并行计算论文意味着 ñ ç P P öNCO((logn)k))O(f(n))fnNC(PPOLYLOGSPACE)

然而,不幸的是,根据定义,还包括许多不能有效并行化的问题。最臭名昭著的例子是并行二进制搜索。麻烦的是,即使对于p = 1 ,此问题也具有对数时间复杂性。在最坏的情况下,任何需要最多对数时间的顺序算法都在N C中,无论其并行可行性如何!NCpNC

现在,我们终于可以解释为什么问题是最难并行化的问题。给定一个P完全问题Q,就不可能有一个有效的并行算法:如果这样的并行算法以时间复杂度O l o g n k)存在,那么并行计算论点就意味着存在对于同一问题,具有空间复杂度O l o g n k '的顺序算法的有效性。由于QPPPQO((logn)k)O((logn)k)QP-complete问题这反过来将意味着,在每一个问题可以在聚日志空间来解决:P P ö 大号ý 大号ö ģ 小号P Ç ë = P。正如你已经知道,我们反而认为,P P Ø 大号Ÿ 大号Ø 小号P Ç é P,尽管我们还没有能够证明这一点。P(PPOLYLOGSPACE)=P(PPOLYLOGSPACE)P

最后一项关于多项式处理器要求的观察。好吧,这是一个理论上的陈述。在实践中:增长速度超过问题大小的处理器需求可能实际上没有用。


10

因为“高效的并行”落入内部NC(“尼克的类”的在polylogarithmic时间与处理器的数目的多项式可判定的问题),并且它被广泛认为NCP。因此,任何问题不认为有一个有效的并行算法(因为这将意味着P = Ñ Ç)。P-completeP=NC

当然,所有这一切都是达猜想,你也知道它是一个开放的问题,P是不是在第一级ñ Ç,即我们不知道,如果ň c ^ 1PNCPPNCNC1P

甚至更多,我们甚至不知道是否可以不能解决问题Ç 0 [ 6 ],即恒定的深度(=恒定并行时)布尔带电路PAC0[6]登机口。mod6

有关更多信息,请阅读以下书籍:

Raymond Greenlaw,H。James Hoover,Walter L. Ruzzo,“ 并行计算的局限性:P-完全性理论 ”,1995年。


NC还包含许多无法有效并行化的问题。有关详细信息,请参见我的答案。
Massimo Cafaro

你可能想明确地说,“如果有任何问题是ň Ç然后ň C ^ = P ”。P-completeNCNC=P
亚历克斯(Alex)10 Brink 2012年

1
@unforgiven,关于哪个类正确捕获“有效的并行”算法有各种意见,因此我使用了一个被视为上限的类。我认为P vs. NC是人们认为P完全问题没有有效的并行算法的典型原因,尽管您的答案中有一些有趣的细节。我添加了对我的答案的引用。
卡韦

1
@Kaveh,我同意你的看法。大多数人正是从这些角度考虑这一点。这就是为什么我想基于并行计算论提出一个稍微不同的观点。您提供的参考非常出色,实际上代表了我所读过的主题的最佳治疗方法。
Massimo Cafaro 2012年

6

Kaveh的答案涵盖了“并行性”的通常定义,即NC。P NC 是否是复杂性理论中较难的问题之一(在某些方面与P < NP问题同样相关)。<<

其背后的直觉是,P中的某些问题(例如线性编程或DFS顺序)感觉到它们具有大量依赖关系,从而导致无法并行化的较长“关键路径”。这似乎只是非确定性似乎很强大的证明,但这是基本思想。

编辑:为了澄清评论,此答案的目的是要说明为什么(某些)人不认为P和NC相同。与P和NP一样,没人知道如何证明两者是否不同,但是有些(某些)计算机科学家认为存在一些棘手的问题。

Another aside is that NC is "polylog time on polynomially many processors", which is asking for a very dramatic speedup but giving a lot of processors. Thus it might not fit a practical notion of parallelizable.

In particular, if you think that P < NP, then you will start looking at heuristics and approximation algorithms right away for NP-complete problems. On the other hand, even if you think that NC is smaller than P, you might be able to get non-trivial speedups from the kinds of parallelism available from today's computers.


您给出的直觉是不正确的,一个人无法将一种特定的算法转换为高效的并行算法这一事实并不意味着该问题无法在高效的并行时间内得到解决。有人可能说过类似的说法主要不是在因为您必须测试很多数字,而且似乎大多数数字都不相关,但是据我们所知这是错误的,素数在P中PP
卡韦

但是路易斯的观点应该被认为是直觉,并不是完全错误的。什么是有问题的,虽然是DFS的是P-完整性是非常脆弱的-你需要lexicographics DFS和它也是在RNC等等等等
苏雷什

@Suresh:是的。我的意思是,我不知道如何证明该词。不能以确定性的方式模拟DFS,而不是仅仅这样做,但是人们不会“感觉”到没有随机性就可以做到。(如果重要的话,我的“宗教信仰”是很多随机性都有一定的影响力。)
路易(Louis

@Kaveh:这个“关键路径”(也称为“工作深度”)不是算法的功能,而是问题的所在;这就是为什么很难显示。这是最长的“工作小贴士”序列,已按顺序(通过任何算法)进行了研究。
拉斐尔

@Raphael, given a language there is no known reason why an algorithm solving it should follow a particular sequence of steps, if you could show that it would imply a lowerbound which we don't have. And this is one of the reasons why proving lowerbounds is so difficult, you can't assume anything about how computation of an algorithm solving the problem will look like. That is my point.
Kaveh

3

Be very mindful of who takes "efficient parallel algorithms" to mean what, exactly.

O(f(n))O(g(n))

特别是,通常命名为NC

在具有多项式处理器数量的并行计算机上,可以通过对数时间确定的一组决策问题。

这与是否存在针对这些问题的并行算法无关,这些并行算法在更实际的意义上是有效的¹:

  • 如果您有NC算法 不会获得有关如何在处理器数量固定的任何计算机上(有效)解决问题的信息
  • 仅仅因为没有解决问题的NC算法,并不意味着就没有“真正的”算法。仅仅因为我们不能将问题分解成多项式的非常小的片段,并不意味着我们就不能将其分解成许多足够小的片段,就像ñ 成长。

    例如,在不断有共享内存的许多处理器上,CYK解析可以与渐近最佳加速并行进行(请参阅我的硕士论文,即使上下文无关的解析是P完全的。

以有用的方式描述在处理器数量有限的机器上的效率需要比以下方法更精确的分析 O() since speed-up is bounded by a finite constant, the number of processors². You rarely find this in complexity theory. Therefore, if you want to learn about parallel algorithms that are of use in the real world, I would advise to look elsewhere.


  1. Let Tp:NR0 the runtime function of a parallel algorithm. You might want to call an algorithm "efficient" if T1(n)/Tp(n)p, or if T1(n)T(n) for T the runtime function of a good sequential algorithm. I propose this in a more rigorous fashion in my master thesis, building from literature cited therein.

  2. This is not always true; memory hierarchy and hardware may allow for larger speedup, at least sometimes. There will be another constant bound, though.


0

Suppose tomorrow someone discovered a proof that P = NC. What would the consequences for computer science research and practical applications be in this case?

That question was marked as duplicate this question, so let me just assume that it is really a duplicate, and provide one possible answer.

We know that NC != PSPACE, hence a proof that P=NC would also prove P != PSPACE. That may not sound like a big deal, but it is one consequence for computer science research.

Why do we know NC != PSPACE? Well, we know NCk ⊆ DSPACE(O(logk)), so we can just use the space hierarchy theorem.


In term of practical applications, the applications around linear (and convex) programming might be so seducing that custom parallel architectures together with compilers for translating linear programming formulations efficiently to that hardware could be developed and sold.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.