( Warnung: etwas voreingenommene Ansichten, übermäßige Vereinfachungen und offensichtliche Verallgemeinerungen. )
Oft kann der Unterschied zwischen verteiltem und parallelem Rechnen wie folgt zusammengefasst werden:
- Beim verteilten Rechnen beziehen sich die primären Komplexitätsmaße auf die Kommunikation und den Informationsfluss : wie viele Kommunikationsrunden ("Zeit"); wie viele Bits übertragen.
- Beim parallelen Rechnen beziehen sich die primären Komplexitätsmaße auf die Berechnung und Informationsverarbeitung : wie viele Elementarschritte ("Zeit"); wie viele Bits gespeichert.
Wenn Sie diese Perspektive einnehmen, stellt sich häufig heraus, dass es für die Modellierung verteilter Systeme nicht wirklich darauf ankommt, über welche Rechenleistung Ihre Knoten (oder Prozessoren oder Computer) verfügen.
In der Regel können Sie einfach davon ausgehen, dass jeder Knoten nur eine Zustandsmaschine ist (häufig reicht es aus, eine relativ kleine Anzahl möglicher Zustände wie ). Das Gerät ändert seinen Status basierend auf den empfangenen Nachrichten. Normalerweise interessiert es Sie nicht so sehr, wie die Maschine ihren Zustand ändert. Es könnte eine Turing-Maschine sein, aber das ist nicht wirklich so relevant.O(n)
Wenn Sie beispielsweise ein (vernünftiges) Diagrammproblem und die verteilte Komplexität der Lösung von (z. B. die Anzahl der zur Lösung erforderlichen Kommunikationsrunden), wirkt sich die Art und Weise, wie Sie die Berechnung an jedem Knoten modellieren, normalerweise nicht auf die Antwort aus. Wenn Sie es zuerst mit Turing-Maschinen analysieren und dann ein beliebig mächtiges Orakel annehmen, ist die Antwort normalerweise dieselbe. Sie können uneinheitliche Ratschläge hinzufügen, die nichts ändern.X.XX
Der "Engpass" ist, dass Sie nicht schnell Informationen sammeln können. In Kommunikationsrunden kann jeder Knoten, unabhängig davon, was Sie tun, nur Informationen zu seiner eigenen Radius- Nachbarschaft haben. Sie könnten an jedem Knoten einen beliebig leistungsfähigen Prozessor haben, aber was nützt es, wenn die Prozessoren keine zu verarbeitenden Informationen haben!T.TT
Daher klingt es für mich etwas unnatürlich, Turing-Maschinen als Ausgangspunkt für die Modellierung verteilter Systeme zu verwenden: Wenn dies ein irrelevanter Aspekt ist, warum alles darauf aufbauen? Auf der anderen Seite wäre dies beim parallelen Rechnen natürlich (außer dass das Modell normalerweise so etwas wie PRAM anstelle von Turing-Maschinen ist).