Warum konnten wir keine einheitliche Komplexitätstheorie für verteiltes Rechnen entwickeln?


41

Das Gebiet des verteilten Rechnens ist bei der Entwicklung einer einzelnen mathematischen Theorie zur Beschreibung verteilter Algorithmen völlig unzulänglich. Es gibt verschiedene Modelle und Frameworks für verteilte Berechnungen, die einfach nicht miteinander kompatibel sind. Die bloße Explosion variierender zeitlicher Eigenschaften (Asynchronität, Synchronität, Teilsynchronität), verschiedener Kommunikationsprimitiven (Nachrichtenübergabe vs. gemeinsamer Speicher, Broadcast vs. Unicast), multipler Fehlermodelle (Fail-Stop, Crash-Recovery, Sendeauslassung, byzantinisch usw.) on) hat uns eine unlösbare Anzahl von Systemmodellen, Frameworks und Methoden hinterlassen, die es uns erschwert, unlösbar und manchmal unmöglich gemacht haben, relative Lösbarkeitsergebnisse und Untergrenzen über diese Modelle und Frameworks hinweg zu vergleichen.

Meine Frage ist ganz einfach, warum ist das so? Was ist an verteiltem Rechnen so grundlegend anders (als an sequenziellem Rechnen), dass wir die Forschung nicht zu einer einheitlichen Theorie des verteilten Rechnens zusammenfassen konnten? Beim sequentiellen Rechnen wurden Turing Machines, Recursive Functions und Lambda Calculus als gleichwertig eingestuft. War dies nur ein Glücksfall oder haben wir wirklich gute Arbeit geleistet, um sequentielles Computing auf eine Weise zu verkapseln, die mit verteiltem Computing erst noch erreicht werden kann?

Mit anderen Worten, ist verteiltes Rechnen von Natur aus einer eleganten Theorie nicht gewachsen (und wenn ja, wie und warum?), Oder sind wir einfach nicht schlau genug, um eine solche Theorie zu entdecken?

Die einzige Referenz, die ich finden konnte, um dieses Problem anzugehen, ist: " Bewertung von zwei Jahrzehnten verteilter Computertheorieforschung " von Fischer und Merritt DOI: 10.1007 / s00446-003-0096-6

Hinweise oder Ausstellungen wären sehr hilfreich.

Antworten:


26

Meiner Meinung nach war das abstrakt motivierte Berechnungsmodell der Turing-Maschine bis vor kurzem eine gute Annäherung an die Technologie, wohingegen Modelle des verteilten Rechnens von Anfang an von der realen Welt motiviert wurden, die immer chaotischer ist als Abstraktionen.

Von z. B. 1940-1995 an "verschworen" sich die Größe von Probleminstanzen, die relative "Unbedeutung" von Parallelität und Nebenläufigkeit und die Makroskala von Computergeräten, um Turing-Maschinen eine hervorragende Annäherung an reale Computer zu erhalten. Sobald Sie sich jedoch mit massiven Datensätzen, dem allgegenwärtigen Bedarf an Parallelität, Biologie durch die algorithmische Linse usw. befassen, ist es viel weniger klar, ob es ein "intuitives" Berechnungsmodell gibt. Vielleicht sind Probleme, die in einem Modell schwerwiegend sind, in einem anderen Modell nicht schwerwiegend, sondern weniger rechenintensiv. Daher glaube ich, dass die Komplexität von Mainstream-Rechnern endlich (!) Mit dem verteilten Rechnen Schritt hält, indem man anfängt, mehrere Modelle von Rechnern und Datenstrukturen zu betrachten, die durch reale Überlegungen motiviert sind.


7
Berücksichtigen Sie auch die Definitionsfragen der jeweiligen Felder. "Angenommen, Sie können perfekt rechnen. Was sind die Grenzen dessen, was Sie können und was nicht?" "Angenommen, Sie haben einen fehlerhaften Kanal, Prozessor oder einen Gegner. Wie können Sie mit diesen Hindernissen erfolgreich rechnen?" Die erste Frage führt eher zu "sauberen" Antworten. Das zweite ist eine Aufforderung, Unordnung zu wissenschaftlich zu hinterfragen.
Aaron Sterling

21

Ich werde dies aus der Perspektive klassischer Graphprobleme (oder Eingabe- / Ausgabeprobleme) beantworten: Wir haben ein Netzwerk, jeder Knoten erhält etwas als Eingabe und jeder Knoten muss etwas als Ausgabe produzieren. Ich vermute, dies kommt der Welt der traditionellen Rechenkomplexität am nächsten.

Ich bin sicher voreingenommen, aber ich denke , dass in dieser Einstellung, es ist eine einfache und ziemlich häufig verwendete Modell der verteilten Rechen: Synchron verteilte Algorithmen , mit der Definition , dass Zeit = Anzahl der synchronen Runden laufen . In der Terminologie von Peleg ist dies das LOKALE Modell.

Dieses Modell ist schön, da es nur sehr wenige "bewegliche Teile", keine Parameter usw. enthält. Dennoch ist es sehr konkret: Es ist sinnvoll zu sagen, dass die Laufzeit eines Algorithmus in diesem Modell genau 15 beträgt. Und Sie können bedingungslose, informationstheoretische Untergrenzen nachweisen: Aus dieser Perspektive ist die verteilte Komplexität vieler Grafikprobleme (z. B. Grafikfärbung) ziemlich gut verstanden.

