Verteilte Algorithmen, die ausfallsicher sind, können entweder deterministisch oder probabilistisch sein. Nehmen wir zum Beispiel das Konsensproblem.
Paxos ist deterministisch in dem Sinne, dass es unter der Annahme, die es macht, immer funktioniert.
Im Gegensatz dazu funktioniert der randomisierte Konsens mit einer bestimmten Wahrscheinlichkeit.
Was ist der Vorteil beim Entwerfen und Verwenden eines deterministischen Algorithmus?
Die Annahmen, auf die sich deterministische Algorithmen stützen, haben auch eine Wahrscheinlichkeit, in der Realität zu bleiben (was als ihre Annahmenabdeckung bezeichnet wird ). Daher besteht immer die Wahrscheinlichkeit, dass ein deterministischer Algorithmus in der Realität nicht funktioniert.
Antworten:
Ich werde dies aus der Perspektive verteilter Graph-Algorithmen beantworten (verteilte Algorithmen, die ein Graph-Problem lösen, das mit der Struktur des Kommunikationsnetzwerks zusammenhängt).
Hier sind einige nicht offensichtliche Gründe für das Entwerfen deterministisch verteilter Algorithmen in dieser Einstellung:
Unterprogramme in randomisierten Algorithmen . Auf P. In den 12–13 dieser Folien beschreibt Elkin eine Algorithmus-Entwurfstechnik, bei der Sie einen schnell deterministischen verteilten Algorithmus als Unterprogramm verwenden können, um einen schnell randomisierten verteilten Algorithmus zu erstellen. Interessanterweise ist es nicht möglich, einen typischen randomisierten Algorithmus als Unterprogramm im selben Kontext zu verwenden (die Fehlerwahrscheinlichkeit wäre zu hoch).
Fehlertoleranz . Es gibt eine mechanische Übersetzung, mit der Sie einen schnell deterministischen verteilten Algorithmus in einen schnell selbststabilisierenden verteilten Algorithmus umwandeln können (siehe z. B. Abschnitt 2.4 dieser Umfrage ). Eine ähnliche Konvertierung ist für randomisierte Algorithmen nicht bekannt (und ich denke, dass dies im allgemeinen Fall unwahrscheinlich ist).
quelle