Suchen in linearen Feldern Datenstrukturen & Algorithmen Ohne Vorsortierung VO 708.031 11. Vorlesung, am 11.Dez. 2008 11.12.2008 helmut.hauser@IGI • Sequentielle Suche • Binärsuche (Binary Bisection Search) • Speicherung nach Zugriffswahrscheinlichkeiten • Interpolationssuche • Fastsearch • Selbstanordnende Felder 11.12.2008 Laufzeitverhalten der Suchverfahren Mit Vorsortierung helmut.hauser@IGI Anzahl der Vergleiche für 109 Elemente Mittlerer Fall Mittlerer Fall Schlechtester Fall Schlechtester Fall Binärsuche O(log n) O(log n) Binärsuche 30 30 Interpolationssuche O(log log n) O(n) Interpolationssuche 5 1.000.000.000 „FastSearch“ O(log log n) O(log n) „FastSearch“ 5 30 Unsortiert Sequentielles Suchen O(n) O(n) Unsortiert Sequentielles Suchen 500.000.000 1.000.000.000 Alles circa Wert !! 11.12.2008 helmut.hauser@IGI 11.12.2008 helmut.hauser@IGI Bäume - Grundlagen Definition: Anwendungsstrukturen Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. Elemente: Knoten Chef Gruppenleiter 1 Hierarchische Strukturen GL 2 GL 3 In einem Baum gilt: Mitarbeiter 1 M2 M3 Inklusionsstrukturen 1 ∃ Knoten w ohne Vater(w) Æ (w=Wurzel) k Buch Vater(x) Lebewesen 1 ∀ Knoten k≠w ∃ Knotenfolge k0, k1, …, kt mit k0=k, kt=w und ki=Vater(ki-1) für i=1, 2, …, t. (Ast zwischen k und w, Länge t) 11.12.2008 x Sohn(k) Kap. 1 Abschn. 1.1 11.12.2008 helmut.hauser@IGI Jeder Knoten hat maximal zwei Nachfolger QUICK(1,n) QUICK(1,k) helmut.hauser@IGI QUICK(k+1,n) / * + 2 11.12.2008 1.4 Binärbäume Anwendungsstrukturen Beispiel: Arithmetische Ausdrücke Blätter (= Knoten ohne Söhne) enthalten Zahlen, innere Knoten speichern Operatoren (+, -, *, /). Insekten Tiere Käfer helmut.hauser@IGI – Rekursionsbäume – Entscheidungsbäume – Suchbäume – Haldenbäume – Codebäume u.v.a. Kap. 5 + 3 4 3 5 11.12.2008 helmut.hauser@IGI Reihenfolge der Knoten (1) Symmetrische Reihenfolge (SR): Reihenfolge der Knoten (2) Hauptreihenfolge (HR): Linker Teilbaum in SR, Wurzel, rechter Teilbaum in SR. Wurzel, linker Teilbaum in HR, rechter Teilbaum in HR. /*+253+43 SR(k) 1: IF k≠nil THEN 2: SR(LINKS(k)) 3: WRITE k 4: SR(RECHTS(k)) Leicht rekursiv zu programmieren. (Def. übersetzen!) Aufruf: SR(w) ((2+5)*3)/(4+3) Infix-Notation (3) Nebenreihenfolge (NR): Linker Teilbaum in NR, rechter Teilbaum in NR, Wurzel. Postfix-Notation (leichte Auswertung, mit Stapel) 25+3*43+/ 7 21 7 3 11.12.2008 helmut.hauser@IGI 11.12.2008 Sortierte Binärbäume helmut.hauser@IGI Sortierte Binärbäume Sortiert nach SR Binäre Suche 15 6 3 2 18 7 17 5 20 13 O(Höhe) Weitere Operationen möglich: 9 ………………..... 11.12.2008 1: SUCHE(w,k) 2: IF k=nil OR w=WERT(k) THEN 3: WRITE k 4: ELSE IF w<WERT(k) THEN 5: SUCHE(w , LINKS(k)) 6: ELSE SUCHE(w , RECHTS (k)) helmut.hauser@IGI Einfügen (Erstellen), Löschen, Minimum, Maximum, Vorgänger, Nachfolger „Fädelung“ der Knoten 11.12.2008 helmut.hauser@IGI Binärbäume - online Binärbäume - Zusammenfassung Durch Update-Operation (Löschen, Einfügen) Binärbäume sind spezielle Bäume, welcher maximal 2 Söhne haben. 1 9 Höhe ≠ log(n) Knotenreihenfolgen (Symmetrische, Haupt- und Nebenreihenfolge) Æ geordneter Binärbaum möglich (Nachfolgerrelation) 8 Entartet! 3 Implementierbare Funktionen: Alle Funktionen: O(„Baumhöhe“) • Minimum • Maximum • Vorgänger • Nachfolger 11.12.2008 helmut.hauser@IGI Zur Erhaltung von: Höhe=log(n) Techniken zur Erhaltung einer logarithmischen Baumhöhe Höhenbalanciert Gewichtsbalanciert h(B)=Höhe des Baums g(B) = Anzahl der Blätter Für jeden Knoten k gilt: Für jeden Knoten k gilt: |h(Blinks)-h(Brechts)|≤k 1/α ≤ g(Blinks)/g(Brechts)| ≤ α Bsp: AVL-Bäume (k=1) BB-Bäume (bounded balance) Mehrwegbäume 11.12.2008 Umstrukturieren O(n) • Einfügen (Aufbau) • Löschen • Suchen Wörterbuchproblem helmut.hauser@IGI Höhe = O(n) teuer! (fast) ausgeglichen = gut, da minimale Höhe = O( log n) 11.12.2008 Definition: 7 4 5 helmut.hauser@IGI (2-4)-Bäume Ein (2-4)-Baum ist ein Baum mit folgenden Eigenschaften: (1) Alle Äste sind gleich lang. (2) Die max. Anzahl der Söhne eines Knotens ist gleich 4. (3) Innere Knoten haben ≥ 2 Söhne. (4) Die Blätter enthalten v.l.n.r. die Werte aufsteigend sortiert. (5) Jeder innere Knoten mit t Söhnen (2 ≤ t ≤ 4) speichert t-1 Hilfsinformationen x1, …, xt-1, wobei xi = größter Wert im Teilbaum des i-ten Sohnes von links. 11.12.2008 helmut.hauser@IGI (2-4)-Bäume Höhe=O(log n) Enthalten nur Hilfsinformationen. 4,6 1,2 1 2 10,11 5 4 (2-4)-Bäume 5 6 10 11 Wir wollen damit das Wörterbuchproblem lösen: SUCHEN, EINFÜGEN, ENTFERNEN Achtung: Nach den Update-Funktionen (Einfügen, Entfernen) muss wieder ein korrekter 2-4-Baum vorliegen ! 24 Daten werden in den Blättern gespeichert. Æ Zeitlicher Mehraufwand, der sich aber rentiert Æ Amortisierte Kosten siehe später 11.12.2008 helmut.hauser@IGI 11.12.2008 (2,4)-Bäume - Suchen 8 helmut.hauser@IGI (2,4)-Bäume - Einfügen Definition: 11 α(k) ist die Ordnung des k-ten Knoten (=Anzahl der Söhne) 2 4 5 10 12 24 Zwei Fälle (nach! dem Einfügen): 1.) Falls α(k) ≤ 4 Æ fertig !! 2 4 5 8 10 11 12 24 31 2.) Falls α(k) > 4 Æ Bedingung verletzt Æ SPALTEN v Pro Knoten maximal 3 Vergleich Æ O(1) Æ Höhe garantiert Θ(log n) Æ T(n)=Θ(log n) 11.12.2008 helmut.hauser@IGI v k k 11.12.2008 v’ helmut.hauser@IGI k’ (2,4)-Bäume - Entfernen Analyse der Operationen Zwei Fälle (nach dem Entfernen): Wörterbuchproblem 1.) Falls α(k) ≥ 2 Æ fertig !! 2.) Falls α(k) < 2 Æ Bedingung verletzt (underflow) Æ STEHLEN (wenn α(k‘) ≥ 3) k’ k oder VERSCHMELZEN (α(k‘) = 2) STEHLEN k’ v k’ O(log n) O(log n) O(log n) Speicher: O(n) k v k 11.12.2008 Suchen: Einfügen: Entfernen: VERSCHMELZEN k helmut.hauser@IGI 11.12.2008 helmut.hauser@IGI Mischbare Warteschlangen Mischbare Warteschlangen 9 -Unsortierter (2,4)-Baum Definition: • • • • EINFÜGEN (S,x) MAXIMUM (S) ENTFERNE_MAX (S) MISCHE (S,S‘) 3 3 9 1 9 - innere Knoten speichert Maximum in seinen Teilbaum und Zeiger darauf 8 5 Maximum trivial Æ in Wurzel O(1) 2 6 8 Entferne Maximum Æ Update der Information O(log n) 8 Halde Æ 3 Operationen in O(log n) Mischen aber teuer !! Æ O(n) Mit Baum alle Operation Æ O(log n) Einfügen ist Spezialfall von Mischen! 5 3 11.12.2008 helmut.hauser@IGI 11.12.2008 helmut.hauser@IGI 8 1 5 2 6 8 Amortisierte Kosten Mischbare Warteschlangen Mische (S, S‘): Æ Beides 2-4-Bäume mit der Höhe h und h‘ 1.Fall: h = h‘ 2.Fall: h > h‘ Neue Wurzel = O(1) Check α(v) Æ O(log n)!! 2-4-Bäume benötigen zusätzliche Operation, damit sie 2-4-Bäume bleiben und damit garantiert h=O(log n) besitzen. Potentielle Laufzeit: O(m*log(n)) v k w’ Beobachtung: z.B. nach Spalt-Operation ist der Baum „ausgeglichener“. h’ T T’ Æ Investierte Zeit rentiert sich später Æ Amortisierungsanalyse. Durchschnittliche Zeit über alle Operation (in unserem Fall: Einfügen, Löschen) im schlimmsten Fall. 11.12.2008 helmut.hauser@IGI 11.12.2008 helmut.hauser@IGI