Verteilte Algorithmen

Werbung
Prof. Dr. Walter Vogler
SS 2009
Blatt 4
Verteilte Algorithmen
Wir empfehlen:
Implementieren Sie die Verfahren der Vorlesung und Ihre eigenen
Entwicklungen in DisPro!
(Eignet sich auch, um Fragen zu Nachrichtenzahlen zu untersuchen.)
Aufgabe 1 (4 Punkte)
FloodMax sendet |E| diam ∈ O(n3) Nachrichten. Geben Sie für unendlich viele n einen Graphen
und eine Verteilung von UIDs an, so daß FloodMax bzw. OptFloodMax Θ(n3) Nachrichten sendet
(mit kurzer Begründung) oder zeigen Sie, daß solch eine Familie von Beispielen für FloodMax
bzw. OptFloodMax nicht existiert.
Überlegen Sie dazu: Wie sieht ein Graph mit möglichst vielen Kanten aus, wie einer mit möglichst
großem Durchmesser? Lässt sich das kombinieren oder nicht?
Aufgabe 2
Geben Sie informell eine Variation von TimeSlice an, die bei größenordnungsmäßig gleichem
Aufwand auch für variable Starts funktioniert. Begründen Sie kurz die Korrektheit und bestimmen
Sie den Aufwand nicht nur größenordnungsmäßig.
Eine Idee ist es, mit O(n) Nachrichten zu erreichen, dass die Aufwachzeiten nicht zu weit
auseinander liegen.
Aufgabe 3
SynchGHS arbeitet korrekt, wenn die Kantengewichte des gegebenen Graphen verschieden sind. In
der Vorlesung wurde vage argumentiert, daß man bei gleichen Kantengewichten eine „tie-break“Information hinzufügen kann und SynchGHS damit zu einem korrekten Ergebnis kommt, weil es
nur vergleichsbasiert arbeitet. Beweisen Sie dies!
Hinweis: Es gibt zumindest 2 Möglichkeiten:
a) Nutzen Sie den Vergleich zu einem konkreten sequentiellen vergleichsbasierten
Algorithmus. Überlegen Sie, warum ein sequentieller Algorithmus mit (bzw. trotz) „tiebreak“-Information korrekt arbeitet, und warum SynchGHS denselben Baum konstruiert.
b) Nehmen Sie an, dass die UIDs Zahlen sind, und definieren Sie die Addition für Tripel.
(Letztere benötigt man in der Definition eines MST!) Korrektheit von SynchGHS gilt aber
nur, wenn die Kantengewichte Zahlen sind; wie können wir die Korrektheit von SynchGHS
mit Tripel-Gewichten zeigen?
b.w.
Aufgabe 4 ( Punkte)
a) Jemand gibt Ihnen eine Lösung für das Coordinated-Attack-Problem für 2 Prozesse (also zwei
evtl. verschiedene Programme für Prozess 1 und Prozess 2) und gibt an, die Prozesse würden in
Runde r=4 entscheiden – so dass uns Abläufe nur bis Runde 4 interessieren. Wieviele
Verlustmuster gibt es für solche „endlichen Abläufe“? Wie viele solche „endlichen Abläufe“ gibt
es also?
Auf wie viele Abläufe beschränkt der Beweis zu Satz 5.1 die Betrachtung?
b) Der Beweis zu Satz 5.1 ist also im Prinzip ein sehr effizientes Verfahren, um eine Widerlegung
für angebliche Lösungen des Coordinated-Attack-Problems zu finden. Wenden Sie dies Verfahren
auf den folgenden Lösungsvorschlag an; in anderen Worten: Finden Sie den 1. Ablauf, der im
Beweis zu Satz 5.1 betrachtet wird und bei dem der Vorschlag scheitert! (Was passiert bei diesem
Ablauf?)
Sende in Runde 1 eigenen init-Wert; sende in Runde 2 den zuvor empfangenen Wert als
Bestätigung (also 0,1 oder *). Entscheide in Runde 2 auf 1, wenn eigener init-Wert und beide
empfangenen Werte 1 sind (Idee: beide Prozesse haben init-Wert 1 und haben das auch erfolgreich
kommuniziert), auf 0 sonst.
Herunterladen