Verteilte Algorithmen und Datenstrukturen Kapitel 6: Dynamische Netzwerke für Zusammenhang Christian Scheideler WS 2009.

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Christian Scheideler SS 2009
Grundlagen des A*-Algorithmus und Anwendung in der Routenplanung
Randomisierte Algorithmen für Verteilungsprobleme
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Eine dynamische Menge, die diese Operationen unterstützt,
Christian Schindelhauer
Kapitel 6: Klassifizierung von Sortiertechniken
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Algorithmen für Peer-to-Peer-Netzwerke Sommersemester Vorlesung.
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken IX Christian Schindelhauer
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken X Christian Schindelhauer
1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Algorithmen für Peer-to-Peer-Netzwerke Sommersemester Vorlesung.
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Seminar parallele Programmierung SS 2003
Christian Schindelhauer
1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Algorithmen für Peer-to-Peer-Netzwerke Sommersemester Vorlesung.
1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Algorithmen für Peer-to-Peer-Netzwerke Sommersemester Vorlesung.
Minimum Spanning Tree: MST
Christian Scheideler Institut für Informatik Universität Paderborn
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Effiziente Algorithmen
Effiziente Algorithmen
Christian Scheideler WS 2009
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt SS
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Verteilte Algorithmen und Datenstrukturen Kapitel 4: Caching Christian Scheideler Institut für Informatik Universität Paderborn.
Christian Scheideler Institut für Informatik Universität Paderborn
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Petrinetze 1. Einführung Informatik : wesentlich Modellierung von
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Peer-to-Peer- Netzwerke Christian Schindelhauer Sommersemester.
Peer-to-Peer-Netzwerke
Analyse der Laufzeit von Algorithmen
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken VIII Christian Schindelhauer
HEINZ NIXDORF INSTITUT Universität Paderborn Fakultät für Elektrotechnik, Informatik und Mathematik Algorithmische Probleme in Funknetzwerken XIII Klaus.
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik Algorithmische Probleme in Funknetzwerken VI Christian Schindelhauer
Gliederung der Vorlesung
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren.
Einführung in die Informationsverarbeitung Teil Thaller Stunde V: Wege und warum man sie geht Graphen. Köln 14. Januar 2016.
 Präsentation transkript:

Verteilte Algorithmen und Datenstrukturen Kapitel 6: Dynamische Netzwerke für Zusammenhang Christian Scheideler WS 2009

Übersicht Dynamische Netzwerke Selbststabilisierende Netzwerke Selbststabilisierende Clique Selbststabilisierende Liste Zufällige Graphen

Dynamische Netzwerke Jedes universelle verteilte System basiert auf einem physikalischen oder logischen Netzwerk, das prinzipiell den Austausch von Informationen zwischen beliebigen zwei Teilnehmern (auf direktem oder indirektem Weg) erlaubt. Wir beschränken uns auf logische Netzwerke (auch Overlay Netzwerke genannt), die beliebige paarweise Verbindungen zwischen den Teilnehmern zulassen.

Dynamische Netzwerke In diesem Fall können die Netzwerke topologisch als gerichtete Graphen G=(V,E) modelliert werden. Kante (v,w) E: v kennt (und hat direkten Zugang zu) w. N(v) = { w V | (v,w) E }: Nachbarschaft von v. d(v) = |N(v)|: Grad von v.

Dynamische Netzwerke Problem: besonders in offenen verteilten Systemen (wie z.B. Peer-to-Peer Systemen) kann sich die Knotenmenge stark über die Zeit verändern. Wir brauchen also Mechanismen, die Knoten effektiv in ein Netzwerk integrieren oder aus einem Netzwerk entfernen können. Diese Mechanismen sollten robust gegenüber Ausfällen und gegnerischem Verhalten sein.

