Informatik I 4. Kapitel Suchen in sequentiellen Listen

Größe: px
Ab Seite anzeigen:

Download "Informatik I 4. Kapitel Suchen in sequentiellen Listen"

Transkript

1 Informatik I 4. Kapitel Rainer Schrader Zentrum für Angewandte Informatik Köln 21. Mai / 55 2 / 55 Szenario Suchen in Daten gehört zu den wichtigsten Operationen etwa Suchen nach: Stichworten in Lexika Telefonnummern, Kontonummern, Kfz-Kennzeichen Dateinamen, Absender von s,... die Daten liegen als sequentielle lineare Listen vor die Daten werden über Schlüssel k N identifiziert nur Schlüsselvergleiche sind erlaubt (elementare Suchverfahren) in späteren Kapiteln: Suchen auf Bäumen Suche durch arithmetische Berechnungen der Adressen temporäre Annahme: keine zwei Schlüssel sind gleich 3 / 55 4 / 55

2 Gliederung das Auswahlproblem (Medianbestimmung) Suchen in unsortierten Listen Suchen in sortierten Listen selbstorganisierende Listen Auswahlproblem gegeben: n Schlüssel (Datensätze), ein k n, gesucht: der k -kleinste Schlüssel Spezialfall: bestimme den Median: k = n 2 5 / 55 6 / 55 einfache Lösung: suche den kleinsten Schlüssel in linearer Zeit lösche dieses Element suche den kleinsten Schlüssel in den verbleibenden Daten lösche dieses Element,... O(kn) Schritte (O(n 2 ) für das Medianproblem) besser: baue einen min-heap aus den Daten lösche das minimale Element repariere Heap durch Versickern lösche das minimale Element,... besserer Ansatz (bestimme das k -kleinste Element) wähle ein Pivotelement A(i) (wie in Quicksort) teile die Schlüssel auf in S 1 = {A(j) : A(j) < A(i)} S 2 = {A(j) : A(j) > A(i)} suche rekursiv im richtigen Teil weiter: falls S 1 = k 1, dann ist A(i) das gesuchte Element falls S 1 k, suche das k -kleinste Element in S 1 falls S 1 < k 1, suche das k 1 S 1 -kleinste Element in S 2 O(n + k log n) Schritte (O(n log n) für das Medianproblem) 7 / 55 8 / 55

3 angenommen für ein ε > 0 gilt: wir können A(i) stets so wählen, dass: S 1 εn S 2 εn dann wird die Rekursion auf höchstens (1 ε)n n durchgeführt damit folgt für die Laufzeit T : T (n) T (1 ε)n + cn. Satz T (n) dn für d = c. ε Beweis: Per Induktion folgt: T (n) T (1 ε)n + cn. T (n) T (1 ε)n + cn d (1 ε)n + cn c (1 ε)n + cn ε = dn 9 / / 55 Idee damit hätten wir einen linearen Algorithmus zur Bestimmung des k -kleinsten Elements wir müssen nur immer mindestens einen konstanten Teil abspalten teile die n in Fünfergruppen auf (bis auf einen Rest von bis zu 4 n) sortiere diese Gruppen und nimm jeweils das mittlere Element (Median) bestimme rekursiv den Median der n 5 Mediane, benutze dieses Element als Pivotelement sei x der Median der Mediane mit Ausnahme der Gruppe, die x enthält, und evtl. der letzten gilt: eine Gruppe, deren Median kleiner ist als x, enthält 3, die kleiner sind als x eine Gruppe, deren Median größer ist als x, enthält 3, die größer sind als x damit ist die Anzahl der, die kleiner sind als x, mindestens 1 l n m ı εn = 3( 2) n 6. entsprechendes gilt für die Mindestanzahl der, die kleiner als x sind 11 / / 55

4 Illustration: 1 2 n+5 n 10 5 Pivotelement: Median der Mediane Mediane der Gruppen mit einem ähnlichen Argument lässt sich zeigen, dass das Pivotelement zufällig gewählt werden kann: ein Element x heiße zentral, falls höchstens damit sind 3 4 größer sind als x, und kleiner sind als x aller zentral mit hoher Wahrscheinlichkeit ist ein zufällig gewähltes Element zentral und das Verfahren hat eine erwartete Laufzeit, die linear ist n n 6 13 / / 55 Die Listen seien als Feld A implementiert mit n n in den Positionen 1... n. Gliederung das Auswahlproblem (Medianbestimmung) Suchen in unsortierten Listen Suchen in sortierten Listen selbstorganisierende Listen Sequentielle Suche (wie in Kapitel 1) sequential_search (A, n, k) // durchsucht A[1..n] nach n mit Schlüssel k, // liefert Position eines solchen, falls existent, sonst 0 A(0) = k i = n+1 repeat i = i-1 until A(i) = k end do return i 15 / / 55

5 Gliederung Analyse des Suchens in unsortierten Listen offensichtlich gilt: C min (n) = 1, C max (n) = n + 1, C avg (n) = 1 n P n i=1 i = n+1 2 für eine erfolgreiche Suche. Analog für verkettete Listen. das Auswahlproblem (Medianbestimmung) Suchen in unsortierten Listen Suchen in sortierten Listen binäre Suche Fibonacci-Suche exponentielle Suche weitere Suchverfahren selbstorganisierende Listen 17 / / 55 nichtrekursive Implementierung Ab jetzt nehmen wir an, dass die Liste sortiert ist, also: A(1) A(2) A(n) Binäre Suche Divide and Conquer: vergleiche mit dem Schlüssel in der Mitte der Liste, Treffer: STOP, kleiner : durchsuche links von der Mitte, größer : durchsuche rechts von der Mitte. binary_search(a, l, r, k) // sucht nach Schlüssel k im Bereich A[l..r], // liefert 0, falls nicht vorhanden m = (l+r)/2 while ((A(m) k) und (l r)) do if (k < A(m)) r = m - 1 else l = m + 1 end if m = (l+r)/2 end while if (k = A(m)) return m else return 0 end if 19 / / 55

