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.