Dynamische Netzwerke Grundlegende Ereignisse/Operationen: Join(v,w): der neue Knoten v kontaktiert Knoten w (d.h. initiiert Kante (v,w) ), um in das Netzwerk integriert zu werden. Leave(v): Knoten v will das Netzwerk verlassen. Klassischer Ansatz: finde Protokolle für Join(v,w) und Leave(v) mit möglichst geringer Arbeit, Strukturveränderung und Laufzeit, so dass nach Bearbeitung jeder Operation das Netzwerk im gewünschten Zustand ist. Arbeit: Anzahl Botschaften Strukturveränderung: Anzahl veränderter Kanten Laufzeit: Anzahl Kommunikationsrunden (Annahme: alle Knoten arbeiten synchron) Probleme!

Dynamische Netzwerke Klassischer Ansatz: finde Protokolle für Join(v,w) und Leave(v) mit möglichst geringer Arbeit, Strukturveränderung und Laufzeit, so dass nach Bearbeitung jeder Operation das Netzwerk im gewünschten Zustand ist. Arbeit: Anzahl Botschaften Strukturveränderung: Anzahl veränderter Kanten Laufzeit: Anzahl Kommunikationsrunden (Annahme: alle Knoten arbeiten synchron) Probleme: Operationen müssen nebenläufig bearbeitet werden, was zu Konsistenzproblemen führen kann. Bei kontinuierlichen Operationen ist Netzwerk nie fertig. Fehler und gegnerisches Verhalten können Netzwerk in einen degenerierten Zustand überführen, aus dem es sich erholen muss.

Dynamische Netzwerke Idealerweise: Mechanismen, die das Netzwerk ständig reparieren/optimieren. Join(v,w): etabliere Kante (v,w). Den Rest macht das Netzwerk. Leave(v): entferne einfach v aus dem Netz. Solche Netzwerke nennt man auch selbstorganisierende Netzwerke

Dynamische Netzwerke Verschiedene Kategorien selbstorganisierender Netzwerke: Selbststabilisierende Netzwerke: Netzwerke, die von einem beliebigen Zustand mit schwachem Zusammenhang wieder zurück in einen legalen Zustand gelangen können (unter der Voraussetzung, dass während dieses Prozesses keine join oder leave Ereignisse stattfinden). Selbsterhaltende Netzwerke: Netzwerke, die (bis zu einer bestimmten Rate an join und leave Ereignissen) nie einen legalen Zustand verlassen. Selbstoptimierende Netzwerke: Netzwerke, die ihre Struktur optimal an eine Zielfunktion (die von Kantenkosten oder Anfragen in der Anwendungsebene abhängen mag) anpassen können. Hier Fokus auf selbststabilisierende Netzwerke.

Selbststabilisierende Netze Problem: finde geeignete lokale Regeln, so dass das Netz von jedem Zustand mit schwachem Zusammenhang in einen legalen Zustand zurückkehren kann. ungerichtet: beidseitig gerichtet

Selbststabilisierende Netze Knoten kennen nur den lokalen Zustand ihrer direkten Nachbarn. Nur folgende Netzwerk-Befehle: –u.insert(v,w): u kontaktiert Knoten v N(u), um eine Kante zu Knoten w N(u) aufzubauen –u.delete(v): u löscht Kante zu v u v w u v w

Selbststabilisierende Netze Annahmen für die Laufzeitanalyse: Die Zeit verläuft in synchronen Runden. In jeder Runde kann jeder Knoten v jeder Menge an Knoten w N(v) Botschaften schicken. Zeitaufwand pro Runde: –Rundenkomplexität: 1 –Kommunikationskomplexität: maximale Anzahl an Elementarbotschaften (z.B. Anzahl Adressen), die ein Knoten in der Runde aussenden oder empfangen muss.

Übersicht Dynamische Netzwerke Selbststabilisierende Netzwerke Selbststabilisierende Clique Selbststabilisierende Liste Zufällige Graphen

Selbststabilisierende Clique Definition 6.1: Ein vollständiger (gerichteter) Graph K n (oder kurz Clique) auf n Knoten ist ein Graph, in dem jedes Knotenpaar durch eine Kante in jeder Richtung verbunden ist. Gegeben: beliebiger schwach zusammenhängender Graph G=(V,E) Gesucht: Verfahren, das G möglichst schnell in einen vollständigen Graphen verwandelt Anfangs- graph

