O(log n)

Werbung
Datenstrukturen und Algorithmen VO 708.031 05.12.2013 [email protected] 1 Struktur der Vorlesung unterteilt in 5 Kapitel 1.  Einführung u. Grundlagen 2.  Algorithmische Grundprinzipien 3.  SorGerverfahren 4.  Suchen in linearen Feldern 5.  Suchen in Bäumen 05.12.2013 [email protected] 2 Suchverfahren Verfahren, das in einem Suchraum nach Mustern oder Objekten mit besGmmten EigenschaQen sucht. Anwendungsbereiche für Suchverfahren: –  Suchen in Datenbanken, Google‐Search, DNA‐Tests –  Suchen nach ähnlichen Mustern: z.B. Viren, Malware –  Bilderkennungsverfahren: Suchen nach PaXern –  Suchen in Textdateien, ... Inhalt der VO: einfache Suchverfahren auf Listen und später auf Bäumen siehe auch AuD VO, WS10/11, C. Eckert, TU München 05.12.2013 [email protected] 3 In dieser Vorlesung 1. StaGsche, kleine Menge, selten SuchoperaGon notwendig: •  Lösung: Feld als Datenstruktur und sequenGelles Suchen: O(n) 2. StaGsche, kleine Menge, häufige Zugriffe/SuchoperaGonen •  Lösung: VorsorGertes Feld in O(n log n) erstellen und binäre Suche mit O(log n) verwenden. siehe auch AuD VO, WS10/11, C. Eckert, TU München 05.12.2013 [email protected] 4 In den nächsten VOs 3. Dynamisch, große Menge von Elementen, z.B. Personaldaten •  Lösung: Baum als dynamische Datenstruktur (einfügen, löschen), organisiert als binärer Suchbaum. Suchen in O(h), wobei h die Baumhöhe ist. 4. Dynamisch, große Menge, viele, effiziente Zugriffe notwendig z.B. große Produktdatenbanken, Suchmaschinen, … •  Lösung: Binärer Suchbaum, der eine möglichst geringe Höhe h garanGert. Sollte möglichst balanziert sein, z.B. 2‐4 Baum, Rot‐Schwarz Baum usw. siehe auch AuD VO, WS10/11, C. Eckert, TU München 05.12.2013 [email protected] 5 4. Suchen in linearen Feldern •  Ohne VorsorGerung, z.B. A=[34, 4, 99, 13, 42] –  SequenGelle Suche –  Selbstanordnende Felder •  Mit VorsorGerung, z.B. A=[4, 13, 34, 42, 99] –  InterpolaGonssuche –  Binärsuche –  QuadraGsche Binärsuche –  Fastsearch 05.12.2013 [email protected] 6 4. Suchen in linearen Feldern 1.  Ohne VorsorDerung, z.B. A=[34, 4, 99, 13, 42] –  SequenGelle Suche –  Selbstanordnende Felder Wir wollen in einer Datenmenge (lineares Feld A[1..n]) nur Suchen (staGscher Fall, kein SorGeren, Einfügen bzw. Enpernen) 05.12.2013 [email protected] 7 SequenGelle Suche •  Durchsuche das Feld von Anfang bis Ende T(n) = Θ(n) im schlechtesten Fall, bzw. im miMleren Fall, wenn jedes Element gleich oQ gesucht wird 05.12.2013 [email protected] 8 SequenGelle Suche •  Verbesserung der erwarteten Laufzeit: –  Speichere die Elemente A[i] nach ihrer Zugriffswahrscheinlichkeit pi: p1 ≥ p2 ≥ p3 … •  Gleichverteilung: =
1
! ( )= ( )
•  ExponenGelle Verteilung: pi =
1
⇒ T (n) = O(1)
i
2
–  Zugriffswahrscheinlichkeiten pi müssen bekannt sein 05.12.2013 [email protected] 9 Selbstanordnende Felder •  Wenn pi unbekannt: verschiebe Elemente, die häufiger gesucht werden, nach vorne. •  Bsp. 3er HeurisDken: Wird auf A[i] zugegriffen, –  vertausche A[i] mit A[1]: –  vertausche A[i] mit A[i‐1]: –  Zählen der Zugriffe u. dementsprechend das Feld sorGeren Im MiXel sind diese Methoden zumindest halb so gut wie die Anordnung nach fallender Zugriffswahrscheinlichkeit bei bekannten pi. Achtung: Ist pi gleichverteilt, dann sind die HeurisGken ineffizienter als die sequenGelle Suche. 10 4. Suchen in linearen Feldern 2. Mit VorsorDerung, z.B. A=[4, 13, 34, 42, 99] –  InterpolaGonssuche –  Binärsuche –  QuadraGsche Binärsuche –  Fastsearch 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 05.12.2013 [email protected] 11 Binärsuche (Binary BisecDon Search) Teile das Feld in zwei gleich große HälQen und vergleiche mit dem miXleren Element; falls ident → gefunden, sonst suche entweder in der linken (kleiner) oder rechten HälQe (größer) weiter rekursive Version Aufruf: BINSUCH(1,n,x) T(n) = T(n/2) + O(1) ⇒ T(n) = O(log n) 05.12.2013 [email protected] 12 Binärsuche (Binary BisecDon Search) Teile das Feld in zwei gleich große HälQen und vergleiche mit dem miXleren Element; falls ident → gefunden, sonst suche entweder in der linken (kleiner) oder rechten HälQe (größer) weiter iteraGve Version Aufruf: BINSUCH_ITERATIV(1,n,x) 05.12.2013 [email protected] 13 InterpolaGonssuche Suche nicht in der MiXe, sondern dort, wo das Element „sein sollte“, unter der Annahme, dass die Werte linear steigen A[bis]
x
A[von]
von
05.12.2013 t
[email protected] bis
14 InterpolaGonssuche Suche nicht in der MiXe, 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) 05.12.2013 [email protected] 15 QuadraGsche Binärsuche Idee: Verhindere den worst‐case der InterpolaGonssuche durch Anwendung der InterpolaGonssuche auf Teilfelder der Länge n
n
•  Berechne Index t durch InterpolaGonssuche: •  Suche von t aus das korrekte Teilfeld (in Sprüngen von ) und suche von n
dort aus weiter: IdenGfizieren des korrekten Teilfeldes in O(1) erwarteter Zeit 05.12.2013 [email protected] 16 QuadraGsche Binärsuche 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
05.12.2013 [email protected] 17 FastSearch KombinaGon von Binärsuche und InterpolaGonssuche mit O(log log n) im miMleren Fall und O(log n) im schlechtesten Fall (zumindest immer so gut wie das bessere der beiden Verfahren) A
von
mB
Binärsuche
05.12.2013 B
C
mI
bis
Interpolationssuche
[email protected] 18 FastSearch KombinaGon von Binärsuche und InterpolaGonssuche mit O(log log n) im miMleren Fall und O(log n) im schlechtesten Fall (zumindest immer so gut wie das bessere der beiden Verfahren) 05.12.2013 [email protected] 19 Laufzeitverhalten der Suchverfahren Mi#lerer Fall Schlechtester Fall O(log n) O(log n) InterpolaGonssuche O(log log n) O(n) QuadraGsche Binärsuche O(log log n) O( ) n
„FastSearch“ O(log log n) O(log n) Binärsuche Speicherbedarf: •  Rekursive Algorithmen: proporGonal zur Laufzeit (RekursionsGefe) •  Itera9ve Algorithmen: O(1) 05.12.2013 [email protected] 20 Laufzeitverhalten der Suchverfahren Beispiel: Anzahl der Vergleiche für 109 Elemente Mi#lerer Fall Schlechtester Fall Binärsuche 30 30 InterpolaGonssuche 5 1.000.000.000 QuadraGsche Binärsuche 5 32.000 „FastSearch“ 10 60 05.12.2013 [email protected] 21 Laufzeitverhalten der Suchverfahren 9 Elemente Beispiel: Anzahl der Vergleiche für 10
Es gibt je einen Zusatzpunkt für eine ImplemenGerung von der quadraDschen Binärsuche bzw. Mi#lerer Fall Schlechtester Fall von Fastsearch Binärsuche Abgabe bis zum 12.12.2013 InterpolaGonssuche 30 30 5 1.000.000.000 •  Codeausdruck (nur der Alg. kein Plot oder sonsGge QuadraGsche Binärsuche 5 32.000 FunkGonen) „FastSearch“ 10 60 •  Grafik mit einem Vergleich der Laufzeiten zu einem beliebigen vorhandenen Suchalgorithmus (DiskuGere das Ergebnis im Zusammenhang mit SorGeren ohne VorsorGerung). 05.12.2013 [email protected] 22 Danke für Ihre Aufmerksamkeit! Bis zum nächsten Mal. (Donnerstag, 12. Dez. 2013, 11:15, i13) 05.12.2013 [email protected] 23 
Zugehörige Unterlagen
Herunterladen