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 Beispiel (Algorithmus für 3-Färbung) Eingabe: Ungerichteter Graph G = (V , E) mit n Knoten und k Kanten Ausgabe: G mit 3 Farben färben Es ist kein effizienter Algorithmus bekannt (Begründung später). Wenn man alle möglichen Färbungen auf ihre Korrektheit prüfen will, ergibt sich eine Laufzeit O(3 n ) . Andererseits kann man nichtdeterministisch eine potentielle Färbung raten und diese deterministisch überprüfen. Beispiel (Algorithmus für gerichteten Weg) Eingabe: Gerichteter Graph G = 〈V , E〉 , Knoten v, w ∈ V Aufgabe: entscheiden, ob gerichteter G -Weg von v nach w existiert Idee: iterativ die von v aus erreichbaren Knoten bestimmen und in einer Hilfs-Menge M sammeln; wenn w am Ende zu M gehört, existiert ein gerichteter Weg von v nach w . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2012 116 / 215

6. Komplexität von Algorithmen 6.1 Beispiele effizienter Algorithmen Beispiel (Fortsetzung) 1: {(0) Initialisierung} 2: M := {v} { M : die von v erreichbaren Knoten} 3: {(1) Rekursionsschritt} 4: while eine Kante 〈x, y〉 mit x ∈ M und y /∈ M existiert do 5: M := M + {y} 6: E := E − {〈x, y〉} 7: end while 8: {(2) Ausgabe} 9: JA, falls w ∈ M , sonst NEIN Korrektheit: Klar! Laufzeit: Entscheidend ist die WHILE-Schleife in Zeilen 4–7. Bei Verwendung von Adjazenzlisten werden maximal n-mal alle k Kanten getestet, was in einer Laufzeit von O(n · k) resultiert. Im Falle von Adjazenzmatrizen ist stattdessen eine (n × n)-Matrix maximal n-mal nach Einsen zu durchsuchen, also ergibt sich O(n 3 ) . Jürgen Koslowski (TU-BS) Theoretische Informatik 2 SS 2012 117 / 215

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

Beispiel (Algorithmus <strong>für</strong> 3-Färbung)<br />

Eingabe: Ungerichteter Graph G = (V , E) mit n Knoten und k Kanten<br />

Ausgabe: G mit 3 Farben färben<br />

Es ist kein effizienter Algorithmus bekannt (Begründung später). Wenn<br />

man alle möglichen Färbungen auf ihre Korrektheit prüfen will, ergibt sich<br />

eine Laufzeit O(3 n ) . Andererseits kann man nichtdeterministisch eine<br />

potentielle Färbung raten und diese deterministisch überprüfen.<br />

Beispiel (Algorithmus <strong>für</strong> gerichteten Weg)<br />

Eingabe: Gerichteter Graph G = 〈V , E〉 , Knoten v, w ∈ V<br />

Aufgabe: entscheiden, ob gerichteter G -Weg von v nach w existiert<br />

Idee: iterativ die von v aus erreichbaren Knoten bestimmen und in einer<br />

Hilfs-Menge M sammeln; wenn w am Ende zu M gehört, existiert ein<br />

gerichteter Weg von v nach w .<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!