Selbststabilisierende Clique Gegeben: beliebiger schwach zusammenhängender Graph G=(V,E) Gesucht: Verfahren, das G möglichst schnell in eine Clique verwandelt Zusätzliche Bedingung an Verfahren: Geringer Umorganisierungsaufwand bei Join- und Leave-Operation auf perfekter Clique. Anfangs- graph

Selbststabilisierende Clique Gegeben: beliebiger schwach zusammenhängender Graph G=(V,E) Gesucht: Verfahren, das G möglichst schnell in eine Clique verwandelt Wichtig für unsere verteilten Konsens und Transak- tionsverfahren, da diese eine Clique benötigen! Anfangs- graph

Selbststabilisierende Clique Naives Verfahren: Pointer Doubling Jeder Knoten v schickt in jeder Kommunikations- runde seine gesamte Nachbarschaft N(v) an alle Nachbarn. Theorem 6.1: Pointer Doubling benötigt nur O(log n) Kommunikationsrunden, bis sich aus einem beliebigen schwach zusammenhängenden Graphen eine Clique gebildet hat. vw N(v)

Selbststabilisierende Clique Theorem 6.1: Pointer Doubling benötigt nur O(log n) Kommuni- kationsrunden, bis sich aus einem beliebigen schwach zusammenhängenden Graphen eine Clique gebildet hat. Beweis: Betrachte beliebige zwei Knoten v und w mit Distanz d (im ungerichteten Fall). In zwei Kommunikationsrunden hat sich d (bis auf ein additives 1) halbiert. v w v w

Selbststabilisierende Clique Nachteil des Pointer Doubling: in einer Kommunikationsrunde muss ein Knoten eventuell (n) Pakete mit (n) Adressen empfangen, d.h. es müssen insgesamt (n 2 ) Adressen empfangen werden, d.h. die Kommunikationskomplexität ist sehr hoch. Einsicht: Im worst case (anfangs schwach zusammenhängende Liste) muss jedes Verfahren (n) Adressen an jeden Knoten schicken, um eine Clique zu formen. Ist es möglich, in die Nähe des Aufwands (n) zu kommen?

Selbststabilisierende Clique Pull Strategie: Jeder Knoten u sendet in jeder Runde eine pull Anfrage an einen zufälligen Knoten v N(u). Für jede pull Anfrage, die u von einem Knoten v empfängt, setzt u N(u):=N(u) {v} und schickt einen zufälligen Knoten w N(u) an v zurück, den v in seine Nachbarschaft integriert. uv pull w N(v)

Selbststabilisierende Clique Leave(u): Restgraph ist nach wie vor Clique Join(u,v): Theorem 6.2: Join(u,v) benötigt O(n log n) Runden m.h.W. bis u vollständig in der Clique integriert ist. uv

Selbststabilisierende Clique Beweis: Anzahl Runden, bis u alle kennt: Angenommen, u kennt bereits d Knoten. Wkeit, dass kontaktierter Knoten einen Kno- ten in N(u) an u zurückschickt ist d/n, also Pr[d(u) bleibt d] = d/n E[#Runden mit Grad d]=1/(1-d/n) = n/(n-d) E[#Runden, bis u alle kennt] = d=1 n-1 E[#Runden mit Grad d] = d=1 n-1 n/(n-d) = i=1 n-1 n/i = O(n ln n)

Selbststabilisierende Clique Anzahl Runden, bis alle u kennen: Angenommen, u kennt bereits alle. Für jeden festen Knoten v gilt: Pr[u kontaktiert v] = 1/n Also ist Pr[u kontaktiert v keinmal in c n ln n Runden] = (1-1/n) c n ln n e -c ln n = (1/n) c D.h. nach O(n log n) Runden kennen alle u mit hoher Wkeit. Arbeit: Erwartete Anzahl Botschaften an jeden Knoten in jeder Runde ist konstant. D.h. Arbeit pro Knoten ist O(n log n), was viel besser als Pointer Doubling (mit Arbeit (n 2 ) ) ist.

Selbststabilisierende Clique Selbststabilisierung der Pull Strategie: Korrektheit einfach nachzuweisen (Distanzen zwischen Knoten verkürzen sich über die Zeit) Noch keine nichttriviale Laufzeitschranke (Vermutung: O(n log n) w.h.W.) Beweisidee: d(v): Grad von Knoten v. Betrachte festen Knoten u. Zeit verläuft in Phasen. In einer Phase unterscheiden wir zwischen zwei Fällen: 1) v N(u): d(v)>2d(u): Gradverdopplung von u nach ~d(u) 2 Kommunikationsrunden. 2) v N(u): d(v) 2d(u): u kennt die Nachbarn aller Nachbarn nach ~d(u) 2 Kommunikationsrunden Nach O(log n) Phasen ist Grad jedes Knotens mindestens n m.h.W., dafür ~O(n log n) Zeit. Danach Verdopplung alle weiteren O(n log n) Runden m.h.W.?