6 Analyse der binären Suche: best case: C min (n) = Θ(1) (sofortiger Treffer). Beispiel: n = 7 = (k = 3): der allgemeine Fall: Position wie lange dauert es, ein Element an Position 1 i n zu finden? vereinfachende Annahmen: n = 2 k 1 für geeignetes k (d.h. k = log(n + 1)) eine Zeiteinheit (ZE) für Bestimmung der Mitte Entscheidung, ob links weiter oder rechts weiter oder Treffer sofortiger Treffer: 1 ZE Treffer in der Mitte links oder rechts: 2 ZE... Zeiteinheiten ZE für mittleres Element 2 ZE für mittleres in linker Hälfte 2 ZE für mittleres in rechter Hälfte 3 ZE für die vier anderen worst case: k = log(n + 1) ZE, C max (n) = Θ(log n) (erfolgreich oder -los) 21 / / 55 average case: Lemma Anzahl ZE Positionen Produkt aufsummiert k 2 k 1 k 2 k 1 P k i=1 i 2i 1 ergibt eine durchschnittliche Zeit von: 1 n. kx i 2 i 1. i=1. kx i 2 i 1 = (k 1) 2 k + 1. i=0 Beweis: per Induktion k = 1 : 1 = (k 1) 2 k + 1. k > 1 : kx Xk 1 i 2 i 1 = i 2 i 1 + k 2 k 1 i=0 i=0 = (k 2) 2 k k 2 k 1 (per Induktion) = 2k 2 k k = k 2 k 1 2 k + 1 = (k 1) 2 k / / 55

7 Mit k = log(n + 1) folgt: C avg = 1 n kx i 2 i 1 i=0 Gliederung das Auswahlproblem (Medianbestimmung) = 1 n (k 1) 2k + 1 = 1 h i (log(n + 1) 1)(n + 1) + 1 n = 1 h i (n + 1) log(n + 1) n n = n + 1 n = log(n + 1) + log(n + 1) 1 log(n + 1) n 1 n log(n + 1) 1 Suchen in unsortierten Listen Suchen in sortierten Listen binäre Suche Fibonacci-Suche exponentielle Suche weitere Suchverfahren selbstorganisierende Listen C avg (n) = Θ(log n) und nur eine Zeiteinheit weniger als im worst-case. 25 / / 55 Grundidee wie bei der Binärsuche aber andere asymmetrische Aufteilung Aufteilung erfolgt anhand der Fibonacci-Zahlen keine Divisionen zur Bestimmung der Mitte, nur Additionen und Subtraktionen Fibonacci-Zahlen sind durch folgende Rekursion gegeben: F 0 = 0 F 1 = 1 F m = F m 1 + F m 2 für m 2 Beispiel: m F m / / 55

8 Fibonacci-Zahlen sind durch folgende Rekursion gegeben: F 0 = 0 F 1 = 1 F m = F m 1 + F m 2 für m 2 vereinfachende Annahme: sei n = F m 1 für geeignetes m dann ist F m 1 = F m F m das Intervall [1,..., F m 1] zerfällt an der Position F m 2 in zwei Intervalle der Länge F m 2 1 und F m 1 1. Lemma F m = 1» «m «m = «m Beispiel für (m = 8): 1 8 = i = Fm 2 20 = n = Fm 1 Beweis: per Induktion. Hierbei steht für Abrunden. 7 = Fm = Fm / / 55 Beispiel für (m = 8): 1 8 = i = Fm 2 20 = n = Fm = i = Fm 2 20 = n = Fm 1 7 = Fm = Fm = Fm = Fm 1 1 Fibonacci-Suche Sei n = F m 1 für geeignetes m 2. setze i = F m 2 vergleiche den zu suchenden Schlüssel k mit A(i): A(i) = k : Suche erfolgreich A(i) > k : suche im linken Bereich mit F m 2 1 n A(i) < k : suche im rechten Bereich mit F m 1 1 n Suche im rechten Bereich: Suche im linken Bereich: 1 5 = i = Fm 3 12 = Fm = Fm = Fm = i = Fm 4 7 = Fm = Fm = Fm / / 55

9 nach dem letzten Lemma ist F m c m mit einer Konstanten c Analyse der Fibonacci-Suche wir starten mit einem Intervall der Länge F m 1 das nächste Intervall hat eine Länge von höchstens F m das j-te Intervall hat eine Länge von höchstens F m j+1 1 das Verfahren bricht ab, sobald F m j+1 1 = 1 m j + 1 = 3 damit benötigen wir höchstens m Schlüsselvergleiche für n + 1 = F m c m benötigen wir maximal m Vergleiche damit folgt: C max (n) = Θ(log (n + 1)) = Θ(log 2 n) es gilt auch (ohne Beweis): C avg (n) = Θ(log 2 n). damit haben wir die gleiche Größenordnung wie bei der Binärsuche, aber hier haben wir keine Divisionen (Shifts), nur Additionen und Subtraktionen 33 / / 55 programmtechnische Umsetzung für n = F m 1 wir speichern ein Paar (f 1, f 2 ) = (F m 3, F m 2 ) wir testen an der Stelle f 2 falls Suche im rechten Intervall fortgesetzt wird (Länge F m 1 1): ist f 1 = 0 : F m 3 = 0, F m 2 = 1 F m 1 1 = F m 3 + F m 2 1 = 0 d.h. die Suche bricht ab andernfalls merken wir uns (f 1, f 2) = (F m 4, F m 3 ) = (f 2 f 1, f 1 ) programmtechnische Umsetzung für n = F m 1 wir speichern ein Paar (f 1, f 2 ) = (F m 3, F m 2 ) wir testen an der Stelle f 2 falls Suche im linken Intervall fortgesetzt wird (Länge F m 2 1) : ist f 2 = 1 F m 2 1 = 0 d.h. die Suche bricht ab andernfalls merken wir uns (f 1, f 2) = (F m 5, F m 4 ) = (2f 1 f 2, f 2 f 1 ) 35 / / 55

