o n teilbaum

Werbung
Datenstrukturen und Algorithmen VO 708.031 13.12.2012 [email protected] 1 Wiederholung •  Suchen in linearen Feldern: Ohne Vorsor*erung: •  SequenDelle Suche •  Speicherung nach Zugriffswahrscheinlichkeit •  Selbstanordnende Felder Mit Vorsor*erung: •  Binärsuche •  InterpolaDonssuche •  QuadraDsche Binärsuche •  FastSearch worst‐case: T(n)=Θ(n) 13.12.2012 [email protected] 2 SequenDelle Suche •  Durchsuche das Feld von Anfang bis Ende T(n) = Θ(n) im schlechtesten Fall, bzw. im mi;leren Fall, wenn jedes Element gleich oY gesucht wird 13.12.2012 [email protected] 3 SequenDelle Suche •  Verbesserung der erwarteten Laufzeit: –  Speichere die Elemente A[i] nach ihrer Zugriffswahrscheinlichkeit pi: p1 ≥ p2 ≥ p3 … •  Gleichverteilung: pi =
1
! T (n) = O(n)
n
•  ExponenDelle Verteilung: pi =
1
⇒ T (n) = O(1)
i
2
–  Zugriffswahrscheinlichkeiten pi müssen bekannt sein 13.12.2012 [email protected] 4 Selbstanordnende Felder •  Wenn pi unbekannt: verschiebe Elemente, die häufiger gesucht werden, nach vorne •  Bsp. 2er Heuris*ken: Wird auf A[i] zugegriffen, –  vertausche A[i] mit A[1]: –  vertausche A[i] mit A[i‐1]: Im Mieel sind beide Methoden zumindest halb so gut wie die Anordnung nach fallender Zugriffswahrscheinlichkeit bei bekannten pi 13.12.2012 [email protected] 5 2. Suchen mit VorsorDerung •  Suchen in vorsor*erten Feldern: Input: Feld A[1..n] mit A[1] ≤ A[2] ≤ … ≤ A[n] Output: Index t für das gesuchte Element x (A[1] ≤ x ≤ A[n]) Falls x ∉ A, wird als Ergebnis ‐1 ausgegeben •  Suchverfahren: –  Binärsuche (Binary BisecDon Search) –  InterpolaDonssuche –  QuadraDsche Binärsuche –  FastSearch 13.12.2012 [email protected] 6 Binärsuche (Binary Bisec*on Search) Teile das Feld in zwei gleich große HälYen und vergleiche mit dem mieleren Element; falls ident → gefunden, sonst suche entweder in der linken (kleiner) oder rechten HälYe (größer) weiter rekursive Version Aufruf: BINSUCH(1,n,x) T(n) = T(n/2) + O(1) ⇒ T(n) = O(log n) 13.12.2012 [email protected] 7 InterpolaDonssuche Suche nicht in der Miee, sondern dort, wo das Element „sein sollte“, unter der Annahme, dass die Werte linear steigen A[bis]
x
A[von]
von
13.12.2012 t
[email protected] bis
8 InterpolaDonssuche Suche nicht in der Miee, sondern dort, wo das Element „sein sollte“, unter der Annahme, dass die Werte linear steigen rekursive Version Aufruf: INTSUCH(1,n,x) Erwartete Laufzeit: T(n) = O(log log n) Worst‐case: T(n) = O(n) 13.12.2012 [email protected] 9 QuadraDsche Binärsuche Idee: Verhindere den worst‐case der InterpolaDonssuche durch Anwendung der InterpolaDonssuche auf Teilfelder der Länge n
n
•  Berechne Index t durch InterpolaDonssuche: •  Suche von t aus das korrekte Teilfeld (in Sprüngen von ) und suche von n
dort aus weiter: IdenDfizieren des korrekten Teilfeldes in O(1) erwarteter Zeit 13.12.2012 [email protected] 10 QuadraDsche Binärsuche Idee: Verhindere den worst‐case der InterpolaDonssuche durch Anwendung der InterpolaDonssuche auf Teilfelder der Länge n
n
rekursive Version Aufruf: QUADSUCH(1,n,x) Erwartete Laufzeit: (Teilfeld in O(1) Zeit) T(n) = O(log log n) Worst‐case: (alle Teilfelder probiert) T(n) = O( ) n
13.12.2012 [email protected] 11 FastSearch KombinaDon von Binärsuche und InterpolaDonssuche mit O(log log n) im mi;leren Fall und O(log n) im schlechtesten Fall (zumindest immer so gut wie das bessere der beiden Verfahren) A
von
mB
Binärsuche
13.12.2012 B
C
mI
bis
Interpolationssuche
[email protected] 12 FastSearch KombinaDon von Binärsuche und InterpolaDonssuche mit O(log log n) im mi;leren Fall und O(log n) im schlechtesten Fall (zumindest immer so gut wie das bessere der beiden Verfahren) rekursive Version; Aufruf: FASTSEARCH(1,n,x) 13.12.2012 [email protected] 13 Laufzeitverhalten der Suchverfahren Mi#lerer Fall Schlechtester Fall O(log n) O(log n) InterpolaDonssuche O(log log n) O(n) QuadraDsche Binärsuche O(log log n) O( ) n
„FastSearch“ O(log log n) O(log n) Binärsuche Speicherbedarf: •  Rekursive Algorithmen: proporDonal zur Laufzeit (RekursionsDefe) •  Itera8ve Algorithmen: O(1) 13.12.2012 [email protected] 14 Laufzeitverhalten der Suchverfahren Beispiel: Anzahl der Vergleiche für 109 Elemente Mi#lerer Fall Schlechtester Fall Binärsuche 30 30 InterpolaDonssuche 5 1.000.000.000 QuadraDsche Binärsuche 5 32.000 „FastSearch“ 10 60 13.12.2012 [email protected] 15 Bäume •  Defini*on: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrela*on strukturiert ist. Elemente: Knoten •  In einem Baum gilt: 1
–  ∃ Knoten w ohne Vater(w)  (w=Wurzel) 1
–  ∀ Knoten k≠w Knotenfolge k
∃
0, 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, t … Tiefe des Knotens k) 13.12.2012 [email protected] 16 Bäume •  Ordnung eines Knotens: Anzahl seiner Söhne •  Ordnung eines Baumes: maximale Ordnung aller Knoten •  Die Knoten eines Baumes sind entweder Blä;er (Knoten ohne Söhne, Ordnung 0) oder innere Knoten (Ordnung >0) •  Jeder Knoten ist Wurzel eines Teilbaumes •  Höhe eines Baumes: Länge des längsten Pfades von der Wurzel bis zu einem Blae •  Voller Baum der Ordnung k: Jeder Knoten hat genau k Söhne oder ist ein Blae •  Ein vollständiger Baum ist ein voller Baum, bei dem jedes Blae gleiche Tiefe hat 13.12.2012 [email protected] 17 Bäume •  Anwendungen: –  Hierarchische Strukturen: –  Inklusionsstrukturen: 13.12.2012 [email protected] 18 Bäume •  Anwendungen in der Informa*k: – 
– 
– 
– 
– 
Rekursionsbäume Entscheidungsbäume Suchbäume Haldenbäume Codebäume u.v.a. /
Beispiel (Syntaxbäume):
ArithmeDsche Ausdrücke Blä#er (= Knoten ohne Söhne) enthalten Zahlen, innere Knoten speichern Operatoren (+, ‐, *, /). 13.12.2012 *
+
2
[email protected] +
3
4
3
5
19 Binärbäume •  Jeder Knoten hat maximal zwei Nachfolger ExisDert ein Sohn‐ oder ein Vaterknoten nicht, wird nil zurückgeliefert 13.12.2012 [email protected] 20 Binärbäume •  Auslesereihenfolge der Knoten: –  Symmetrische Reihenfolge (SR, inorder): linker Teilbaum in SR, Wurzel, rechter Teilbaum in SR Aufruf: SR(w) w … Wurzel T(n) = Θ(n) Beispiel: /
*
+
2
13.12.2012 +
3
4
3
Infix‐Nota8on 5
[email protected] 21 Binärbäume •  Reihenfolge der Knoten: –  Hauptreihenfolge (HR, preorder): Wurzel, linker Teilbaum in HR, rechter Teilbaum in HR –  Nebenreihenfolge (NR, postorder): linker Teilbaum in NR, rechter Teilbaum in NR, Wurzel /
*
+
(HR) +
3
4
3
(NR) 2
13.12.2012 5
PosDix‐Nota8on [email protected] 22 SorDerte Binärbäume •  Binäre Suchbäume sind in symmetrischer Reihenfolge sorDert Knoten im linken Teilbaum ≤ Wurzel ≤ Knoten im rechten Teilbaum 13.12.2012 [email protected] 23 SorDerte Binärbäume •  Suchen (binäre Suche): b … gesuchter Wert k … Wurzel des Teilbaums Aufruf: SUCHE(b, w) Suchzeit: O(h) h … Höhe des Baumes (= Länge des längsten Astes) 13.12.2012 [email protected] 24 SorDerte Binärbäume •  Minimum und Maximum: k … Wurzel des Teilbaums Laufzeit: jeweils O(h) 13.12.2012 [email protected] 25 SorDerte Binärbäume •  Einfügen: Fügt den Wert w in den Binärbaum B ein Simuliere eine Suche nach w, bis zu einer freien Stelle (x=nil) Dort fügen wir das Element ein (als Sohn von y) Baum B war leer Laufzeit: O(h) 13.12.2012 [email protected] 26 SorDerte Binärbäume •  Au\au eines sorDerten Binärbaumes: –  durch wiederholtes Einfügen (⇒
natürliche Bäume) –  Binärbaum hängt von der Reihenfolge der Elemente ab T(n) = O(n*h) = Θ(n2), wenn h = Θ(n) Einige wenige Reihenfolgen liefern entartete Bäume (= Listen) Fügt man randomisiert ein, ist E[h] klein 13.12.2012 [email protected] 27 SorDerte Binärbäume •  En]ernen: Suchen ⇒ Knoten k a)  k ist Blae: abhängen b)  k hat nur einen Sohn: Teilbaum von diesem Sohn an VATER(k) anhängen c)  k hat 2 Söhne: Finde den Nachfolger k‚ (k' hat keinen linken Sohn!) Setze WERT(k) = WERT(k' ) En•erne k'‚ Fall a) oder b) Laufzeit: O(h) 13.12.2012 [email protected] 28 SorDerte Binärbäume •  Vorgänger und Nachfolger: Nachfolger von k: was ist der kleinste Wert größer als k? Wenn ein rechter Sohn exisDert, suche das Minimum in diesem Teilbaum, … … sonst suche den niedrigsten Knoten, bei dem sich k unter dem linken Sohn befindet Laufzeit: O(h) 13.12.2012 [email protected] 29 SorDerte Binärbäume •  Vorgänger und Nachfolger: Vorgänger von k: was ist der größte Wert kleiner als k? Wenn ein linker Sohn exisDert, suche das Maximum in diesem Teilbaum, … … sonst suche den niedrigsten Knoten, bei dem sich k unter dem rechten Sohn befindet Laufzeit: O(h) 13.12.2012 [email protected] 30 SorDerte Binärbäume •  Zusammenfassung: – 
– 
– 
– 
– 
– 
– 
Minimum Maximum Vorgänger Nachfolger Einfügen Löschen Suchen Alle OperaDonen in O(h) Zeit h … Baumhöhe •  Vorteil: dynamische Lösung des Wörterbuchproblems •  Nachteil: Zeiten bis zu Θ(n) 13.12.2012 [email protected] 31 Danke für Ihre Aufmerksamkeit! Bis zum nächsten Mal. (Donnerstag, 10. Jan. 2013, 11:15, i13) 13.12.2012 [email protected] 32 
Herunterladen