Handout - Institut für Theoretische Informatik - Technische ...

Handout - Institut für Theoretische Informatik - Technische ... Handout - Institut für Theoretische Informatik - Technische ...

iti.cs.tu.bs.de
von iti.cs.tu.bs.de Mehr von diesem Publisher
05.11.2013 Aufrufe

6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen Definition Einer topologischen Sortierung eines gerichteten Graphen G = 〈V , E〉 mit n Knoten ist eine Funktion V ord n = {0, . . . , n − 1} mit der Eigenschaft 〈u, v〉 ∈ E impliziert ord(u) < ord(v) Beispiel •1 •0 •3 •4 •2 Die neue Kante von 4 nach 1 zerstört die topologische Sortierbarkeit. Allgemein kann ein gerichteter Graph genau dann topologisch sortiert werden, wenn er keine Zyklen hat (Test für die Existenz von Zyklen). Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2012 108 / 215

6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen Beispiel (Naiver Algorithmus für Topologisches Sortieren) Eingabe: Gerichteter Graph G = (V , E) mit n Knoten und k Kanten Ausgabe: Topologische Sortierung V ord n, falls G azyklisch 1: {(0) Initialisierung} 2: i := 0 { i : die Zahl, die ord zuweisen soll} 3: W := V { W : die Menge der noch nicht bearbeiteten Knoten} 4: {(1) Rekursionsschritt} 5: while ein Knoten x ∈ W ohne Vorgänger in W existiert do 6: ord(x) := i 7: i := i + 1 8: W := W − {x} 9: end while {Zyklus falls W ≠ ∅ , sonst topologische Sortierung} Korrektheit: klar. Laufzeit: (unter Verwendung von Adjazenzmatrizen) Die Befehle in Zeilen 3,2,6,7 und 8 benötigen konstante Zeit A . Schleife 5 wird m 2 -mal durchlaufen, mit m = n, . . . , 1 , da W schrumpft; in der Rest-Matrix über W ist eine 0-Spalte zu finden, in Zeit K . n∑ n∑ T (n) = 2A + (Km 2 + 3A) = 2A + K m 2 + 3An ∈ O(n 3 ) m=1 m=1 Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2012 109 / 215

6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen<br />

Definition<br />

Einer topologischen Sortierung eines gerichteten Graphen G = 〈V , E〉 mit<br />

n Knoten ist eine Funktion V ord n = {0, . . . , n − 1} mit der<br />

Eigenschaft<br />

〈u, v〉 ∈ E impliziert ord(u) < ord(v)<br />

Beispiel<br />

•1 •0<br />

•3<br />

•4 •2<br />

Die neue Kante von 4 nach 1 zerstört die topologische Sortierbarkeit.<br />

Allgemein kann ein gerichteter Graph genau dann topologisch sortiert<br />

werden, wenn er keine Zyklen hat (Test <strong>für</strong> die Existenz von Zyklen).<br />

Jürgen Koslowski (TU-BS) <strong>Theoretische</strong> <strong>Informatik</strong> 2 SS 2012 108 / 215

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!