10 fibonacci_search(a, m, k) // sucht für n = F(m)-1 im Bereich A[1..n] nach Position // mit Schlüssel k; liefert 0, falls nicht vorhanden pos = -1; f1 = F(m-3); f2 = F(m-2); i = f2; while (pos < 0) do if (k > A(i)) // Durchsuche den oberen Bereich if (f1 = 0) then pos = 0 // nicht vorhanden else i = i + f1 t = f1 f1 = f2 - f1 f2 = t end if else if (k < A(i)) // Durchsuche den unteren Bereich if (f2 = 1) then pos = 0 // nicht vorhanden else i = i - f1 f2 = f2 - f1 f1 = f1 -f2 end if else pos = i end if return pos // gefunden 37 / 55 Gliederung das Auswahlproblem (Medianbestimmung) Suchen in unsortierten Listen Suchen in sortierten Listen binäre Suche Fibonacci-Suche exponentielle Suche weitere Suchverfahren selbstorganisierende Listen 38 / 55 Szenario: n ist sehr groß, oder unbekannt Dann ist es sinnvoll, zuerst einen Bereich zu bestimmen, in dem ein gegebener Schlüssel liegen muss. Idee der exponentiellen Suche wir verdoppeln in jedem Schritt den Suchbereich bis wir ein Intervall gefunden haben mit A( i 2 ) < k A(i) in diesem Intervall suchen wir binär weiter. exponential_search(a, 1, n, k) // suche nach Position mit Schlüssel k im Bereich A[1..n] if ((k < A(1) or k > A(n))) return 0 else i = 1 while ((k > A(i)) und (i < n)) do i = i + i if (i > n) i = n return binary_search(a,i/2,i,k) / / 55

11 Analyse der exponentiellen Suche Annahme: alle Schlüssel sind verschieden, positiv und ganzzahlig. Schlüssel wachsen mindestens so schnell wie die Indizes der wird in der while-schleife d -mal verdoppelt, so gilt 2 d 1 A(2 d 1 ) < k < A(2 d ) d < 1 + log k = Θ(log k ) Vergleiche der Suchbereich enthält dann höchstens 2 d 1 < k Schlüssel Θ(log k ) Vergleiche in binary_search im worst case die Gesamtlaufzeit beträgt somit Θ(log k ). sinnvoll, wenn k n gilt. Gliederung das Auswahlproblem (Medianbestimmung) Suchen in unsortierten Listen Suchen in sortierten Listen binäre Suche Fibonacci-Suche exponentielle Suche weitere Suchverfahren selbstorganisierende Listen 41 / / 55 Interpolationssuche sucht man im Telefonbuch den Namen Ackermann, so wird man vorne aufschlagen, bei Knuth eher in der Mitte die Sondierung wird somit in Abhängigkeit von der Verteilung der Namen gewählt m Binärsuche testet stets in der Mitte des Intervalls m = ll + 12 (r l) die Interpolationssuche interpoliert die Schlüssel linear zwischen den Intervallgrenzen A(l) A(r) m = l m l + k A(l) (r l). A(r ) A(l) Satz Sind die n Schlüssel unabhängig und gleichverteilt aus einem Intervall I, so beträgt die mittlere Suchzeit O(log log n). Aber der worst-case beträgt Θ(n) und ist damit schlechter als binäre Suche: Beispiel: A(i) = n für 1 i < n A(n) = 2n k = n + 1 dann liefert die Interpolationssuche m = l + k A(l) ı (r l) = 1 + n + 1 n ı (n 1) = 2 A(r ) A(l) 2n n und danach m = 3, 4, 5... l r 43 / / 55

12 quadratische Binärsuche Versuch, unter Beibehaltung der guten mittleren Laufzeit die worst-case-laufzeit zu verbessern: seien wie vorher A(1) <... < A(n) zusätzlich A(0) < A(1), A(n + 1) > A(n) führe einen Schritt der Interpolationssuche aus teile das verbleibende Suchintervall in Subintervalle der Größe n auf führe lineare Suche auf diesen Subintervallen duch und bestimme das Subintervall, in dem x liegen müsste wende das Verfahren rekursiv auf dieses Subintervall an. setze l := 0, r := n + 1 und rufe quadratische Binärsuche(A,k,l,r) auf. quadratische Binärsuche (A,k,l,r) l m (1) setze aktuell := l + k A(l) (r l) A(r ) A(l) (2) ist k = A(aktuell), stop. (3) ist k > A(aktuell), setze l := aktuell + 1 (4) ist k < A(aktuell), setze r := aktuell 1 (5) bestimme durch lineare Suche ein i mit A(l + (i 1) n ˇ) k A(l + i n ˇ) (6) wende Verfahren rekursiv an auf das Intervall [l + (i 1) n ˇ, l + i n ˇ]. n n n n n 45 / / 55 Es lässt sich zeigen: Lemma Seien die Schlüssel unabhängig und gleichverteilt über (A(0), A(n + 1)). Dann ist die mittlere Anzahl C der Vergleiche pro Programmaufruf der quadratischen Binärsuche höchstens 3. das Verfahren findet im Mittel nach drei Schritten das Intervall der Größe n, in dem k liegen müsste. Daraus lässt sich die mittlere Laufzeit abschätzen: Satz Unter der obigen Voraussetzung betragen die mittleren Kosten T avg (n) der quadratischen Binärsuche O(log log n). Beweis: Es gilt: T avg (1) 1, T avg (2) 2 und T avg (n) C + T avg ( n) für n 3. Wir zeigen per Induktion T avg (n) 2 + C log log n: T avg (n + 1) C + T avg ( n + 1) = C C log log((n + 1) 1 2 ) = C C log 1 log(n + 1) 2 = 2 + C log log(n + 1) Im schlimmsten Fall beträgt die Suchzeit n n = O( n) Einheiten. 47 / / 55