Selbststabilisierende Clique Anwendung: Verteilter Konsensus und Transaktionen (auf Cliquen einfach machbar!) Nachteil: Eine Clique ist kein skalierbares Netzwerk Besser Netzwerk kleiner Cliquen?

Selbststabilisierender Clustergraph Cluster: lokale Clique Gegeben: zusammenhängendes Netzwerk G=(V,E). Ziel: Transformation in zusammenhängenden Graph G´, in dem alle Knoten in Clustern der Größe minimal K und maximal 4K organisiert sind. Selbststabilisierende Regel für Clustergraph sehr kniffelig!!! Einfacher: selbststabilisierende Liste

Übersicht Dynamische Netzwerke Selbststabilisierende Netzwerke Selbststabilisierende Clique Selbststabilisierende Liste Zufällige Graphen

Selbststabilisierende Liste Unser Ziel:

Selststabilisierende Liste Naïver Ansatz: Stelle Nachbarn allen Nachbarn vor Transformiere Nachbarschaft in sortierte Liste Anfangs- graph Nicht skalierbar!

Selbststabilisierende Liste Besserer Ansatz: Linearisierung Jeder Knoten macht das folgende: temporär stabil

Selbststabilisierende Liste Theorem 6.3: Die Linearisierungsregel transformiert jeden schwach zusammenhängenden Graphen in O(n 2 ) Runden in eine doppelt verkettete sortierte Liste. Beweis: Betrachte beliebiges Nachbarpaar v,w. vw Bereich des Pfades von v nach w

Selbststabilisierende Liste Betrachte Randknoten des Pfades, z.B. u: Fall 1: u hat zwei ausgehende Kanten Linearisierung verkürzt dann den Bereich des Pfades von v nach w vwu u

Selbststabilisierende Liste Betrachte Randknoten des Pfades, z.B. u: Fall 2: mindestens eine zu u eingehende Kante Fall 2a: u nächster Nachbar von x. Dann führt x Kante (u,x) ein, damit Reduktion auf Fall 1. vwu ux

Selbststabilisierende Liste Betrachte Randknoten des Pfades, z.B. u: Fall 2: mindestens eine zu u eingehende Kante Fall 2b: u nicht nächster Nachbar von x. Dann führt x Kante (y,u) ein, damit Kantenlänge kleiner. vwu uxy

Selbststabilisierende Liste Betrachte Randknoten des Pfades, z.B. u: Fall 2: mindestens eine zu u eingehende Kante Fall 2b kann damit maximal n-mal auftauchen, bis Fall 2a oder Fall 1 gilt. vwu uxy

Selbststabilisierende Liste Damit verkürzt sich der Bereich des Pfades von v nach w nach spätestens n Runden um mindestens 1. Insgesamt reichen also O(n 2 ) Runden, bis v mit w verbunden ist. vw Bereich des Pfades von v nach w

Selbststabilisierende Liste Schnellere aber aufwändigere Linearisierung: Alle Kanten werden beidseitig gerichtet gehalten Problem: Transformation von {12,16} zu {14,16} muss mit Knoten 16 koordiniert werden

