Luby, EM

Werbung
Vorlesung 3:
Lubys Algorithmus
Das EM-Modell
85
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Nachsatz: Halbringnotation
!   Auch Bücher enthalten Fehler...
!   A op1.op2 v: Abkürzung für Matrix-Vektor-Multiplikation
!   Vereinbarung für Reihenfolge: A +.* v
!   op1 gibt n-stelligen Operator an
!   op2 gibt binären Operator an
86
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Lubys Algorithmus
Eingabe: Graph G = (V, E)
Ausgabe: Nicht erweiterbare unabhängige Menge I
1.  I = !, G‘ = G
2.  while (G‘ ist nicht der leere Graph) do
a)  Wähle eine zufällige Menge von Knoten S in V(G‘), indem jeder
Knoten v unabhängig mit Wkt. 1/(2d(v)) gewählt wird
b)  Für jede Kante (u, v) in E(G‘): Falls beide Endpunkte in S sind,
dann entferne den Knoten mit kleinerem Grad aus S (Konflikte
beliebig auflösen). Diese neue Menge wird S‘ genannt.
c)  Setze I = I ∪ S ' und G ' = G '\ (S '∪ N(S ')) .
3.  return I
!   Die Nachbarschaft einer Knotenmenge ist die
Vereinigung der einzelnen Nachbarschaften
87
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Korrektheit
!   In jedem Schritt wird die Menge S‘ hinzugefügt
!   S‘ ist eine unabhängige Menge
!   S‘ ist unabhängig zu I wegen der Löschung von S '∪ N(S ')
!   => I ist immer eine unabhängige Menge
!   I ist nicht erweiterbar (maximal)
!   Alle aus G‘ entfernten Knoten sind entweder aus I oder aus N(I)
88
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Laufzeit
!   Theorem: Die erwartete Anzahl von Runden ist O(log m).
!   Sei Gj = (Vj, Ej) der Graph nach Runde j.
!   Hauptlemma: Für ein c < 1 gilt: Ex(|Ej| / |Ej-1|) < c |Ej-1|
!   Kategorisierung der Knoten v:
!   Gut: Mindestens 1/3 der Nachbarn haben niedrigeren Grad als v
!   Schlecht: Sonst
!   Intuitiv: Ein guter Knoten hat gute Chancen für Aufnahme in I
!   Kategorisierung der Kanten e:
!   Schlecht: Beide Endpunkte von e sind schlecht
!   Gut: Sonst
89
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik

X
v2N (u), d(v) d(u)
Viele gute Kanten
1
1
1
 d(u) ·
=
2d(u)
2d(u)
2
6. Falls
2 V gut ist, dannkleineren Grades eines
! Lemma
  Definition:
Dieu Nachbarschaft
Knotens u in V ist definiert
als: X
1Graphenalgorithmen
1
1 Grundlegende
.
L(u) := {v: v in N(u)
d(v)
d(u)}
2d(v)
6
v2N (u)
Das folgende Lemma P
besagt, dass ein Knoten, der für S gewählt wird, mind
d(u)≥ d(u)
! Proof.
  Fakt:PEin Knoten
1 u ist gut, falls
1 |L(u)|
1 / 3.1
·
= 6.
Wahrscheinlichkeit
1/2 auch
in I2d(v)
aufgenommen
v2N (u) 2d(v)
v2L(u)
3
2d(u) wird.
1
Aus den
vorigen
Lemmas
sichPnun
folgern
Lemma
5. beiden
Für
Knoten
uu 2
VV gilt:
r(uein
2 Iweiteres
| u 2 S)Hilfsresultat
!   Lemma:
Für jeden
jeden
Knoten
inlässt
gilt:
2.
1
!
 
Lemma:
Lemma
7.
8u
2
V,
P
r(u
2
I)
Proof. Zum Beweis beschränken4d(u)
wir. das Gegenereignis P r(u 2
/ I | u 2 S)
!   Lemma:
danndann
Pr(v in
N(I))in≥I1/36.
Ein
Knoten Falls
u 2 Sv gut
wirdist,
genau
nicht
aufgenommen,
wenn ein Na
1
1
Proof. P r(u 2 I) = P r(u 2 I | u 2 S) · P r(u 2 S) 12 · 2d(v)
.
4d(u)
mindestens gleich großem Grad in S aufgenommen wird. Daher
gilt:
8. Sei
e = Tafel
(u, v) eine gute Kante. Dann gilt P r(e entfernt) 1/36.
! Lemma
 PBeweise:
