Ich habe kürzlich über Algorithmen zur Überprüfung der Bisimilarität gelesen und gelesen, dass das Problem P-vollständig ist . Darüber hinaus hat dies zur Folge, dass es unwahrscheinlich ist, dass dieses Problem oder ein beliebiges P-vollständiges Problem effiziente parallele Algorithmen aufweist.
Was ist die Intuition hinter dieser letzten Aussage?
complexity-theory
parallel-computing
Dave Clarke
quelle
quelle
Antworten:
Alles -komplette Problem ist unwahrscheinlich , dass ein effizienten parallelen Algorithmus haben. Warum ?P
Die Existenz von vollständigen Problemen ist der wichtigste Hinweis darauf, dass ( P ∩ P O L Y L O G S P A C E ) ≠ PP (P∩POLYLOGSPACE)≠P . Die Frage ist also, warum diese Vermutung für das parallele Rechnen relevant ist. Beginnen wir mit den in einer Berechnung verwendeten Ressourcen. Für sequentielles Rechnen: Zeit und Raum; für paralleles Rechnen: Zeit und Hardware (Anzahl der Prozessoren). Gibt es eine Beziehung? Ja! Sequentieller Raum ↔ parallele Zeit; Sequenzielle Zeit ↔ parallele Hardware. Die Entsprechung zwischen sequentiellem Raum und paralleler Zeit scheint unabhängig von dem angewendeten parallelen Rechenmodell zu sein; dies führt zu der folgenden sogenannten parallelen rechentheorie, die nicht bewiesen ist.
(Chandra und Stockmeyer) Jede Berechnung eines TM mit Raumkomplexität kann in einem Parallelrechenmodell in der Zeit T ( n ) = O ( S ( n ) O ( 1 ) ) und jede Berechnung eines Parallelrechnens simuliert werden Modell mit Zeitkomplexität T ' ( n ) kann durch ein TM mit Raumkomplexität S ' ( n ) = O ( T ' ( n ) O simuliert werdenS(n) T(n)=O(S(n)O(1)) T′( n ) .S′( n ) = O ( T′( n )O ( 1 ))
Die Klasse der im Polynomraum sequentiell lösbaren Probleme ist und die Menge der in der Polynomzeit lösbaren Probleme ist P. Da P S P A C E als viel größere Klasse von Problemen angesehen wird als P , die These quantifiziert die effektive Verbesserung, die durch Parallelität ermöglicht wird. Eine Konsequenz dieser These ist, dass ein PRAM N P -komplette Probleme in der Polynomzeit lösen kann … Leider nein! Die parallele Rechnerthese impliziert, dass wir uns tatsächlich mit Problemen befassen können, die zu P S P A C E gehörenPSPA CE P PSPA CE P NP PSPA CE … Aber das erfordert eine exponentielle Anzahl von Prozessoren! Ein Zeit-Raum-Kompromiss funktioniert: Die Exponentialzeit im sequentiellen Rechenmodell wird im parallelen Rechenmodell in eine exponentielle Anzahl von Prozessoren umgewandelt, während der Polynomraum im sequentiellen Rechenmodell in eine Polynomzeit im parallelen Rechenmodell umgewandelt wird Rechenmodell.
Dieser Kompromiß ist leichter zu verstehen , wenn wir beide parallel Zeit und parallel Hardware zu beschränken versuchen: Wenn das parallele Rechenmodell eine Polynom Anzahl der Prozessoren hat, dann ist die Klasse von Problemen parallel Polynomzeit auflösbar ist . Wenn wir die Anzahl der Prozessoren auf ein Polynom beschränken, können wir die Leistung einer sequentiellen Maschine verbessern, jedoch nicht mehr als einen Polynomfaktor. Auf diese Weise können wir den Grad des Polynoms reduzieren, der die zeitliche Komplexität darstellt, aber wir können Parallelität nicht verwenden, um exponentielle Kosten auf Polynomkosten zu reduzieren.P
Die Probleme, die parallel zur polynomiellen Zeitkomplexität gelöst werden, sind die Probleme, die zu . Die polynomielle Beschränkung auf die Anzahl der Prozessoren führt zu einem parallelen Rechenmodell, das TM entspricht. Es gibt zwei wichtige praktische Überlegungen: Welche polynomiale Anzahl von Prozessoren ist akzeptabel / erschwinglich? In der Praxis soll die Polynomzahl der Prozessoren linear oder nahe sein. Welche subpolynomiale Zeit ist erreichbar? Es stellte sich heraus, dass fast alle hochparallelen möglichen Probleme eine polylogarithmische Parallelzeit erreichen können. Parallel dazu repräsentiert eine Zeitkomplexität, die in der Eingangslänge logarithmisch ist, eine effiziente parallele Berechnung. Ein paralleler Algorithmus wird als effizient angesehen, wenn seine zeitliche Komplexität bei einer gegebenen polynomiellen Anzahl von Prozessoren polylogarithmisch ist.P
Bei einem Problem , wobei k und h Konstanten sind, die parallele Berechnung Arbeit wird die Existenz eines parallelen Algorithmus impliziert für R mit Zeitkomplexität O ( ( l o g n ) k ' ) wobei k 'R ∈ TichME_ SPA CETM( nk, ( l o gn )h) k h R O ( ( l o gn )k′) k′ ist eine Konstante. Der Vergleich zwischen sequentieller und paralleler Zeit erlaubt es, als ein Problem zu klassifizieren, das (aus zeitlicher Sicht) stark parallelisierbar ist.R
Aus der parallelen Berechnung These, folgt, dass die Klasse von Problemen höchst parallelisierbaren ist. P O L Y L O G S P A C E enthält keine Probleme in Bezug auf die Reduzierung des Speicherplatzes; Dies bedeutet , P O L Y L A G S P A C E ≠ P . Es scheint, dassPO L YL O G SPA CE PO L YL O G SPA CE PO L YL O G SPA CE≠ P
enthält die Probleme, die in der Polynomzeit unter Verwendung des polylogarithmischen Raums gelöst werden können. P- vollständige Probleme gehören wahrscheinlich zu P - ( P ∩ P O L Y L O G S P A C E ) .P∩ PO L YL O G SPA CE P P- ( P∩ PO L YL O G SPA CE)
(Nicks Klasse - so genannt zu Ehren von Nicholas Pippenger, der es 1979 als erster identifizierte und charakterisierte) ist die Klasse von Problemen, die in polylogarithmischer Zeit (dh mit Zeitkomplexität O ( ( l o g n ) k ) ) mit einer Polynomzahl von Prozessoren (dh, begrenzt durch O ( f ( n ) ) für eine Polynomfunktion f, wobei n die Problemgröße ist) Die parallele Berechnungsarbeit impliziert N C ⊂ ( P ∩ P ONC O ( ( l o gn )k) ) O ( f( n ) ) f n .NC⊂ ( P∩ PO L YL O G SPA CE)
Doch leider definitions enthält auch eine Menge Probleme , die sind nicht effizient parallelizable. Das berüchtigtste Beispiel ist die parallele binäre Suche . Das Problem ist , dass dieses Problem polylogarithmischen Zeitkomplexität auch für hat p = 1. Jeder sequentiellen Algorithmus höchstens logarithmische Zeit im schlimmsten Fall erfordert , ist in N C unabhängig von ihrer parallelen Machbarkeit!NC p NC
Nun können wir endlich erklären, warum vollständige Probleme die am schwersten parallelisierbaren Probleme sind. Bei einem P- vollständigen Problem Q ist es sehr unwahrscheinlich, dass ein effizienter Parallelalgorithmus existiert: Wenn ein solcher Parallelalgorithmus mit der Zeitkomplexität O ( ( l o g n ) k ) existieren würde , würde die parallele Berechnungsthese die Existenz implizieren eines sequentiellen Algorithmus mit Raumkomplexität O ( ( l o g n ) k ' ) für das gleiche Problem. Da Q ein P istP P Q. O ( ( l o gn )k) O ( ( l o gn )k′) Q. P -komplette Problem Dies wiederum impliziert wird , dass jedes Problem in in Poly-log Raum gelöst werden können: ( P ∩ P O L Y L A G S P A C E ) = P . Wie Sie bereits wissen, glauben wir stattdessen, dass ( P ∩ P O L Y L O G S P A C E ) ⊂ P , obwohl wir dies noch nicht beweisen können.P ( S.∩ PO L YL O G SPA CE) = P ( S.∩ PO L YL O G SPA CE) ⊂ P
Eine letzte Bemerkung zur Polynomprozessoranforderung. Nun, das ist eine theoretische Aussage. In der Praxis: Eine Prozessoranforderung, die schneller als die Problemgröße wächst, ist möglicherweise nicht wirklich nützlich.
quelle
Weil "effiziente Parallele" inNC fällt ("Nicks Klasse" von Problemen, die in polylogarithmischer Zeit mit einer polynomiellen Anzahl von Prozessoren entscheidbar sind), und es wird allgemein angenommen, dass NC≠P . Es wird also nicht angenommen , dass ein Problem einen effizienten parallelen Algorithmus aufweist (da dies implizieren würde, dass P = N C ist ).P-complete P=NC
Natürlich liegt all dies in der Annahme, dass , da Sie wissen, dass es ein offenes Problem ist, dass P nicht in der ersten Ebene von N C liegt , dh wir wissen nicht , ob N C 1 ≠ P ist .NC≠P P NC NC1≠P
Außerdem wissen wir nicht einmal, ob Sie Probleme in in A C 0 [ 6 ] , dh boolesche Schaltungen mit konstanter Tiefe (= konstante Parallelzeit), nicht lösen könnenP AC0[6] Tore.mod6
Weitere Informationen finden Sie in folgendem Buch:
Raymond Greenlaw, H. James Hoover, Walter L. Ruzzo, " Grenzen der parallelen Berechnung: P-Vollständigkeitstheorie ", 1995.
quelle
Kavehs Antwort deckt die übliche Definition von "Parallelität" ab, die NC ist. Die Frage, ob P< NC ist eine der schwierigeren Fragen in der Komplexitätstheorie (und in gewisser Weise genauso relevant wie die P < NP-Frage).
Die Intuition dahinter ist, dass einige Probleme in P, wie die lineare Programmierung oder die DFS-Reihenfolge, das Gefühl haben, viele Abhängigkeiten zu haben, die einen langen "kritischen Pfad" erzwingen, der nicht parallelisiert werden kann. Dies ist kein Beweis mehr als der Nicht-Determinismus, der sehr mächtig zu sein scheint, aber dies ist die Grundidee.
Bearbeiten: Um die Kommentare zu verdeutlichen, ist der Sinn dieser Antwort zu sagen, warum (einige) Leute nicht denken, dass P und NC gleich sind. Ähnlich wie bei P und NP weiß niemand, wie man beweist, ob sich die beiden unterscheiden, aber es gibt etwas an den schwierigen Problemen, die (einige) Informatiker glauben machen, dass sie es sind.
Eine andere Tatsache ist, dass NC "polylog time on polynomially many processors" ist, was nach einer sehr dramatischen Beschleunigung verlangt, aber eine Menge Prozessoren liefert. Daher passt es möglicherweise nicht zu einem praktischen Begriff von parallelisierbar.
Insbesondere, wenn Sie denken, dass P< NP, dann werden Sie sofort beginnen, sich mit Heuristiken und Approximationsalgorithmen für NP-vollständige Probleme zu befassen. Auf der anderen Seite können Sie, selbst wenn Sie glauben, dass NC kleiner als P ist, nicht-triviale Beschleunigungen durch die Parallelität erzielen, die auf heutigen Computern verfügbar ist.
quelle
Denken Sie genau daran, wer genau unter "effizienten parallelen Algorithmen" versteht, was zu verstehen ist.
Die älteren Antworten erklären die Perspektive der Komplexitätstheorie. Dort bedeutet "effizient" normalerweise etwas Unbestimmtes wie "Laufzeit in"O ( f( n ) ) Zeit mit O ( g( n ) ) Prozessoren ". Beachten Sie, dass die Anzahl der Prozessoren von der Eingangsgröße abhängen kann!
Insbesondere die häufig benannte Klasse NC ist die
Dies hat nichts damit zu tun, ob es für diese Probleme parallele Algorithmen gibt, die in praktischerer Hinsicht effizienter sind¹:
Nur weil es keinen NC-Algorithmus für ein Problem gibt, heißt das nicht, dass es keinen "echten" gibt. Nur weil wir das Problem nicht in viele sehr kleine Teile zerlegen können, heißt das nicht, dass wir es nicht in ständig viele ausreichend kleine Teile zerlegen könnenn wächst.
Beispielsweise kann auf ständig vielen Prozessoren mit gemeinsamem Speicher das CYK-Parsen parallel zu einer asymptotisch optimalen Beschleunigung durchgeführt werden (siehe meine Masterarbeit , obwohl das kontextfreie Parsen P-vollständig ist).
Um die Effizienz von Maschinen mit endlich vielen Prozessoren sinnvoll beschreiben zu können, ist eine genauere Analyse erforderlich alsO ( … ) da die Beschleunigung durch eine endliche Konstante begrenzt ist, die Anzahl der Prozessoren². Sie finden dies selten in der Komplexitätstheorie. Wenn Sie sich mit parallelen Algorithmen auseinandersetzen möchten, die in der realen Welt von Nutzen sind, empfehle ich Ihnen, sich anderswo umzusehen.
LassenTp: N → R≥ 0 die Laufzeitfunktion eines parallelen Algorithmus. Vielleicht möchten Sie einen Algorithmus "effizient" nennen, wennT1( n ) / Tp( n ) ≈ p , oder wenn T1( n ) ≈ T( n ) zum T die Laufzeitfunktion eines guten sequentiellen Algorithmus. Ich schlage dies in meiner Masterarbeit strenger vor und baue dabei auf der darin zitierten Literatur auf.
Das ist nicht immer wahr; Speicherhierarchie und Hardware können, zumindest manchmal, eine höhere Geschwindigkeit ermöglichen. Es wird jedoch eine weitere konstante Grenze geben.
quelle
Diese Frage wurde als Duplikat dieser Frage markiert. Nehmen wir also an, dass es sich tatsächlich um ein Duplikat handelt, und geben Sie eine mögliche Antwort.
Wir wissen, dass NC! = PSPACE, daher ein Beweis, dass P = NC auch P! = PSPACE beweisen würde. Das klingt vielleicht nicht nach einer großen Sache, ist aber eine Konsequenz für die Informatikforschung.
Warum kennen wir NC! = PSPACE? Nun, wir kennen NC k ⊆ DSPACE (O (log k )), also können wir einfach den Satz der Raumhierarchie verwenden.
In Bezug auf praktische Anwendungen könnten die Anwendungen im Bereich der linearen (und konvexen) Programmierung so verführerisch sein, dass benutzerdefinierte parallele Architekturen zusammen mit Compilern zur effizienten Umsetzung linearer Programmierformulierungen auf diese Hardware entwickelt und verkauft werden könnten.
quelle