Handout - Institut für Theoretische Informatik - Technische ...
Handout - Institut für Theoretische Informatik - Technische ... Handout - Institut für Theoretische Informatik - Technische ...
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
- Seite 65 und 66: 4. Church-Turing-These 4.2 Rekursiv
- Seite 67 und 68: 4. Church-Turing-These 4.2 Rekursiv
- Seite 69 und 70: 4. Church-Turing-These 4.2 Rekursiv
- Seite 71 und 72: 4. Church-Turing-These 4.2 Rekursiv
- Seite 73 und 74: 4. Church-Turing-These 4.2 Rekursiv
- Seite 75 und 76: 4. Church-Turing-These 4.2 Rekursiv
- Seite 77 und 78: 5. Unentscheidbare Probleme Kapitel
- Seite 79 und 80: 5. Unentscheidbare Probleme 5.1 Uni
- Seite 81 und 82: 5. Unentscheidbare Probleme 5.1 Uni
- Seite 83 und 84: 5. Unentscheidbare Probleme 5.1 Uni
- Seite 85 und 86: 5. Unentscheidbare Probleme 5.2 Das
- Seite 87 und 88: 5. Unentscheidbare Probleme 5.2 Das
- Seite 89 und 90: 5. Unentscheidbare Probleme 5.3 Wei
- Seite 91 und 92: 5. Unentscheidbare Probleme 5.3 Wei
- Seite 93 und 94: 5. Unentscheidbare Probleme 5.3 Wei
- Seite 95 und 96: 5. Unentscheidbare Probleme 5.3 Wei
- Seite 97 und 98: 5. Unentscheidbare Probleme 5.4 Sat
- Seite 99 und 100: 5. Unentscheidbare Probleme 5.4 Sat
- Seite 101 und 102: 6. Komplexität von Algorithmen Kap
- Seite 103 und 104: 6. Komplexität von Algorithmen 6.0
- Seite 105 und 106: 6. Komplexität von Algorithmen 6.0
- Seite 107 und 108: 6. Komplexität von Algorithmen 6.1
- Seite 109 und 110: 6. Komplexität von Algorithmen 6.1
- Seite 111 und 112: 6. Komplexität von Algorithmen 6.1
- Seite 113 und 114: 6. Komplexität von Algorithmen 6.1
- Seite 115: 6. Komplexität von Algorithmen 6.1
- Seite 119 und 120: 6. Komplexität von Algorithmen 6.1
- Seite 121 und 122: 6. Komplexität von Algorithmen 6.2
- Seite 123 und 124: 6. Komplexität von Algorithmen 6.2
- Seite 125 und 126: 6. Komplexität von Algorithmen 6.2
- Seite 127 und 128: 6. Komplexität von Algorithmen 6.2
- Seite 129 und 130: 6. Komplexität von Algorithmen 6.3
- Seite 131 und 132: 6. Komplexität von Algorithmen 6.3
- Seite 133 und 134: 6. Komplexität von Algorithmen 6.4
- Seite 135 und 136: 6. Komplexität von Algorithmen 6.4
- Seite 137 und 138: 6. Komplexität von Algorithmen 6.4
- Seite 139 und 140: 6. Komplexität von Algorithmen 6.4
- Seite 141 und 142: 6. Komplexität von Algorithmen 6.4
- Seite 143 und 144: 6. Komplexität von Algorithmen 6.5
- Seite 145 und 146: 6. Komplexität von Algorithmen 6.5
- Seite 147 und 148: 6. Komplexität von Algorithmen 6.6
- Seite 149 und 150: 6. Komplexität von Algorithmen 6.6
- Seite 151 und 152: 6. Komplexität von Algorithmen 6.7
- Seite 153 und 154: 6. Komplexität von Algorithmen 6.7
- Seite 155 und 156: 6. Komplexität von Algorithmen 6.7
- Seite 157 und 158: 6. Komplexität von Algorithmen 6.7
- Seite 159 und 160: 6. Komplexität von Algorithmen 6.7
- Seite 161 und 162: 6. Komplexität von Algorithmen 6.8
- Seite 163 und 164: 6. Komplexität von Algorithmen 6.8
- Seite 165 und 166: 6. Komplexität von Algorithmen 6.8
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