Selbststabilisierende Liste Theorem 6.4: Beidseitige Linearisierung kann jeden schwach zusammenhängenden Graphen in O(n) Runden in eine doppelt verkettete sortierte Liste transformieren. Beweis: ähnlich zu Theorem 6.3. Theorem 6.5: Jede lokale Stabilisierungsstrategie für die sortierte Liste benötigt (n) Runden bis zur sortierten Liste. Beweis:

Selbststabilisierende Liste Problem: Eine Liste ist sehr verwundbar gegenüber Ausfällen und gegnerischem Verhalten. Lösung: verwende skalierbare Strukturen mit besserem Zusammenhang Idee: sortierte Liste, in der jeder Knoten mit seinen d Vorgängern und Nachfolgern verbunden ist. Beispiel für d=2:

Selbststabilisierende Liste Übung: Regel für selbststabilisierende Liste mit Kanten zu d Vorgängern und Nachfolgern. Problem: Struktur jetzt zwar stärker zusammenhängend, aber Durchmesser noch sehr hoch. Lösung: zufällige Graphen

Übersicht Dynamische Netzwerke Selbststabilisierende Netzwerke Selbststabilisierende Clique Selbststabilisierende Liste Zufällige Graphen

Übersicht: Eigenschaften von zufälligen d-regulären Graphen Selbststabilisierende Transformation eines beliebigen schwach zusammenhängenden Graphen in zufälligen d-regulären Graphen

Eigenschaften zufälliger Graphen d-regulärer Graph: ausgehender Grad aller Knoten ist d. zufälliger Graph: jede ausgehende Kante hat einen uniform zufällig ausgewählten Knoten als Ziel Theorem 6.6: Ein zufälliger d-regulärer Graph G erfüllt mit hoher Wkeit U V, |U| |V|/d: |N(U)| d|U|/2 d.h. G ist ein Expander. d-reguläre Graphen sind also sehr stark zusammenhän- gend und daher sehr robust gegenüber Ausfällen.

Eigenschaften zufälliger Graphen Beweis: n: Anzahl der Knoten, m:Teilmengengröße. : Anzahl Teilmengen der Größe m : Anzahl Möglichkeiten, dm/2 der dm ausgehenden Kanten in U auszuwählen. m/n : Wkeit, dass zufällige ausgehende Kante in U hineinzeigt. Also gilt: Pr[ U V, |U| |V|/d: |N(U)| < d|U|/2] Das ist poly klein falls m n/d und d genügend groß. n m dm dm/2 n m m n en m m 2 dm m n dm/2 dm dm/2

Dynamische zufällige Graphen Push&Pull Strategie: Jeder Knoten u sendet in jeder Runde eine push Anfrage mit einem zufälligen Knoten w N(u) an einen zufälligen Knoten v N(u). Falls d(u) d, dann löscht u w aus N(u). Für jede push Anfrage mit Knoten w, die u von einem Knoten v empfängt, setzt u N(u):=N(u) {w} und schickt eine pull Anfrage mit einem zufälligen Knoten w´ N(u) an v zurück. Falls d(u)>d, dann löscht u w´ aus N(u). Für jede pull Anfrage mit Knoten w´, die u von einem Knoten v empfängt, setzt u N(u):=N(u) {w´}. Push&Pull realisiert einen lokalen Kantenwechsel (flip): uv push(w) ww´ pull(w´) uv ww´

Dynamische zufällige Graphen Die ungerichtete flip Regel ist bereits analysiert worden: Theorem 6.7: G sei anfangs ein beliebiger d- regulärer Graph. Nach O(n 5 ) Anwendungen der flip Regel auf ein zufälliges Paar von Knoten {u,v} ist der resultierende Graph mit hoher Wkeit ein zufälliger d-regulärer Graph. uv push(w) ww´ pull(w´) uv ww´

Dynamische zufällige Graphen Vermutung: Nach O(log n) vielen Runden mit der Push&Pull-Regel ist der resultierende Graph ein zufälliger ~d- regulärer zusammenhängender Graph. Beachte: flip-Regel gefährdet nicht Zusammenhang

Noch Fragen?