siehe
r(u 2
/ I | u 2 S) = P r(9v 2 N (u), v 2 S, d(v) d(u) | u 2 S)
XP r(e ent
Proof. Ohne Beschränkung der X
Allgemeinheit sei u gut. Dann lässt sich

P r(v 2 S | u 2 S) 
P
von unten durch P r(u 2 I [ N (I)) beschränken. Letzteres schätzen wir nun ab.
v2N (u), d(v) d(u)
v2N (u), d(v) d(u)
betrachten wir zwei Fälle. Der erste
ist
9v
2
N
(u),
d(v)
2.
Nach
Lemma 7 folgt
90
Graphenalgorithmen und lineare Algebra Hand inX
Hand
Paralleles Rechnen,1
Institut für Theoretische
1
1
Informatik, Fakultät für Informatik

 d(u) · 1
=
1
2d(u)
2d(u) . 2
P r(u
2 (u),
I [d(v)
N (I))
v2N
d(u) P r(v 2 I)
Anteil der guten Kanten
!   Lemma: Mindestens die Hälfte der Kanten sind gut.
!   Beweis:
!   Richte jede Kante zu ihrem Endpunkt mit höherem Knotengrad.
!   Konflikte so auflösen wie im Algorithmus.
!   Jeder schlechte Knoten hat dabei mindestens doppelt so viele
Kanten, die ihn verlassen, wie Kanten, die in ihn hineinführen.
!   Wäre dies nicht der Fall, hätte mindestens ein Drittel der zu v
adjazenten Knoten Grad d(v) oder niedriger => v wäre gut.
!   Wir weisen jede schlechte Kante e, die in einen schlechten Knoten
v hineinführt, an ein Paar von Kanten (gut oder schlecht) zu, die
aus v hinausführen. => Jede schlechte Kante hat eindeutiges Paar.
!   => Es gibt mindestens doppelt so viele Kanten insgesamt wie
schlechte Kanten.
!   Anders gesagt: Mindestens die Hälfte aller Kanten ist gut.
91
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Hauptlemma
!   Hauptlemma (anders ausgedrückt): In jeder Runde wird
mindestens jede 72. Kante (im Erwartungswert) entfernt.
!   Beweis: siehe Tafel
92
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Zusammenfassung
!   Unabhängige Mengen sind in Konfliktgraphen sehr nützlich
!   Der triviale Algorithmus ist inhärent sequentiell
! Lubys Algorithmus bietet Vorteile:
!   Parallelität: Auswahl der Knoten in jeder Phase ist voneinander
unabhängig
!   Laufzeitschranke: O(log n) Phasen (im Erwartungswert)
!   Algebraische Implementierung passt (mit Kommentaren) auf zwei Folien
!   Bessere Analysen sind bekannt:
!   In jeder Iteration werden mehr Kanten gelöscht
!   Die Laufzeit gilt mit hoher Wahrscheinlichkeit
93
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
DATENSTRUKTUREN UND
ALGORITHMEN
94
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Ist die Datenstruktur so wichtig???
!   Wahl der Datenstruktur wichtiger Schritt beim Entwurf und
der Implementierung von Algorithmen
!   Dünn besetzte Graphen und Matrizen bilden keine Ausnahme
!   Bei dünn besetzten Matrizen gegenseitiger Einfluss:
!   Algorithmen bestimmen Wahl der Datenstruktur
!   Wahl der Datenstruktur bestimmt Algorithmen
!   Analyse der Algorithmen im RAM-Modell und im I/O-Modell
95
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Motivation für das EM-Modell
!   Ein Rechner, insbesondere der Speicher, ist hierarchisch
aufgebaut
!   Register
!   ...
!   Grund: ???
!   Wichtig: Blockbasierter Zugriff günstiger als zufälliger
!   Konzept lässt sich auf andere Bereiche übertragen:
!   Parallele Kommunikation
!   Stapelweise Abarbeitung
96
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
I/O-Modell = EM-Modell
!   Speicher ist hierarchisch organisiert:
!
!
!
!
 
 
 
 
Register
Caches (L1, L2, L3)
RAM
SSD, HDD
Cache
! External Memory-Modell:
!
!
!
!
97
 
 
 
 
2 Ebenen: Schnell und langsam
Schnell: Cache oder (Haupt)Speicher
Langsam: (Haupt)Speicher oder Platte
Benennung nur Termini,
Prinzipien gelten für jeden Ebenenübergang
Graphenalgorithmen und lineare Algebra Hand in Hand
RAM
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Modell-Parameter
!   Speicher partitioniert in Blöcke der Größe L
(Größe einer Cachezeile)
!   Größe des schnellen Speichers ist Z
!   Langsamer Speicher ist nicht limitiert in der Größe
!   Referenziertes Datum nicht im Cache:
!   Cache-Fehlzugriff
!   Blocktransfer vom RAM in den Cache
!   Komplexitätsmaß: Zahl der Cache-Fehlzugriffe (I/Os)
!   Frage: Welche Komplexität (Anzahl I/O-Operationen) hat das
Scannen eines Arrays der Länge N?
98
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Externes Sortieren
Ausnahmsweise kein Graphen- oder Matrixalgorithmus!
!   Eingabe: Zahlenfolge A der Länge N >> Z
!   Ausgabe: A sortiert abgelegt im langsamen Speicher
!   Externes Merge-Sort am Beispiel (s. Wikipedia):
!   Sortiere 400 MB Daten mit 100 MB schnellem Speicher
1.  Lese 100 MB Daten in schnellen Speicher und sortiere diese mit
einem internen Algorithmus, bspw. Quicksort
2.  Schreibe die sortierten Daten in den langsamen Speicher
3.  Wiederhole 1) und 2), bis alle 100 MB-Blöcke sortiert sind.
4.  Lies die ersten 20 MB (= 100 MB / (4 Blöcke + 1)) jedes sortierten
Blocks in den schnellen Speicher, Rest: Ausgabepuffer
5.  Führe 4-fach-Merge-Sort durch und speichere Ergebnis im
Ausgabepuffer. Wenn Ausgabepuffer voll, dann in langsamen
Speicher schreiben. Wenn Eingabepuffer leer, dann nächsten
Block lesen
99
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Skizze und Zeitkomplexität
!   Sortierphase: O(N/L)
! Merge-Phase: k-faches Mischen mit k = Z/2L
!   Zeitkomplexität: O(N/L * logZ/L (N/L)) I/Os = O(sort(N))
100
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Minimum Spanning Forest
Algorithmus für RAM-Modell von Jarnik und Prim
!   Eingabe: Ungerichteter gewichteter Graph G = (V, E)
!   Ausgabe: Wald von Spannbäumen minimalen Gewichts
!   Algorithmus (Skizze):
!   Starte mit beliebigem Knoten
!   Iteriere: Verbinde unbesuchten Knoten mit Baum, der über die
leichteste Kante verbunden ist
!   Wiederhole für weitere ZHK
!   Prioritätswarteschlange speichert Knoten
!   Laufzeit:
!   O(m log n) mit binären Heaps
!   O(m + n log n) mit Fibonacci-Heaps
101
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Beispiel
!   Siehe Tafel!
102
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Minimum Spanning Forest
Algorithmus für EM-Modell von [Arge et al., SWAT‘00]
!   Eingabe und Ausgabe wie eben
!   Änderung des Algorithmus:
!   Prioritätswarteschlange PQ für EM-Modell
!   PQ speichert nun Kanten anstatt Knoten:
Keine Aktualisierungen nötig
!   PQ enthält (mindestens) alle Kanten, die Knoten des Baums mit
Knoten außerhalb verbinden
!   Es können darin auch Kanten sein, die zwei Baumknoten
miteinander verbinden
!   Iteration des Algorithmus (sei u der aktuelle Knoten):
! Extract-min aus PQ für Kante (u, v)
!   Nur falls v noch nicht im Baum: Füge v zum Baum hinzu, füge
seine inzidenten Kanten außer (u, v) in PQ ein
103
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Analyse des Algorithmus
Korrektheit
!   Jeder Knoten im Baum fügt seine inzidenten Kanten hinzu
!   PQ kann daher zwei Kopien derselben Kante beinhalten
!   Annahme: Alle Kantengewichte sind verschieden
!   Wenn Kante e aus PQ entfernt wird, ist ihre Kopie nächstes
Minimum => zweites extract-min zum Test, ob v im Baum
!   Bei gleichem Startknoten (pro ZHK) und eindeutigen
Kantengewichten:
Reihenfolge der bearbeiteten Knoten wie bei RAMAlgorithmus => gleiches Endergebnis
104
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Analyse des Algorithmus
Laufzeit
!   Die Adjazenzliste jedes Knotens wird einmal gelesen:
O(n + m/L) I/Os
!   O(m) Einfüge- und extract-min-Operationen
!   PQ: Einfügen und extract-min in O(1/L logZ/L (n/L))
amortisierter Zeit
!   Laufzeit:
O((n + m/L) + m * logZ/L (m/L) / L) = O(n + sort(m))
!   Schnellere EM-Verfahren existieren
105
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Zwischenfazit EM-Modell
!   Speicherhierarchie wichtiger Aspekt eines Rechners
!   Übergang der Ebenen universell
!   Blockweise Abarbeitung wichtig
!   Dazu Lokalität ausnutzen!
!   Möglichst wenig im Speicher springen!
106
Graphenalgorithmen und lineare Algebra Hand in Hand
Paralleles Rechnen, Institut für Theoretische
Informatik, Fakultät für Informatik
Herunterladen