13 exponentielle und binäre Suche 2. Versuch, unter Beibehaltung der guten mittleren Laufzeit die worst-case-laufzeit zu verbessern: seien wie vorher A(1) <... < A(n) zusätzlich A(0) < A(1), A(n + 1) > A(n) führe einen Schritt der Interpolationssuche aus zerlege das verbleibende Suchintervall in Subintervalle der Größe n, 2 n, 4 n,... 2 i n auf teile das verbleibende Suchintervall in Subintervalle der Größe n auf führe binäre Suche auf diesen Subintervallen durch und bestimme das Subintervall, in dem x liegen müsste wende das Verfahren rekursiv auf dieses Subintervall an. setze l := 0, r := n + 1 und rufe quadratische Binärsuche(A,k,l,r) auf. exponentielle und binäre Suche (A,k,l,r) l m (1) setze aktuell := l + k A(l) (r l) A(r ) A(l) (2) ist k = A(aktuell), stop. (3) ist k > A(aktuell), setze l := aktuell + 1 (4) ist k < A(aktuell), setze r := aktuell 1 (5) bestimme: S(l + 2 i 1 n) < k S(l + 2 i n). (6) auf dem Intervall [l + 2 i 1 n, l + 2 i n] bestimme j durch binäre Suche mit S(l + (j 1) n) < k S(l + j n). (7) wende Verfahren rekursiv auf das Intervall [l + (j 1) n, l + j n] an 49 / / 55 Gliederung das Auswahlproblem (Medianbestimmung) Satz Unter der obigen Voraussetzung gilt für die exponentielle und binäre Suche: die Anzahl der Vergleiche im schlechtesten Fall ist O(log n) die Anzahl der Vergleiche im Mittel ist O(log log n) ( da log i i) Suchen in unsortierten Listen Suchen in sortierten Listen binäre Suche Fibonacci-Suche exponentielle Suche weitere Suchverfahren selbstorganisierende Listen 51 / / 55

14 Szenario: Datenstruktur: verkettete, unsortierte Listen wiederholte Suchanfragen unterschiedliche Häufigkeiten für die Schlüssel organisiere Liste so um, dass häufige Anfragen am Anfang der Liste Strategien: Bei jeder Anfrage an einen Schlüssel: vertausche Listenelement mit Element davor, oder erhöhe einen Anfragenzähler und sortiere nach fallendem Zähler, oder setze Element an die Spitze der Liste. 53 / / 55 zur Suche haben wir bisher lediglich Vergleichsoperationen auf den Schlüsseln zugelassen wir werden im nächsten Kapitel arithmetische Operationen auf den Schlüsseln erlauben, um daraus die mögliche Position des Datums zu berechnen. 55 / 55

Fibonacci-Suche. Informatik I. Fibonacci-Suche. Fibonacci-Suche. Einführung. Rainer Schrader. 24. Mai 2005

Fibonacci-Suche. Informatik I. Fibonacci-Suche. Fibonacci-Suche. Einführung. Rainer Schrader. 24. Mai 2005 Fibonacci-Suche Informatik I Einführung Rainer Schrader Zentrum für Angewandte Informatik Köln 4. Mai 005 Grundidee wie bei der Binärsuche, aber andere Aufteilung Fibonacci-Zahlen: F 0 = 0 F 1 = 1 F m

Mehr

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle 119 4. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Exponentielle Suche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.1-3,2.2-3,2.3-5] 120 Das Suchproblem Gegeben

Mehr

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array Das Suchproblem Gegeben. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Exponentielle Suche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.-3,2.2-3,2.3-] Menge

Mehr

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle 122 4. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.1-3,2.2-3,2.3-5] 123 Das Suchproblem Gegeben Menge von Datensätzen.

Mehr

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array Das Suchproblem Gegeben. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.-3,2.2-3,2.3-] Menge von Datensätzen. Beispiele

Mehr

3. Suchen. Das Suchproblem. Suche in Array. Lineare Suche. 1 n. i = n Gegeben Menge von Datensätzen.

3. Suchen. Das Suchproblem. Suche in Array. Lineare Suche. 1 n. i = n Gegeben Menge von Datensätzen. Das Suchproblem Gegeben Menge von Datensätzen. 3. Suchen Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle Jeder Datensatz hat einen Schlüssel k. Schlüssel sind vergleichbar: eindeutige Antwort auf

Mehr

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion Experiment: Die Türme von Hanoi. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration Links Mitte Rechts Mathematische Rekursion Viele mathematische Funktionen

Mehr

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion: Übungsblatt 1 Aufgabe 1.1 Beweisen oder widerlegen Sie, dass für die im Folgenden definierte Funktion f(n) die Beziehung f(n) = Θ(n 4 ) gilt. Beachten Sie, dass zu einem vollständigen Beweis gegebenenfalls

Mehr

Mi, 21. Mai, ab 12:30 Uhr, in E23 (OH14) Dann ab 14:30 Uhr: Motivation: Gegeben: hier: später: Aufgabe:

Mi, 21. Mai, ab 12:30 Uhr, in E23 (OH14) Dann ab 14:30 Uhr: Motivation: Gegeben: hier: später: Aufgabe: Kap. 4: Suchen in Datenmengen Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund 0. VO DAP2 SS 2008 5. Mai 2008 Ankündigung Mentoring Mi, 2. Mai, ab 2:30 Uhr, in

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Algorithmen und Datenstrukturen Teil 3 Suchen in Listen Version vom: 15. November 2016

Mehr

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer Institut für Informatik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg

Mehr

Algorithmen und Datenstrukturen Suchen

Algorithmen und Datenstrukturen Suchen Algorithmen und Datenstrukturen Suchen Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Lernziele der Vorlesung Algorithmen Sortieren, Suchen, Optimieren

