我最近在阅读有关检查双相似性的算法,并了解到问题是P-complete的。此外,其结果是该问题或任何P完全问题不太可能具有有效的并行算法。
最后的陈述背后的直觉是什么?
我最近在阅读有关检查双相似性的算法,并了解到问题是P-complete的。此外,其结果是该问题或任何P完全问题不太可能具有有效的并行算法。
最后的陈述背后的直觉是什么?
Answers:
任何问题都不太可能具有有效的并行算法。为什么呢
的存在 -complete问题是最重要的线索。那么问题是,为什么这个猜想与并行计算有关?让我们从计算中使用的资源开始。对于顺序计算:时间和空间;对于并行计算:时间和硬件(处理器数量)。有关系吗?是! 顺序空间↔并行时间;顺序时间↔并行硬件。顺序空间和并行时间之间的对应关系似乎与所采用的并行计算模型无关。这导致了以下未经证实的所谓并行计算论点。
(钱德拉和斯托克迈尔)可以在时间T (n )= O (S (n )O (1 ))的并行计算模型中模拟具有空间复杂度的TM的每个计算,以及并行计算的每个计算具有时间复杂度T '(n )O的模型可以通过空间复杂度S '(n )= O (T '(n )O。
类的问题在多项式空间顺序可解是和该组的在多项式时间内可解决的问题是P。由于P 小号P 甲Ç é被认为是一个更大的类的比问题P,本文量化通过并行实现的有效改进。本文的结果是,PRAM可以在多项式时间内解决N P-完全问题……不幸的是,没有!并行计算理论表明,我们实际上可以处理属于P S P A C E的问题…但这需要成倍数量的处理器!时空权衡正在起作用:顺序计算模型上的指数时间被转换为并行计算模型上处理器的指数数量,而顺序计算模型上的多项式空间被转换为并行计算模型上的多项式时间计算模型。
这种权衡比较容易理解,如果我们试图限制这两个平行的时间和并行硬件:如果并行计算模型具有处理器的多项式数,那么类的问题可以解决并行多项式时间是。如果将处理器的数量限制为多项式,则可以提高顺序机的性能,但最多只能提高多项式因数。因此,我们可以减少表示时间复杂度的多项式的次数,但是我们无法使用并行性将指数成本降低为多项式成本。
与多项式时间复杂度并行解决的问题是属于那些问题。对处理器数量的多项式约束导致了等效于TM的并行计算模型。有两个重要的实际考虑因素:哪个处理器可以接受/负担得起的多项式数量?实际上,处理器的多项式数是线性的或近似的。哪个次多项式时间可以实现?事实证明,几乎所有高度并行的可行问题都可以实现多对数并行时间。并行地,在输入长度上为对数的时间复杂度表示有效的并行计算。如果在给定处理器多项式的情况下,其时间复杂度是对数的,则并行算法被认为是有效的。
给定一个问题其中ķ和ħ为常数,并行计算论文意味着并行算法的存在对于[R与时间复杂度O ((l o g n )k ')其中k '是一个常数。顺序时间和并行时间之间的比较允许将分类为高度可并行化的问题(从时间角度来看)。
从并行计算理论出发,可以得出是高度可并行化的问题。P ø 大号ÿ 大号ö ģ 小号P 甲Ç é不包含完整的问题是关于对数空间的减少; 这意味着P O L Y L O G S P A C E ≠ P。看起来
包含可在多项式时间内使用polylogarithmic空间来解决的问题。P -complete问题可能属于 P - (P ∩ P ø 大号ý 大号ö ģ 小号P 甲Ç ë )。
(尼克类-为了纪念尼古拉斯·皮彭格(Nicholas Pippenger),第一个在1979年对其进行鉴定和表征)是可以在对数时间(即时间复杂度 O ((l o g n )ķ))与处理器的数目的多项式(即,通过有界 Ó (˚F (ñ ))对于某些多项式函数 ˚F其中 ñ是问题的规模)的并行计算论文意味着 ñ ç ⊂ (P ∩ P ö。
然而,不幸的是,根据定义,还包括许多不能有效并行化的问题。最臭名昭著的例子是并行二进制搜索。麻烦的是,即使对于p = 1 ,此问题也具有对数时间复杂性。在最坏的情况下,任何需要最多对数时间的顺序算法都在N C中,无论其并行可行性如何!
现在,我们终于可以解释为什么问题是最难并行化的问题。给定一个P完全问题Q,就不可能有一个有效的并行算法:如果这样的并行算法以时间复杂度O ((l o g n )k)存在,那么并行计算论点就意味着存在对于同一问题,具有空间复杂度O ((l o g n )k ')的顺序算法的有效性。由于Q是P-complete问题这反过来将意味着,在每一个问题可以在聚日志空间来解决:(P ∩ P ö 大号ý 大号ö ģ 小号P 甲Ç ë )= P。正如你已经知道,我们反而认为,(P ∩ P Ø 大号Ÿ 大号Ø 摹小号P 一Ç é )⊂ P,尽管我们还没有能够证明这一点。
最后一项关于多项式处理器要求的观察。好吧,这是一个理论上的陈述。在实践中:增长速度超过问题大小的处理器需求可能实际上没有用。
因为“高效的并行”落入内部(“尼克的类”的在polylogarithmic时间与处理器的数目的多项式可判定的问题),并且它被广泛认为该。因此,任何问题不认为有一个有效的并行算法(因为这将意味着P = Ñ Ç)。
当然,所有这一切都是达猜想,你也知道它是一个开放的问题,P是不是在第一级ñ Ç,即我们不知道,如果ň c ^ 1 ≠ P。
甚至更多,我们甚至不知道是否可以不能解决问题在甲Ç 0 [ 6 ],即恒定的深度(=恒定并行时)布尔带电路登机口。
有关更多信息,请阅读以下书籍:
Raymond Greenlaw,H。James Hoover,Walter L. Ruzzo,“ 并行计算的局限性:P-完全性理论 ”,1995年。
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.
Be very mindful of who takes "efficient parallel algorithms" to mean what, exactly.
在具有多项式处理器数量的并行计算机上,可以通过对数时间确定的一组决策问题。
这与是否存在针对这些问题的并行算法无关,这些并行算法在更实际的意义上是有效的¹:
仅仅因为没有解决问题的NC算法,并不意味着就没有“真正的”算法。仅仅因为我们不能将问题分解成多项式的非常小的片段,并不意味着我们就不能将其分解成许多足够小的片段,就像 成长。
例如,在不断有共享内存的许多处理器上,CYK解析可以与渐近最佳加速并行进行(请参阅我的硕士论文,即使上下文无关的解析是P完全的。
以有用的方式描述在处理器数量有限的机器上的效率需要比以下方法更精确的分析 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.
Let the runtime function of a parallel algorithm. You might want to call an algorithm "efficient" if , or if for 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.
This is not always true; memory hierarchy and hardware may allow for larger speedup, at least sometimes. There will be another constant bound, though.
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.