Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen 9. Lineare Programmierung 5/2, Folie 1 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Problemstellung feste Menge S von Schlüsseln s 1,...,s n eine Wahrscheinlichkeitsverteilung über der Menge S (/* jedem Schlüssel s i wird seine Zugriffswahrscheinlichkeit p i zugeordnet, d.h. die Wahrscheinlichkeit, mit der s i nachgefragt wird */)... Beispiel: Online-Wörterbuch für Englisch/Deutsch Schlüssel (/* englische Wörter */) zugehörige Satellitendaten (/* deutsche Übersetzung(en) */) Annahme: die Wörter, zu denen es keine deutsche Übersetzung gibt, sind alle gleichwahrscheinlich (/* das kann man auch anders modellieren... */)... Ziel: Schlüsselmenge so organisieren, daß die (einzige) zeitkritische Operation Suchen effizient realisiert werden kann 5/2, Folie 2 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
mögliche Ansätze höhenbalancierte binäre Suchbäume (/* die bekannten Zugriffswahrscheinlichkeiten werden ignoriert */) optimale binäre Suchbäume (/* bei der Anordnung der Schlüssel in einem binären Suchbaum werden die Zugriffswahrscheinlichkeiten benutzt */)... Anmerkung die Idee der direkten Adressierung kann nicht unmittelbar angewendet werden (/* Hashing wäre eine sinnvolle Option */) 5/2, Folie 3 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Beispiel s 2 s 2 s 1 s 4 s 1 s 3 s 3 s 5 s 4 Erwartete Zugriffskosten: s 5 0.3+2*0.4+2*0.05+3*0.2+3*0.05 = 1.95 0.3+2*0.4+2*0.2+3*0.05+4*0.05 = 1.85 5/2, Folie 4 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Erwartete Zugriffskosten eines binären Suchbaums es seien s 1,...,s n die gespeicherten Schlüssel eines binären Suchbaums und p 1,...,p n die zugehörigen Zugriffswahrscheinlichkeiten die erwarteten Zugriffskosten ek(s i ) für einen Schlüssel s i mit der Tiefe t(s i ) ergeben sich als ek(s i )= (t(s i )+1)*p i die erwarteten Zugriffskosten ek(b) des Suchbaums B ergeben sich als Summe der erwarteten Zugriffskosten ek(s i ) für alle Schlüssel s i Hinweis: die Wurzel hat hier die Tiefe 0... 5/2, Folie 5 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Aufgabenstellung es seien s 1,...,s n die in einem binären Suchbaum B zu speichernden Schlüssel und p 1,...,p n die zugehörigen Zugriffswahrscheinlichkeiten... bestimme einen binären Suchbaum, der die Schlüssel s 1,...,s n speichert und minimale erwartete Zugriffskosten hat (/* d.h. es ist ein in diesem Sinn optimaler binärer Suchbaum zu bestimmen */) Beobachtungen (/* Schwierigkeiten */) binäre Suchbäume mit kleinere Tiefe sind nicht immer besser (/* siehe Beispiel... */) binäre Suchbäume, die in der Wurzel den Schlüssel mit der maximaler Zugriffswahrscheinlichkeit speichern, sind nicht immer besser (/* siehe Beispiel... */) 5/2, Folie 6 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Lösungsmöglichkeit (/* Variante 1 */) es seien s 1,...,s n die in einem binären Suchbaum B zu speichernden Schlüssel und p 1,...,p n die zugehörigen Zugriffswahrscheinlichkeiten bestimme alle binären Suchbäume B 1,...,B z, die genau die Schlüssel s 1,...,s n speichern bestimme die erwartete Zugriffskosten von B 1,...,B z wähle einen binären Suchbaum B i mit minimalen Zugriffskosten aus... ineffizient, da es exponentiell viele binäre Suchbäume gibt, welche genau die Schlüssel s 1,...,s n speichern 5/2, Folie 7 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Lösungsmöglichkeit (/* Variante 2 */) es seien s 1,...,s n die zu speichernden Schlüssel und p 1,...,p n die zugehörigen Zugriffswahrscheinlichkeiten... wir verwenden den Ansatz der dynamischen Programmierung... damit das geht, muß das Bellmannsche Optimalitätskriterium erfüllt sein (/* hier bedeutet das: jeder Teilbaum eines optimalen Suchbaums ist eine optimaler Suchbaum für die in diesem Teilbaum gespeicherten Schlüssel */) 5/2, Folie 8 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
zugrunde liegende Beobachtung es seien s 1,...,s n die zu speichernden Schlüssel und p 1,...,p n die zugehörigen Zugriffswahrscheinlichkeiten es sei B <1..n> ein binärer Suchbaum für s 1,...,s n s k Dann gilt: ek(b <1..n> ) = (p 1 +...+p n ) + ek(b <1..k-1> ) + ek(b <k+1..n> ) B <1..k-1> B <k+1..n> 5/2, Folie 9 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
zugrunde liegende rekursive Berechnungsvorschrift es seien s 1,...,s n die zu speichernden Schlüssel und p 1,...,p n die zugehörigen Zugriffswahrscheinlichkeiten es sei B <i..j> bezeichne einen binären Suchbaum, welcher die Schlüssel s i,...,s j speichert Dann gilt: ek(b <i..j> ) = 0, falls i > j ek(b <i..j> ) = p i, falls i = j ek(b <i..j> ) = (p i +... + p j ) + min { ek(b <1..k-1> ) + ek(b <k+1..j> ) i k j } 5/2, Folie 10 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Verwendung zur Bestimmung eines optimalen binären Suchbaums es seien s 1,...,s 5 die zu speichernden Schlüssel und p 1,...,p 5 die zugehörigen Zugriffswahrscheinlichkeiten in der Tabellenzelle T[i][j] werden sich die erwarteten Zugriffskosten für den optimalen Suchbaum B <i..j> sowie dessen Wurzel gemerkt 5/2, Folie 11 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Beispiel zur Bestimmung eines optimalen binären Suchbaums 5/2, Folie 12 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Beispiel zur Bestimmung eines optimalen binären Suchbaums (cont.) 1.0 / 1 (0.4 + 0.3) + min { (0 + 0.3), (0.4. + 0) } 5/2, Folie 13 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Beispiel zur Bestimmung eines optimalen binären Suchbaums (cont.) 1.0 / 1 0.7 / 2 0.3 / 3 0.15 / 4 5/2, Folie 14 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Beispiel zur Bestimmung eines optimalen binären Suchbaums (cont.) 1.0 / 1 1.5 / 2 0.7 / 2 0.3 / 3 0.15 / 4 (0.4 + 0.3 + 0.2) + min { (0 + 0.7), (0.4. + 0.2), (1.0 + 0) } 5/2, Folie 15 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Beispiel zur Bestimmung eines optimalen binären Suchbaums (cont.) 1.0 / 1 1.5 / 2 0.7 / 2 0.85 / 2 0.3 / 3 0.45 / 3 0.15 / 4 5/2, Folie 16 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Beispiel zur Bestimmung eines optimalen binären Suchbaums (cont.) 1.0 / 1 1.5 / 2 1.65 / 2 0.7 / 2 0.85 / 2 0.3 / 3 0.45 / 3 0.15 / 4 (0.4 + 0.3 + 0.2 + 0.05) + min { (0 + 0.85), (0.4. + 0.3), (1.0 + 0.05), (1.5 + 0) } 5/2, Folie 17 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Beispiel zur Bestimmung eines optimalen binären Suchbaums (cont.) 1.0 / 1 1.5 / 2 1.65 / 2 0.7 / 2 0.85 / 2 1.05 / 3 0.3 / 3 0.45 / 3 0.15 / 4 5/2, Folie 18 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Beispiel zur Bestimmung eines optimalen binären Suchbaums (cont.) 1.0 / 1 1.5 / 2 1.65 / 2 1.85 / 2 0.7 / 2 0.85 / 2 1.05 / 3 0.3 / 3 0.45 / 3 0.15 / 4 (0.4 + 0.3 + 0.2 + 0.05 + 0.05) + min { (0 + 1.05), (0.4. + 0.45), (1.0 + 0.15), (1.5 + 0.05), (1.65 + 0) } 5/2, Folie 19 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Abschluß (/* Auslesen des optimalen binären Suchbaums */) 1.0 / 1 1.5 / 2 1.65 / 2 1.85 / 2 0.7 / 2 0.85 / 2 1.05 / 3 0.3 / 3 0.45 / 3 0.15 / 4 5/2, Folie 20 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Abschluß (/* Auslesen des optimalen binären Suchbaums */) 1.0 / 1 1.5 / 2 1.65 / 2 1.85 / 2 0.7 / 2 0.85 / 2 1.05 / 3 0.3 / 3 0.45 / 3 0.15 / 4 5/2, Folie 21 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Abschluß (/* Auslesen des optimalen binären Suchbaums */) 1.0 / 1 1.5 / 2 1.65 / 2 1.85 / 2 0.7 / 2 0.85 / 2 1.05 / 3 0.3 / 3 0.45 / 3 0.15 / 4 5/2, Folie 22 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Abschluß (/* Auslesen des optimalen binären Suchbaums */) 1.0 / 1 1.5 / 2 1.65 / 2 1.85 / 2 0.7 / 2 0.85 / 2 1.05 / 3 0.3 / 3 0.45 / 3 0.15 / 4 5/2, Folie 23 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Abschluß (/* Auslesen des optimalen binären Suchbaums */) 1.0 / 1 1.5 / 2 1.65 / 2 1.85 / 2 0.7 / 2 0.85 / 2 1.05 / 3 s 2 0.3 / 3 0.45 / 3 0.15 / 4 s 1 s 3 s 4 s 5 5/2, Folie 24 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen
Zusammenfassung offenbar benötigt der beschriebene Algorithmus zusätzlich O(n 2 ) viel Speicherplatz (/* Speicherung der Zwischenergebnisse */) das Ausfüllen einer Zelle der Tabelle benötigt der beschriebene Algorithmus im worst case die Zeit O(n)... da das Bellmannsche Optimalitätsprinzip erfüllt ist, kann man unter Anwendung des Paradigmas der dynamischen Programmierung optimale Suchbäume in der Zeit O(n 3 ) bestimmen 5/2, Folie 25 2010 Prof. Steffen Lange - HDa/FbI - Effiziente Algorithmen