Mehr

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern Datenstrukturen und Algorithmen 7. Suchen in linearen Feldern VO 708.031 Suchen in linearen Feldern robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische

Mehr

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Kapitel 2. Weitere Beispiele Effizienter Algorithmen Kapitel 2 Weitere Beispiele Effizienter Algorithmen Sequentielle Suche Gegeben: Array a[1..n] Suche in a nach Element x Ohne weitere Zusatzinformationen: Sequentielle Suche a[1] a[2] a[3] Laufzeit: n Schritte

Mehr

Kap. 3: Sortieren (3)

Kap. 3: Sortieren (3) Kap. 3: Sortieren (3) Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund 6. VO DAP2 SS 2009 30. April 2009 Überblick Quick-Sort Analyse von Quick-Sort Quick-Sort

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

G. Zachmann Clausthal University, Germany

G. Zachmann Clausthal University, Germany lausthal Informatik II Suchen lausthal University, ermany zach@in.tu-clausthal.de Problemstellung egeben ist eine Menge von Datensätzen {A1,...,An} esucht sind die Datensätze, deren Schlüssel (Key) = A[i].key

Mehr

2. Einfache Suchverfahren

2. Einfache Suchverfahren Lineare Listen Sequentielle Suche Binäre Suche. Einfache Suchverfahren Weitere Suchverfahren auf sortierten Feldern - Fibonacci-Suche - Sprungsuche - Exponentielle Suche - Interpolationssuche Auswahlproblem

Mehr

6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind.

6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind. Algorithmen und Datenstrukturen 132 6 Quicksort In diesem Abschnitt wird Quicksort, ein weiterer Sortieralgorithmus, vorgestellt. Trotz einer eher langsamen Worst-Case Laufzeit von Θ(n 2 ) ist Quicksort

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010

Mehr

Teil 6: Algorithmen und Datenstrukturen 6.3 Suchalgorithmen Prof. Dr. Max Mühlhäuser FG Telekooperation TU-Darmstadt

Teil 6: Algorithmen und Datenstrukturen 6.3 Suchalgorithmen Prof. Dr. Max Mühlhäuser FG Telekooperation TU-Darmstadt Grundzüge der Informatik 1 Teil 6: Algorithmen und Datenstrukturen 6.3 Suchalgorithmen Prof. Dr. Max Mühlhäuser FG Telekooperation TU-Darmstadt Agenda Grundlegendes zu Suchalgorithmen Kennenlernen der

Mehr

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften Heapsort, Quicksort, Mergesort 14. Sortieren II 14.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 397 398 Heapsort [Max-]Heap 7 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum

Mehr

Proseminar Effiziente Algorithmen

Proseminar Effiziente Algorithmen Proseminar Effiziente Algorithmen Kapitel 4: Sortieren, Selektieren und Suchen Prof. Dr. Christian Scheideler WS 2017 Übersicht Sortieren Selektieren Suchen 08.11.2017 Proseminar EA 2 Sortierproblem 5

Mehr

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften Heapsort, Quicksort, Mergesort 8. Sortieren II 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 9 210 Heapsort [Max-]Heap 6 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum mit

Mehr

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Heapsort, Quicksort, Mergesort. 8. Sortieren II 209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 211 Heapsort Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:

Mehr

ADS: Algorithmen und Datenstrukturen

ADS: Algorithmen und Datenstrukturen .. ADS: Algorithmen und Datenstrukturen Zweite Vorlesung Uwe Quasthoff Abteilung Automatische Sprachverarbeitung Institut für Informatik Universität Leipzig 19. Oktober 2011 Einfache Suchverfahren Lineare

Mehr

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Heapsort, Quicksort, Mergesort. 8. Sortieren II 209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] Heapsort 211 Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:

Mehr

Einführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst.

Einführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst. Einführung Elementare Datenstrukturen (Folie 38, Seite 23 im Skript) Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst. Einführung Elementare Datenstrukturen

Mehr

Das Divide - and - Conquer Prinzip. Quicksort Formulierung und Analyse des Prinzips Geometrisches Divide and Conquer - Closest-Pair - Segmentschnitt

Das Divide - and - Conquer Prinzip. Quicksort Formulierung und Analyse des Prinzips Geometrisches Divide and Conquer - Closest-Pair - Segmentschnitt Divide and Conquer Das Divide - and - Conquer Prinzip Quicksort Formulierung und Analyse des Prinzips Geometrisches Divide and Conquer - Closest-Pair - Segmentschnitt 2 Quicksort: Sortieren durch Teilen

Mehr

Ein sortiertes Feld kann in O(log n) durchsucht werden, z.b. mit Binärsuche. Der Algorithmus 1 gibt den Pseudocode der binären Suche an.

Ein sortiertes Feld kann in O(log n) durchsucht werden, z.b. mit Binärsuche. Der Algorithmus 1 gibt den Pseudocode der binären Suche an. 2.5 Suchen Eine Menge S will nach einem Element durchsucht werden. Die Menge S ist statisch und S = n. S ist Teilmenge eines Universums auf dem eine lineare Ordnung definiert ist und soll so gespeichert

Mehr

Einführung in die Informatik I Kapitel II.1: Suchen

Einführung in die Informatik I Kapitel II.1: Suchen 1 Einführung in die Informatik I Kapitel II.1: Suchen Prof. Dr.-Ing. Marcin Grzegorzek Juniorprofessur für Mustererkennung im Institut für Bildinformatik Department Elektrotechnik und Informatik Fakultät

Mehr

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen Kapitel 10 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen 1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

Auswählen nach Rang (Selektion)

Auswählen nach Rang (Selektion) Auswählen nach Rang (Selektion) Geg.: Folge X von n Schlüsseln, eine Zahl k mit k n Ges.: ein k-kleinster Schlüssel von X, also den Schlüssel x k für X sortiert als x x 2 L x n trivial lösbar in Zeit O(kn)

Mehr