Dieses Modell bietet auch einen einheitlichen Ansatz für viele Aspekte des verteilten Rechnens:

  • Message-Passing vs. Shared Memory, Broadcast vs. Unicast: In diesem Modell irrelevant.
  • α
  • Sie möchten einen Algorithmus für dynamische Netzwerke oder möchten Fehler beheben? Wenn Ihr synchroner Algorithmus deterministisch ist, können Sie damit einen selbststabilisierenden Algorithmus erstellen. Auch hier bleibt die zeitliche Komplexität im Wesentlichen unberührt.

Nun ist all dies in Ordnung, solange Sie Probleme untersuchen, die in dem Sinne "wirklich verteilt" sind, dass die Laufzeit Ihres Algorithmus kleiner als der Durchmesser des Graphen ist , dh, kein Knoten muss vollständige Informationen über die Struktur des Graphen haben Graph. Es gibt jedoch auch viele Probleme, die von Natur aus global sind: Der schnellste Algorithmus in diesem Modell hat eine Laufzeit, die im Durchmesser des Diagramms linear ist. Bei der Untersuchung dieser Probleme macht das obige Modell keinen Sinn mehr, und dann müssen wir auf etwas anderes zurückgreifen. Typischerweise beginnt man, auf die Gesamtzahl der im Netzwerk übertragenen Nachrichten oder Bits zu achten. Das ist ein Grund, warum wir verschiedene Modelle bekommen.


Dann haben wir natürlich das Problem, dass es sich bei der Distributed-Computing-Community tatsächlich um zwei verschiedene Communities handelt, die erstaunlich wenige Gemeinsamkeiten aufweisen . Wenn Sie alle Modelle aus zwei Communitys zusammenfassen, wird dies sicherlich etwas verwirrend aussehen. Meine Antwort oben bezieht sich nur auf eine Hälfte der Community. Ich vertraue darauf, dass andere die andere Hälfte besprechen.


Wenn ich das richtig verstehe, ist der Punkt, dass es eine elegante Theorie nur für synchrone Systeme gibt und nicht viel anderes. In Bezug auf andere als synchrone Systeme verbinden wir Probleme / Schwerpunkte aus zwei ansonsten unterschiedlichen Gemeinschaften, und dies wirft methodische Probleme bei der Entwicklung einer einzigen Theorie auf. Habe ich deine Argumente richtig verstanden?
Srikanth Sastry

Danke für die sehr informative Antwort. Ich würde dies als DIE Antwort akzeptieren.
Mohammad Al-Turkistany

5

Eine romantische Idee zur Erfassung verschiedener Modelle des verteilten Rechnens war die algebraische Topologie. Die Kernidee besteht darin, einfache Komplexe zu konstruieren, indem Punkte Prozesszustände sein lassen, die jeweils mit einer Prozess-ID gekennzeichnet sind. Dies ist eine Einführung in das Thema. Die naheliegendste Antwort auf Ihre Frage wurde wahrscheinlich von Eli Gafni in seinem Aufsatz "Distributed Computing - Ein Schimmer einer Theorie" angesprochen. In seiner Arbeit zeigt er Simulationen, wie mit asynchronem Shared Memory für zwei bis drei Prozessoren (für Fail Stop und Byzantine) begonnen werden kann. Er zeigt, wie dies auf das Message-Passing-Modell angewendet werden kann. Entscheidend für das Verständnis seiner Simulationen ist die topologische Betrachtung eines verteilten Rechners


4

Ich denke, die Situation sieht im Kontext ganz anders aus: Ausgehend von den frühen Arbeiten und den Unmöglichkeitsergebnissen des byzantinischen Abkommens ( PSL80 LSP82 FLP85)) war es bald klar, dass grundlegende Probleme im verteilten Rechnen nur mit strengen Synchronitätsannahmen und einem hohen Grad an Redundanz überhaupt gelöst werden können. Da diese unbedingten theoretischen Ressourcenuntergrenzen für alle praktischen Zwecke als nicht realisierbar angesehen wurden, konzentrierte sich die Forschung auf die Entwicklung verfeinerter Modelle, die einen immer feinkörnigeren Kompromiss zwischen Annahmen (zum Beispiel Zeitgarantien oder Ausfallmodi) und Garantien (dh Anzahl der Garantien) ermöglichten Gleichzeitige Fehler welcher Art auf welcher Art von Komponenten toleriert werden (z. B. Prozessoren, Links), um den Systementwicklern die Werkzeuge zu geben, um den richtigen Kompromiss für das jeweilige System zu finden.


Ich verstehe, dass die verfeinerten Modelle eingeführt wurden, um die "praktische" Lösbarkeit von Problemen im verteilten Raum zu verstehen. Man würde erwarten, dass sich diese feinkörnigen Modelle in Bezug auf Lösbarkeit, Zeitkomplexität und Nachrichtenkomplexität ordentlich in einer Hierarchie anordnen. Dies ist leider nicht der Fall. Meine Frage hier ist, was ist der Grund für diese Balkanisierung? Wenn es sich um einige Attribute handelt, die dem verteilten Computing inhärent sind, um welche handelt es sich dann?
Srikanth Sastry
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.