Ich bin ein Masterstudent, der sich auf verteilte Systeme konzentriert, sich aber auch für theoretische Informatik interessiert. Ich habe mich gefragt, ob es eine formale Darstellung eines verteilten Systems auf einer Turingmaschine gibt. Ist es also möglich, das Konzept einer Turingmaschine zu erweitern (eine Variante zu erstellen), um die Vorteile des verteilten Rechnens zu nutzen?
Eine Idee ist, ein gemeinsames Band (ähnlich wie Tuple Space ) zwischen TM zu erstellen .
turing-machines
dc.distributed-comp
Marcos Roriz Junior
quelle
quelle
Antworten:
Diesbezüglich ist die Diskussion (siehe Link, den Jukka zu Kommentaren gepostet hat) der richtige Weg. Die Art und Weise, wie Sie ein verteiltes System formal darstellen würden, hängt weitgehend davon ab, wie Sie sie anzeigen, und dies hängt von "Ihren bevorzugten Systemannahmen" ab (dh den Annahmen zur Synchronität (dh dem relativen Zeitpunkt der Aktionen im verteilten System) System), zur Kommunikation (Nachrichtenübermittlung vs. gemeinsamer Speicher), zu Fehlern (von Prozessen und / oder Verbindungen, gutartig oder byzantinisch usw.). Da sich die Community in diesem Punkt nicht einig ist, gibt es auch keine Einigung über den grundlegenden Formalismus .
Ich denke, es ist durchaus möglich, aber niemand (von dem ich weiß) hat sich damit befasst. Was ich weiß, sind diese:
quelle
Vielleicht möchten Sie sich mit Pi-Calculus befassen.
http://en.wikipedia.org/wiki/%CE%A0-calculus
Es ist ein prozessbasierter Kalkül, der zum Nachdenken über verteilte Systeme entwickelt wurde.
quelle
Ich bin überrascht, dass Petri-Netze noch nicht erwähnt wurden! Erweiterungen von Petri-Netzen wie farbigen Petri-Netzen oder Petri-Netzen mit Inhibitor-Bögen sind Turing-vollständig.
quelle
( Warnung: etwas voreingenommene Ansichten, übermäßige Vereinfachungen und offensichtliche Verallgemeinerungen. )
Oft kann der Unterschied zwischen verteiltem und parallelem Rechnen wie folgt zusammengefasst werden:
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.X X
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.T T
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).
quelle
Einige argumentieren , dass je nach Standpunkt, Sie von verteilten Systemen als etwas einfiel mehr mächtiger als eine Turing - Maschine, wegen der unterschiedlichen Interpretationen der Beschränktheit von Nicht-Determinismus und Fairness. Dieser Link hat eine interessante Diskussion zum Thema. Herlihy / Shavit argumentieren in ihrem Buch "Die Kunst der Multiprozessor-Programmierung", dass die Berechenbarkeit von Turing von Natur aus auf den Begriff eines (sequentiellen) Algorithmus verweist und in gewissem Sinne nicht geeignet ist, über verteiltes Rechnen nachzudenken. Ich sollte erwähnen, dass dies fraglich und kontrovers ist, also hoffe ich, dass mir niemand Steine wirft, weil ich das sage.
quelle