Theoretische Informatik. Exkurs: Komplexität von Optimierungsproblemen. Optimierungsprobleme. Optimierungsprobleme. Exkurs Optimierungsprobleme

Theoretische Informatik. Exkurs: Komplexität von Optimierungsproblemen. Optimierungsprobleme. Optimierungsprobleme. Exkurs Optimierungsprobleme Theoretische Informatik Exkurs Rainer Schrader Exkurs: Komplexität von n Institut für Informatik 13. Mai 2009 1 / 34 2 / 34 Gliederung Entscheidungs- und Approximationen und Gütegarantien zwei Greedy-Strategien

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

Wiederholung. Divide & Conquer Strategie

Wiederholung. Divide & Conquer Strategie Wiederholung Divide & Conquer Strategie Binäre Suche O(log n) Rekursives Suchen im linken oder rechten Teilintervall Insertion-Sort O(n 2 ) Rekursives Sortieren von a[1..n-1], a[n] Einfügen von a[n] in

Mehr

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Breitensuche, Tiefensuche Wir besprechen nun zwei grundlegende Verfahren, alle Knoten eines Graphen zu

Mehr

2. Effizienz von Algorithmen

2. Effizienz von Algorithmen Effizienz von Algorithmen 2. Effizienz von Algorithmen Effizienz von Algorithmen, Random Access Machine Modell, Funktionenwachstum, Asymptotik [Cormen et al, Kap. 2.2,3,4.2-4.4 Ottman/Widmayer, Kap. 1.1]

Mehr

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 2 Prof. Dr. Helmut Seidl, S. Pott,

Mehr

JAVA - Suchen - Sortieren

JAVA - Suchen - Sortieren Übungen Informatik I JAVA - Suchen - Sortieren http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik

Mehr

in eine Folge ai, so daß bezgl. einer Ordnung gilt: a a, j < n

in eine Folge ai, so daß bezgl. einer Ordnung gilt: a a, j < n 6. Sortieren Umordnen von Objekten a in eine Folge ai,..., ai n, so daß bezgl. einer Ordnung gilt: a a, j < n Begriffe: ij i j + ) Stabilität : Ein Sortierverfahren heißt stabil, falls die relative Reihenfolge

Mehr

3.2. Divide-and-Conquer-Methoden

3.2. Divide-and-Conquer-Methoden LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE 3.2. Divide-and-Conquer-Methoden Divide-and-Conquer-Methoden Einfache Sortieralgorithmen reduzieren die Größe des noch

Mehr

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Breitensuche, Tiefensuche Wir besprechen nun zwei grundlegende Verfahren, alle Knoten eines Graphen zu

Mehr

Suchen und Sortieren Sortieren. Mergesort

Suchen und Sortieren Sortieren. Mergesort Suchen und Mergesort (Folie 142, Seite 55 im Skript) Algorithmus procedure mergesort(l, r) : if l r then return fi; m := (r + l)/2 ; mergesort(l, m 1); mergesort(m, r); i := l; j := m; k := l; while k

Mehr

A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7.

A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7. Algorithmen und Datenstrukturen 14. März 2018 A7. III Algorithmen und Datenstrukturen A7. III Marcel Lüthi and Gabriele Röger Universität Basel 14. März 2018 A7.1 Untere Schranke A7.2 Quicksort A7.3 Heapsort

Mehr

Algorithmen und Datenstrukturen 1-1. Seminar -

Algorithmen und Datenstrukturen 1-1. Seminar - Algorithmen und Datenstrukturen 1-1. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Wintersemester 2009/10 Inhalt der ersten beiden Vorlesungen Algorithmenbegriff Komplexität, Asymptotik

Mehr

Algorithmen und Datenstrukturen Heapsort

Algorithmen und Datenstrukturen Heapsort Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das

Mehr

Randomisierte Algorithmen

Randomisierte Algorithmen Randomisierte Algorithmen Randomisierte Algorithmen 5. Zwei spieltheoretische Aspekte Thomas Worsch Fakultät für Informatik Karlsruher Institut für Technologie Wintersemester 2015/2016 1 / 36 Überblick

Mehr

186.172 Algorithmen und Datenstrukturen 1 VL 4.0 1. Übungstest WS 2010/11 26. November 2010

186.172 Algorithmen und Datenstrukturen 1 VL 4.0 1. Übungstest WS 2010/11 26. November 2010 Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 1. Übungstest WS 2010/11 26.

Mehr

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web:

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web: Algorithmen I Prof. Jörn Müller-Quade 24.05.2017 Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?id=799 (Folien von Peter Sanders) KIT Institut für Theoretische Informatik

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen A7. Sortieren III Marcel Lüthi and Gabriele Röger Universität Basel 14. März 2018 Untere Schranke Sortierverfahren Sortieren Vergleichsbasierte Verfahren Nicht vergleichsbasierte

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 2. Vorlesung Prof. Dr. Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Einfache Suchverfahren Lineare Listen Sequentielle Suche

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr.

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr. Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Fortgeschrittene Datenstrukturen Such-Algorithmen

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 27.10.2011 stefan.klampfl@tugraz.at 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:

Mehr

Änderung zur Übung. Kap. 4.4: B-Bäume. Motivation. Überblick. Motivation für B-Bäume. B-Bäume. Warum soll ich heute hier bleiben?

Änderung zur Übung. Kap. 4.4: B-Bäume. Motivation. Überblick. Motivation für B-Bäume. B-Bäume. Warum soll ich heute hier bleiben? Kap. 4.4: B-Bäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 14. VO DAP2 SS 2008 3. Juni 2008 Änderung zur Übung ab jetzt: weniger Ü-Aufgaben, aber immer

Mehr

4. Sortieren 4.1 Vorbemerkungen

4. Sortieren 4.1 Vorbemerkungen . Seite 1/21 4. Sortieren 4.1 Vorbemerkungen allgemeines Sortierproblem spezielle Sortierprobleme Ordne a 1,..., a n so um, dass Elemente in aufsteigender Reihenfolge stehen. Die a i stammen aus vollständig

Mehr

Asymptotische Laufzeitanalyse: Beispiel

Asymptotische Laufzeitanalyse: Beispiel Asyptotische Laufzeitanalyse: n = length( A ) A[j] = x GZ Algorithen u. Datenstrukturen 1 31.10.2013 Asyptotische Laufzeitanalyse: n = length( A ) A[j] = x GZ Algorithen u. Datenstrukturen 2 31.10.2013

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 2 (22.4.2016) Sortieren II Algorithmen und Komplexität SelectionSort: Programm Schreiben wir doch das gleich mal als Java/C++ - Programm

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 018/19 6. Vorlesung Prioritäten setzen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I - 4 Heute: Wir bauen eine Datenstruktur Datenstruktur: Konzept,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 01/13 6. Vorlesung Prioritäten setzen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Guten Morgen! Tipps für unseren ersten Test am 0. November: Lesen

Mehr

Kapitel 6 Elementare Sortieralgorithmen

Kapitel 6 Elementare Sortieralgorithmen Kapitel 6 Elementare Sortieralgorithmen Ziel: Kennenlernen elementarer Sortierverfahren und deren Effizienz Zur Erinnerung: Das Sortier-Problem Gegeben: Folge A von n Elementen a 1, a 2,..., a n ; Eine

Mehr

Formaler. Gegeben: Elementfolge s = e 1,...,e n. s ist Permutation von s e 1 e n für eine lineare Ordnung ` '

Formaler. Gegeben: Elementfolge s = e 1,...,e n. s ist Permutation von s e 1 e n für eine lineare Ordnung ` ' Sortieren & Co 164 165 Formaler Gegeben: Elementfolge s = e 1,...,e n Gesucht: s = e 1,...,e n mit s ist Permutation von s e 1 e n für eine lineare Ordnung ` ' 166 Anwendungsbeispiele Allgemein: Vorverarbeitung

Mehr

Suchen und Sortieren

Suchen und Sortieren Suchen und Sortieren Suchen Sortieren Mischen Zeitmessungen Bewertung von Sortier-Verfahren Seite 1 Suchverfahren Begriffe Suchen = Bestimmen der Position (Adresse) eines Wertes in einer Datenfolge Sequentielles

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2018/19 10. Vorlesung Das Auswahlproblem Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2-1 Kleine Vorlesungsevaluierung : Ergebnisse Was läuft gut?

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Untere Schranken für Sortieren Sortieren mit linearem Aufwand Mediane und Ranggrössen 2 Wie schnell können wir sortieren?

Mehr

Quicksort ist ein Divide-and-Conquer-Verfahren.

Quicksort ist ein Divide-and-Conquer-Verfahren. . Quicksort Wie bei vielen anderen Sortierverfahren (Bubblesort, Mergesort, usw.) ist auch bei Quicksort die Aufgabe, die Elemente eines Array a[..n] zu sortieren. Quicksort ist ein Divide-and-Conquer-Verfahren.

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 6. Vorlesung Martin Middendorf / Universität Leipzig Institut für Informatik middendorf@informatik.uni-leipzig.de studla@bioinf.uni-leipzig.de Merge-Sort Anwendbar für

Mehr

Algorithmen II Vorlesung am

Algorithmen II Vorlesung am Algorithmen II Vorlesung am 03.12.2013 Algorithmische Geometrie: Schnitte von Strecken Sweep-Line INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg

Mehr

Algorithmik Übung 3 Prof. Dr. Heiner Klocke. Sortierfolge nach Werten: 7 8 9 10 Bube Dame König As nach Farben: Karo ( ) Herz ( ) Piek ( ) Kreuz ( )

Algorithmik Übung 3 Prof. Dr. Heiner Klocke. Sortierfolge nach Werten: 7 8 9 10 Bube Dame König As nach Farben: Karo ( ) Herz ( ) Piek ( ) Kreuz ( ) Algorithmi Übung 3 Prof. Dr. Heiner Kloce Winter 11/12 16.10.2011 Divide&Conquer- Algorithmen lassen sich gut als reursive Algorithmen darstellen. Das Prinzip eines reursiven Algorithmus beruht darauf,

Mehr

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1 Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 05/06 ITI Wagner. Musterlösung Problem : Average-case-Laufzeit vs. Worst-case-Laufzeit ** (a) Im schlimmsten Fall werden für jedes Element

Mehr

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n)

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n) Beim Logarithmischen Kostenmaß wird, im Gegensatz zum EKM, die Stelligkeit der Werte berücksichtigt und mit in die Laufzeit eingerechnet. Beispiel: R1 := R2 (R3), wobei R2 den Wert 5, R3 den Wert 10 und

Mehr

QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert

QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert 4.3.6 QuickSort QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert QuickSort teilt das gegebene Array anhand

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 3 (27.4.2014) O-Notation, Asymptotische Analyse, Sortieren III Algorithmen und Komplexität Selection Sort Algorithmus SelectionSort (informell):

Mehr

Heapsort. Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen / 50

Heapsort. Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen / 50 Heapsort Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen 27.6.2007 / 50 Heapsort - Wiederholung Definition Array A[..n] mit Einträgen aus (U,

Mehr

> Parallele Systeme Übung: 4. Übungsblatt Philipp Kegel Wintersemester 2012/2013. Parallele und Verteilte Systeme, Institut für Informatik

> Parallele Systeme Übung: 4. Übungsblatt Philipp Kegel Wintersemester 2012/2013. Parallele und Verteilte Systeme, Institut für Informatik > Parallele Systeme Übung: 4. Übungsblatt Philipp Kegel Wintersemester 2012/2013 Parallele und Verteilte Systeme, Institut für Informatik Inhaltsverzeichnis 2 1 Besprechung des 4. Übungsblattes Aufgabe

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Große Übung #6 Phillip Keldenich, Arne Schmidt 26.02.2017 Heute: Master-Theorem Phillip Keldenich, Arne Schmidt Große Übung 2 Vorbetrachtungen Wir betrachten rekursive Gleichungen

Mehr

Schleifeninvarianten. Dezimal zu Binär

Schleifeninvarianten. Dezimal zu Binär Schleifeninvarianten Mit vollstandiger Induktion lasst sich auch die Korrektheit von Algorithmen nachweisen. Will man die Werte verfolgen, die die Variablen beim Ablauf eines Algorithmus annehmen, dann

Mehr

Sortieren & Co. KIT Institut für Theoretische Informatik

Sortieren & Co. KIT Institut für Theoretische Informatik Sortieren & Co KIT Institut für Theoretische Informatik 1 Formaler Gegeben: Elementfolge s = e 1,...,e n Gesucht: s = e 1,...,e n mit s ist Permutation von s e e 1 n für eine Totalordnung ` ' KIT Institut

Mehr

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen. Aufgabe 8 Betrachten Sie den folgenden Algorithmus namens Bubble-Sort. Bubble-Sort(A[1..n]): 1 for i 1 to length(a) 1 2 do for j length(a) downto i + 1 3 do if A[j 1] > A[j] 4 then A[j 1] A[j] 1 Arbeitsweise

Mehr

Algorithmen und Datenstrukturen I. Grundlagen. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Algorithmen und Datenstrukturen I. Grundlagen. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Algorithmen und Datenstrukturen I Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 18:16 Inhaltsverzeichnis Algorithmus..................................... 2 Problem

Mehr

Datenstrukturen und Algorithmen (SS 2013)

Datenstrukturen und Algorithmen (SS 2013) Datenstrukturen und Algorithmen (SS 2013) Präsenzübung Musterlösung Dienstag, 28.05.2013 Aufgabe 1 (Allgemeine Fragen [20 Punkte]) 1. Tragen Sie in der folgenden Tabelle die Best-, Average- und Worst-Case-

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Sortierverfahren 1. Schreibtischtest 2. Stabilität 3. Sortierung spezieller Arrays 4. Untere

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen

Mehr

2. Einfache Suchverfahren. Beispiel-Spezifikation in Java. Lineare Listen (2) Lineare Listen Sequentielle Suche Binäre Suche

2. Einfache Suchverfahren. Beispiel-Spezifikation in Java. Lineare Listen (2) Lineare Listen Sequentielle Suche Binäre Suche Lineare Listen Sequentielle Suche Binäre Suche. Einfache Suchverfahren Weitere Suchverfahren auf sortierten Feldern - Fibonacci-Suche - Sprungsuche - Exponentielle Suche - Interpolationssuche Auswahlproblem

Mehr

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2 Jan Pöschko 18. Januar 2007 Inhaltsverzeichnis 1 Problemstellung 2 1.1 Definition................................... 2 1.2 Warum Sortieren?.............................. 2 2 Einfache Sortieralgorithmen

Mehr

Programmiertechnik II

Programmiertechnik II Sortieren: Einfache Algorithmen Sortieren Abstrakte Operation geg: Menge von items (Elemente) jedes Element besitzt Sortierschlüssel Schlüssel unterliegen einer Ordnung eventuell sind doppelte Schlüssel

Mehr

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT) Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Fibonacci Zahlen Fibonacci Folge Die Fibonacci

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Organisation Vorlesung: Montag 11 13 Uhr Marius Kloft RUD 26, 0 115 Mittwoch 11 13 Uhr Marius Kloft

Mehr

Kap. 3 Sortieren. 7. VO DAP2 SS Mai Vorlesung am Do 7.5. entfällt wegen FVV um 14 Uhr HeapSort ff 3.1.

Kap. 3 Sortieren. 7. VO DAP2 SS Mai Vorlesung am Do 7.5. entfällt wegen FVV um 14 Uhr HeapSort ff 3.1. Kap. 3 Sortieren 3.1.5 HeapSort ff 3.1.6 Priority Queues Vorlesung am Do 7.5. entfällt wegen FVV um 14 Uhr Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 7.

Mehr

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung.

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung. Graphentheorie Rainer Schrader Zentrum für Angewandte Informatik Köln 14. November 2007 1 / 22 2 / 22 Gliederung eulersche und semi-eulersche Graphen Charakterisierung eulerscher Graphen Berechnung eines

Mehr

Algorithmen und Datenstrukturen I Grundlagen

Algorithmen und Datenstrukturen I Grundlagen Algorithmen und Datenstrukturen I Grundlagen Prof. Dr. Oliver Braun Letzte Änderung: 01.11.2017 14:15 Algorithmen und Datenstrukturen I, Grundlagen 1/24 Algorithmus es gibt keine präzise Definition Handlungsvorschrift

Mehr

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20. Übersicht Datenstrukturen und Algorithmen Vorlesung 5: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 2 (23.4.2018) Sortieren II, Asymptotische Analyse, O-Notation Algorithmen und Komplexität Laufzeit Zeitmessung SelectionSort n 2 Laufzeit/n

Mehr

Exponentielle Suche 4/26/10. Beweis für. Situation: Idee: suche zunächst "rechten Rand" r, so dass k < Ar Algo: Analyse:

Exponentielle Suche 4/26/10. Beweis für. Situation: Idee: suche zunächst rechten Rand r, so dass k < Ar Algo: Analyse: Beweis für 9 Exponentielle Situation: n sehr groß esuchtes i, mit Ai = k, ist relativ klein Idee: suche zunächst "rechten Rand" r, so dass k < Ar Algo: 1 2 4 8 i 16 Index r = 1 while A[r] < key: r *= 2

Mehr

Abschnitt 19: Sortierverfahren

Abschnitt 19: Sortierverfahren Abschnitt 19: Sortierverfahren 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren Informatik 2 (SS 07) 758

Mehr