Informatik I 1. Kapitel. Einführung in Algorithmen und Datenstrukturen. Einführung in Algorithmen. Einführung in Algorithmen.

Größe: px
Ab Seite anzeigen:

Download "Informatik I 1. Kapitel. Einführung in Algorithmen und Datenstrukturen. Einführung in Algorithmen. Einführung in Algorithmen."

Transkript

1 Informatik I 1. Kapitel Rainer Schrader Einführung in Algorithmen und Datenstrukturen Zentrum für Angewandte Informatik Köln 16. Juli / 1 / 1 Einführung in Algorithmen Einführung in Algorithmen Gliederung Algorithmen Laufzeitanalyse Laufzeitschranken Beispiel: das Maximum-Subarray-Problem Algorithmus Folge von exakten Arbeitsanweisungen (zum Lösen einer Rechenaufgabe) in endlich vielen, eindeutig festgelegten, auch wiederholbaren Schritten. (ZEIT-Lexikon) 3 / 1 4 / 1

2 Algorithmus Rechenvorschrift Programme konkrete Formulierungen abstrakter Algorithmen, Eingabe Berechnung Ausgabe die bestimmte Darstellungen und Datenstrukturen verwenden (Wirth) Jede mit einem Algorithmus lösbare Aufgabe kann prinzipiell auch von einem Rechenautomat gelöst werden. (ZEIT-Lexikon) Programmerstellung und Datenstrukturierung sind untrennbare, ineinandergreifende Themen 5 / 1 6 / 1 Einführung Bemerkung zu Programmen Programme werden in einer abstrahierenden Programmiersprache beschrieben: keine Deklarationen if-then-else for-schleifen while-schleifen höhere Konstrukte Compiler spricht auch deutsch... Beispiel: Sortierproblem Eingabe: Eine Folge von n Zahlen a 1, a,..., a n Ausgabe: Eine Permutation (Umordnung) a 1, a,..., a n der Eingabefolge, so dass gilt: a 1 a... a n. 7 / 1 8 / 1

3 jede konkrete Zahlenfolge ist eine Instanz des Sortierproblems z.b. soll 3, 5, 13, 48, 39 in 13, 5, 3, 39, 48 überführt werden Sortieren ist eine grundlegende Operation in der Informatik unterschiedliche Algorithmen erweisen sich je nach Szenario als mehr oder weniger geeignet: wie viele Elemente? kann die Natur der Elemente ausgenützt werden? ist schon teilweise sortiert? im Hauptspeicher, auf Platte? wir wollen versuchen, das jeweilige Verhalten zu analysieren 9 / 1 10 / 1 Sprechweisen: eine Instanz eines Problems besteht aus allen Eingabewerten, die zur Lösung benötigt werden ein Algorithmus heißt korrekt, wenn seine Ausführung für jede mögliche Eingabeinstanz mit der korrekten Ausgabe beendet wird ein korrekter Algorithmus löst das gegebene Problem. Spezifikation eines Algorithmus: ein Algorithmus kann auf verschiedene Art und Weise spezifiziert werden: auf Deutsch, Englisch,... als Hardwaredesign als Computerprogramm (Gegenstand der Informatik I) Wir veranschaulichen den letzten Punkt an einem Sortier-Algorithmus. 11 / 1 1 / 1

4 A[1] A[] A[3] A[4] A[5] A[6] Sortieren durch Einfügen (insertion sort) Idee: Sortieren von Spielkarten füge das i-te Eingabeelement in die bereits sortierte Liste der ersten i 1 Elemente ein / 1 14 / 1 1. for j= to n do. key = A(j) füge A(j) in die sortierte Folge A(1...j-1) ein 4. i = j while (i > 0 und A(i) > key) do 6. A(i+1) = A(i) 7. i = i-1 end while 8. A(i+1) = key end do Ablauf auf der Eingabefolge 5,, 4, 6, 1, 3 : A(1) A() A(3) A(4) A(5) A(6) / 1 16 / 1

5 natürliche Fragestellungen an einen Algorithmus: ist der Algorithmus korrekt? welche Ressourcen verbraucht der Algorithmus? logische Schaltungen Kommunikationsbandbreite Speicherplatz Zeit Gliederung Algorithmen Laufzeitanalyse Laufzeitschranken Beispiel: das Maximum-Subarray-Problem 17 / 1 18 / 1 wir sind im folgenden fast immer an der Zeit interessiert aber auf welcher Maschine wird die Zeit verbraucht? intuitiv am Beispiel des Sortierproblems: wir betrachten eine idealisierte Maschine: RAM: random access machine mit folgenden Eigenschaften: 1 Prozessor alle Daten im Hauptspeicher die Datenzugriffe dauern alle gleich lange das Sortieren von 1000 Zahlen dauert länger als das Sortieren von 10 Zahlen, bei gleich langen Folgen geht es für fast sortierte schneller wir beschreiben die Laufzeit als Funktion der Eingabegröße beim Sortieren als Funktion von n = Anzahl der zu sortierenden Zahlen 19 / 1 0 / 1

6 Kosten von insertion_sort wir zählen die Anzahl der primitiven Operationen (Rechenschritte), hier vereinfachend: jeder Programmbefehl benötigt konstante Zeit Im Beispiel insertion_sort: sei t j die Anzahl der Durchläufe der while-schleife für Index j entspricht der Anzahl der Positionen, um die Element j verschoben wird 1.for j= to n do. key = A(j) füge A(j) ein 3. i = j while(i>0 & A(i)>key) do 5. A(i+1) = A(i) 6. i = i-1 end while 7. A(i+1) = key end do Zeile Kosten wie oft? 1 c 1 n c n 1 3 c 3 n P 1 4 c n 4 j= t j P 5 c n 5 j= (t j 1) P 6 c n 6 j= (t j 1) 7 c 7 n 1 1 / 1 / 1 Gesamtlaufzeit: Zeile Kosten wie oft? 1 c 1 n c n 1 3 c 3 n P 1 4 c n 4 j= t j P 5 c n 5 j= (t j 1) P 6 c n 6 j= (t j 1) 7 c 7 n 1 T (n) = c 1 n + c (n 1) + c 3 (n 1) + c 4 n j= n n + c 5 (t j 1) + c 6 (t j 1) + c 7 (n 1) j= j= t j Bester Fall: Die Eingabefolge ist bereits sortiert in Zeile 4 ist dann immer A(i) key somit t j = 1 für j =, 3,... n, deshalb T (n) = c 1 n + c (n 1) + c 3 (n 1) + c 4 + c 6 (t j 1) + c 7 (n 1) j= t j + c 5 (t j 1) = c 1 n + c (n 1) + c 3 (n 1) + c 4 (n 1) + c 7 (n 1) = (c 1 + c + c 3 + c 4 + c 7 )n (c + c 3 + c 4 + c 7 ) = an + b für Konstanten a und b, lineare Funktion in n. j= j= 3 / 1 4 / 1

7 Schlechtester Fall: Die Eingabefolge ist in umgekehrter Reihenfolge sortiert. hier gilt t j = j für j =, 3,..., n, deshalb T (n) = c 1 n + c (n 1) + c 3 (n 1) + c 4 + c 6 (t j 1) + c 7 (n 1) j= t j + c 5 j= (t j 1) n(n + 1) = c 1 n + c (n 1) + c 3 (n 1) + c 4 «n(n 1) + c 6 + c 7 (n 1) c4 = + c 5 + c 6 n + c 1 + c + c 3 + c 4 c 5 c 6 + c 7 (c + c 3 + c 4 + c 7 ) = an + bn + c für Konstanten a, b und c, j= ««n(n 1) 1 + c 5 n worst-case Laufzeit die längste mögliche Laufzeit bei vorgegebener Eingabegröße der Instanz, eine obere Schranke für die Laufzeit einer beliebigen Instanz dieser Größe Bei manchen Problemen kann der worst-case oft auftreten, z.b. bei der Suche eines nicht vorhandenen Eintrags in einer Datenbank. quadratische Funktion in n. 5 / 1 6 / 1 average-case Laufzeit ist die durchschnittliche Laufzeit über alle Instanzen der Größe n (einer gegebenen Instanzklasse), kann manchmal erheblich besser als der worst case sein kann aber auch genauso schlecht wie der worst case sein (beim Sortieren durch Einfügen führt t j = j quadratischen Laufzeitfunktion T (n).) das Problem beim average case ist: auch zu einer Vereinfachung wir werden uns von der mühsamen Berechnung der Konstanten frei machen wir werden nur die Ordnung der Laufzeit betrachten, also an + bn + c = Θ(n ) darauf gehen wir später präziser ein an + b = Θ(n) Was ist eine durchschnittliche Eingabe? 7 / 1 8 / 1

8 Sortieren durch Einfügen benutzt inkrementellen Ansatz ein anderer Ansatz ist Sortierung durch Verschmelzen (merge sort) teile und erobere divide and conquer teile das Problem in Teilprobleme auf erobere die Teilprobleme durch rekursives Lösen (wenn sie klein genug sind, löse sie direkt) kombiniere die Lösungen der Teilprobleme zu einer Lösung des Gesamtproblems teile: teile die n-elementige Folge in der Mitte in zwei Teilfolgen, erobere: sortiere beide Teilfolgen rekursiv mit merge sort, kombiniere: verschmelze die beiden Teilfolgen zu einer sortierten Gesamtfolge Bemerkung: Für einelementige Teilfolgen ist nichts zu tun. Wir veranschaulichen diesen Ansatz wiederum an einem Sortieralgorithmus. 9 / 1 30 / 1 Grobkonzept von merge sort A : Array p,q, r : Indizes mit p q r. merge(a,p,q,r) verschmilzt die beiden bereits sortierten Teilarrays A(p..q) und A(q+1..r) sortiertes Array A(p..r) Laufzeit beträgt Θ(r p + 1) (Übungsaufgabe) merge_sort merge_sort(a,p,r) if (p < r) then do q = (p+r)/ merge_sort(a,p,q) merge_sort(a,q+1,r) merge(a,p,q,r) merge_sort(a,p,r) sortiert A(p..r) falls p r gilt, so ist nichts zu tun Sortieren eines n-elementigen Arrays durch merge_sort(a,1,n). end end if 31 / 1 3 / 1

9 Illustration: Eingabefolge Ausgabefolge Analyse der worst-case-laufzeit Vereinfachende Annahme: n = k für k 1. gesucht: Laufzeit T (n). Teile: Bestimmung der Mitte des Arrays in konstanter Zeit D(n) = c 1. Erobere: Lösen zweier Teilprobleme der Größe n Kombiniere: wie diskutiert C(n) = c n. j c für n = 1 insgesamt: T (n) T ( n ) + cn für n > 1 mit c = max{c 1, c }. Behauptung: T (n) cn log n + cn und damit besser als Sortieren durch Einfügen. in T ( n ) Zeit. 33 / 1 34 / 1 Behauptung: T (n) cn log n + cn = cn log n + cn. Beweis per Induktion: T (1) c = c c 1 = c 1 log 1 + c 1 Bedeutung in der Praxis Wettbewerb im Sortieren von Zahlen Teilnehmer: ein Hochleistungsrechner mit einem schlechten Programm ein PC mit einem guten Programm T (n) T ( n ) + cn [c n log n + c n ] + cn = cn log n + cn = cn log n cn log + cn = cn log n cn + cn = cn log n + cn Damit folgt: T (n) cn log n + cn. (per Induktion) Algorithmus Implementierung Geschwindigkeit Supercomputer insertion_sort n 10 1 Op./s (1 Teraflop) PC merge_sort 50n log n 10 9 Op./s (1 Gigaflop) 35 / 1 36 / 1

10 Algorithmus Implementierung Geschwindigkeit Supercomputer insertion_sort n 10 1 Op./s (1 Teraflop) PC merge_sort 50n log n 10 9 Op./s (1 Gigaflop) Zeitbedarf: Supercomputer: ( ) Operationen 10 1 Operationen/sec = 1800 sec 3.5 h Gliederung Algorithmen Laufzeitanalyse Laufzeitschranken Beispiel: das Maximum-Subarray-Problem PC: log ( ) Operationen 10 9 Operationen/sec. 105 sec Wie Hardware sind auch Algorithmen Technologie 37 / 1 38 / 1 Wir wollen das qualitative Wachstum der Laufzeit eines Algorithmus ausdrücken: sei dazu f : N 0 R die Laufzeitfunktion sei g : N 0 R eine Vergleichsfunktion wir wollen ausdrücken: f wächst höchstens so schnell wie g f wächst mindestens so schnell wie g f wächst wie g Sei g : N 0 R eine Funktion. Wir definieren die folgenden Mengen von Funktionen: O(g(n)) := {f (n) : f (n) cg(n)} für alle n n 0. Ω(g(n)) := {f (n) : cg(n) f (n)} für alle n n 0. Θ(g(n)) := {f (n) : cg(n) f (n) dg(n)} für alle n n 0. jeweils für geeignete Konstanten c, d, n 0 > 0 (genauer: zu jedem f existieren Konstanten ). 39 / 1 40 / 1

11 Illustration: Schreibweise: c g(n) anstelle von f (n) Θ(g(n)) schreiben wir f (n) = Θ(g(n)) f(n) n0 c1 g(n) n entsprechend f (n) = Ω(g(n)) und f (n) = O(g(n)) wir benutzen die Notationen O für obere Schranken, Ω für untere Schranken, Θ für die genaue Bestimmung der Wachstumsrate. 41 / 1 4 / 1 Beispiel: Beispiel: zu zeigen: 1 n 3n = Θ(n ). es existieren Konstanten c 1, c und n 0, so dass c 1 n 1 n 3n c n für alle n n 0. Mit Division durch n (1) > 0 erhalten wir c () c n. (1) gilt für alle n 7, wenn c () gilt für alle n 1, wenn c 1. Also wähle z.b. c 1 = 1 14, c = 1 und n 0 = 7. 6n 3 Θ(n ) Annahme: es gibt Konstanten c, n 0, so dass 6n 3 c n für alle n n 0. Dann folgt: n c 6 für alle n n 0 Allgemein gilt: an + bn + c = Θ(n ). Beweis als Übungsaufgabe. 43 / 1 44 / 1

12 Beispiel: insertion_sort: Beispiel Für jede Konstante c gilt: c = Θ(1). zu zeigen: es existieren Konstanten c 1, c und n 0, so dass c 1 1 c c 1 für alle n n 0. wähle c 1 = c = c und n 0 = 1. worst case Laufzeit O(n ): ergibt sich aus der Doppelschleife impliziert Laufzeit von O(n ) für beliebige Eingaben die worst case Laufzeit Θ(n ) impliziert nicht eine Laufzeit Θ(n ) für beliebige Eingaben: ist die Eingabe bereits sortiert: Laufzeit Θ(n) eine best case Laufzeit Ω(n) impliziert eine Laufzeit Ω(n) für beliebige Eingaben. 45 / 1 46 / 1 Weitere Schreibweisen: Beispiel n + 3n + 1 = n + Θ(n) Beispiel n + Θ(n) = Θ(n ) Interpretation: es gibt eine Funktion f (n) Θ(n) mit n + 3n + 1 = n + f (n) (wähle f (n) = 3n + 1). Interpretation: für alle f (n) Θ(n) existiert ein g(n) Θ(n ) so, dass n + f (n) = g(n) für alle n (wähle g(n) = n + f (n)). 47 / 1 48 / 1

13 Um von einem speziellen Computer unabhängig zu sein, zählen wir Entwarnung: wir werden fast auschließlich obere Schranken berechnen einfache Funktionen dafür verwenden: O(n), O(n ), O(n 3 ),, O(n k ) O(n log n), O(n log n), Elementaroperationen: Zuweisungen a = b, arithmetische Befehle a = b c mit {+,-,*,/,%,...}, logische Operationen und, oder, neg,... und Sprungbefehle goto label; if a b...; else...; mit { <, <=, ==,!=, >=, >} 49 / 1 50 / 1 Vereinfachende Annahme jede Elementaroperation benötigt eine Zeiteinheit wir vernachlässigen also: die Indexrechnungen, den Typ der Operanden und die Länge der Operanden for- und while-schleifen if <Bedingung> <Anweisung1> else <Anweisung> Kosten := j Kosten(Bedingung) + Kosten(Anweisung1) Kosten(Bedingung) + Kosten(Anweisung) while <Bedingung> <Anweisung> for <Schleife> do <Anweisung> end do Kosten: die wiederholten Kosten für Test auf Bedingung bzw. Schleifenende und (1 weniger) die Kosten der Anweisung. 51 / 1 5 / 1

14 Maximum-Subarray-Problem gegeben: eine Folge von n ganzen Zahlen in einem Array gesucht: Gliederung Algorithmen Laufzeitanalyse Laufzeitschranken Beispiel: das Maximum-Subarray-Problem eine zusammenhängenden Teilfolge, deren Summe maximal ist. (Die Teilfolge kann auch leer sein.) Beispiel: {z } Wert 187 ist maximal / 1 54 / 1 1. Versuch: naiver Ansatz 1. Versuch: naiver Ansatz berechne für jedes Teilintervall die Summe der Einträge unter all diesen Summen wähle das Maximum 55 / 1 56 / 1

15 1. Versuch: naiver Ansatz Laufzeitanalyse des naiven Ansatzes maxteilsumme = 0 for li = 1 to n do for re = li to n do // bestimme Summe in der Teilfolge X[li,...,re] summe = 0 for i = li to re do summe = summe + X(i) end do // schreibe Maximum fort if (summe > maxteilsumme) maxteilsumme = summe end do end do return maxteilsumme T (n) = = = = rx 1 l=1 r =l i=l l=1 r =l l=1 l=1 = Θ(n 3 ) (r l + 1) n l+1 X i=1 i 1 (n l + 1)(n l + ) 57 / 1 58 / 1 Versuch 1a: ein etwas weniger naiver Ansatz Versuch 1a: ein etwas weniger naiver Ansatz wir berechnen die Intervallsumme stets neu sie kann jedoch einfach fortgeschrieben werden dies reduziert die Laufzeit auf O(n ) maxteilsumme = 0 for li = 1 to n do summe = 0 for re = li to n do summe = summe + X(i) // schreibe Maximum fort if (summe > maxteilsumme) maxteilsumme = summe end do end do return maxteilsumme 59 / 1 60 / 1

16 . Versuch: Divide and Conquer wird die Folge in der Mitte geteilt, so gilt für eine maximale Teilfolge MT : sei MT = (l,..., re) sei m der mittlere Index im Fall () gilt : (1) entweder liegt MT ganz in einem der beiden Teile () oder MT umfasst die Trennstelle. (l,..., m) ist eine größte Teilfolge im linken Intervall, die m enthält (m,..., re) ist eine größte Teilfolge im rechten Intervall, die m enthält. Versuch: Divide and Conquer wir verwenden zwei Prozeduren: rightmax(x, l, r ) berechnet im Intervall [l, r ] eine maximale Teilfolge, die l enthält leftmax(x, l, r ) berechnet im Intervall [l, r ] eine maximale Teilfolge, die r enthält 61 / 1 6 / 1 Bestimmung des rechten Maximums in (l..r ) Divide-and-conquer procedure rightmax(x,le,re) rmax = 0 summe = 0 for i = le to re do summe = summe + X(i) if (summe > rmax) rmax = summe end do return rmax end procedure benötigt Θ(r l) Zeit leftmax(x, l, r ) analog procedure msp(x,le,re) if re = le then teilmax = X(le) else do m = (le+re)/ // halbiere Intervall mtsl = msp(x,le,m) mtsr = msp(x,m+1,re) // berechne das Maximum im // linken und rechten Intervall lmax = leftmax(x,le,m) // bestimme linke Teilfolge rmax = rightmax(m,re) // bestimme rechte Teilfolge teilmax = maximum {mtsl, mtsr, lmax+rmax-x(m)} end if return teilmax end procedure 63 / 1 64 / 1

17 Sei T (n) die worst-case-laufzeit. Dann gilt: wir wissen: j a für n = 1 T (n) T ` ˇ ` n + T n + an für n > 1 Satz j Θ(1) für n = 1 T (n) = T ` ˇ ` n + T n + Θ(n) für n > 1 Für die obige Rekursion gilt T (n) = Θ(n log n). wir zeigen per Induktion: für n 3 und c = 3a gilt T (n) cn log(n 1) Beweis: wir zeigen T (n) = O(n log n) es gilt auch T (n) = Ω(n log n) (Übungsaufgabe) die Fälle n = 3, 4, 5 zeigt man explizit wir führen nur den allgemeinen Fall n 6 vor 65 / 1 66 / 1 der Fall n = 3 : der Fall n = 4 : T (3) T (1) + T () + 3a (da T () T (1) + T (1) + a) 3T (1) + 5a 8a (da T (1) a) = 8 c (da c = 3a) 3 3c = c 3 log(3 1) T (4) T () + T () + 4a 4T (1) + 8a (da T () T (1) + a) 1a (da T (1) 3a) = 4c (da c = 3a) c 4 log 3 somit gilt für n = 4 : T (n) cn log(n 1). Somit gilt für n = 3: T (n) 3n log(n 1). entsprechend für n = 5 : T (n) cn log(n 1). 67 / 1 68 / 1

18 Der Fall n 6 : T (n) T l n m j n k + T + an l n m l n m j n k j n k c log 1 + c log 1 + an (per Induktion) c n + 1 = c n + 1 «n + 1 log 1 + c n n log 1 + an (Monotonie von log) n 1 log «+ c n «n log + an = 1 c(n + 1) log(n 1) + 1 n + 1 cn log(n ) c c n + an = 1 c(n + 1) log(n 1) + 1 n + 1 cn log(n ) c c n + an 1 c(n + 1) log(n 1) + 1 n + 1 cn log(n 1) c c n + an 1 cn log(n 1) + 1 c log(n 1) + 1 cn log(n 1) cn c + an = cn log(n 1) + c log(n 1) cn c + c n (da c = 3a) 3 cn log(n 1) c (n + 1 log(n 1)) + c n cn log(n 1) c (n + 1 log(n 1)) + c {z } n ( n) 69 / 1 70 / 1 cn log(n 1) c (n + 1 log(n 1)) + c {z } n ( n) cn log(n 1) c n + c n = cn log(n 1) Wir haben bisher: trivialer Ansatz: O(n 3 ) etwas weniger trivialer Ansatz: O(n ). Ansatz: O(n log n) Ist dies bestmöglich? 71 / 1 7 / 1

19 3. Versuch: sei lmax i Grenze i der Wert einer maximalen Teilsumme mit fester rechter wobei die leere Folge zugelassen ist sei bismax i der maximale Wert im Intervall [1,..., i] bismax lmax i es gilt: bismax lmax i lmax i+1 = j lmaxi + X (i + 1), falls lmax i + X (i + 1) > 0 0, falls lmax i + X (i + 1) 0 bismax i+1 = max{bismax i, lmax i+1 } 73 / 1 74 / 1 Scanline-Ansatz 3. Versuch: Scan Line Prinzip Idee: durchlaufe das Array von links nach rechts in Position i aktualisiere: bismax lmax msp3(x, n) lmax = 0 bismax = 0 for i=1 to n do a = X(i) Aktualisierung if (lmax + a > 0) lmax = lmax + a else lmax = 0 end if if (lmax > bismax) bismax = lmax end do return bismax 75 / 1 76 / 1

20 Skizze: Scanline vorher nachher a bismax lmax offensichtlich: T (n) = O(n) jeder MSP-Algorithmus benötigt wenigstens n Schritte der scanline-ansatz ist optimal (bis auf Konstanten) 77 / 1

Kap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!!

Kap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!! Kap. 3: Sortieren Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund Überblick Einführung in das Sortierproblem Insertion-Sort Selection-Sort Merge-Sort 4. VO

Mehr

Kap. 3: Sortieren. 4. VO DAP2 SS April 2009

Kap. 3: Sortieren. 4. VO DAP2 SS April 2009 Kap. 3: Sortieren Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 4. VO DAP2 SS 2009 23. April 2009 1 Überblick Einführung in das Sortierproblem Insertion-Sort

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

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. 2. Grundlagen Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. Laufzeitverhalten beschreiben durch O-Notation. 1 Beispiel Minimum-Suche Eingabe bei Minimum

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

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

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

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

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

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

Informatik I Komplexität von Algorithmen

Informatik I Komplexität von Algorithmen Leistungsverhalten von Algorithmen Informatik I Komplexität von Algorithmen G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Speicherplatzkomplexität: Wird primärer & sekundärer Speicherplatz

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) Wintersemester 2012/13 Jakob Vogel Computer-Aided Medical Procedures Technische Universität München Komplexität von Programmen Laufzeit kann näherungsweise

Mehr

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale

Mehr

3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen

3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen 3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen Sortierproblem Eingabe: Folge von n natürlichen Zahlen a 1, a 2,, a n, die Folge

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2014/15 3. Vorlesung Laufzeitanalyse Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Recap: Diskutieren Sie mit Ihrer NachbarIn! 1. 2. 3. Was sind

Mehr

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier Algorithmen und Datenstrukturen SoSe 2008 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Algorithmen und Datenstrukturen Gesamtübersicht Organisatorisches / Einführung Grundlagen: RAM,

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

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). 8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame

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

Ü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

Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/ Algorithmen und ihre formalen Eigenschaften, Datenstrukturen

Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/ Algorithmen und ihre formalen Eigenschaften, Datenstrukturen 1 Grundlagen 1.1 Algorithmen und ihre formalen Eigenschaften, Datenstrukturen Ein Algorithmus ist ein mit formalen Mitteln beschreibbares, mechanisch nachvollziehbares Verfahren zur Lösung einer Klasse

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 017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Vorrechnen von Aufgabenblatt 1. Wohlgeformte Klammerausdrücke 3. Teile und Herrsche Agenda 1.

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

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Präsenzübung Datenstrukturen und Algorithmen SS 2014 Prof. aa Dr. E. Ábrahám F. Corzilius, S. Schupp, T. Ströder Präsenzübung Datenstrukturen und Algorithmen SS 2014 Vorname: Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Technische Universität München WiSe 2012/13 Institut für Informatik I-16 Lösungsblatt 7 Dr. Tobias Lasser 3. Dezember 2012 Jakob Vogel Algorithmen und Datenstrukturen Aufgabe 1 Rechnen mit Landau-Symbolen

Mehr

Datenstrukturen, Algorithmen und Programmierung 2

Datenstrukturen, Algorithmen und Programmierung 2 Datenstrukturen, Algorithmen und Programmierung 2 Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 1. VO SS 2008 8. April 2008 Petra Mutzel Kurzvorstellung

Mehr

Kapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung

Kapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung Gliederung 1. Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs 6. Ausgewählte

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe

Mehr

Kapitel 3: Sortierverfahren Gliederung

Kapitel 3: Sortierverfahren Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Susanne Albers Das Maximum-Subarray Problem Das Maximum-Subarray Problem: Gegeben: Folge

Mehr

Algorithmik Kap. 2: Laufzeit von Algorithmen

Algorithmik Kap. 2: Laufzeit von Algorithmen 1. Motivation 1.1 Fallstudie: Sortieralgorithmen 1.2 Fallstudie: Selektionsalgorithmen 2. Laufzeit von Algorithmen 2.1 Grundlagen 2.2 3. Paradigmen des Algorithmenentwurfs 3.1 Dynamisches Programmieren

Mehr

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A) Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld

Mehr

2 Wachstumsverhalten von Funktionen

2 Wachstumsverhalten von Funktionen Algorithmen und Datenstrukturen 40 2 Wachstumsverhalten von Funktionen Beim Vergleich der Worst-Case-Laufzeiten von Algorithmen in Abhängigkeit von der Größe n der Eingabedaten ist oft nur deren Verhalten

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

Technische Universität München

Technische Universität München Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld

Mehr

Algorithmen und Datenstrukturen 1 Kapitel 5

Algorithmen und Datenstrukturen 1 Kapitel 5 Algorithmen und Datenstrukturen 1 Kapitel 5 Technische Fakultät robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2005/2006 Kapitel 5: Effizienz von Algorithmen 5.1 Vorüberlegungen Nicht

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

Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III

Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III Text: Hinnerk van Bruinehsen - Grafiken: Jens Fischer powered by SDS.mint SoSe 2011 1 Teil

Mehr

Effizienz von Algorithmen

Effizienz von Algorithmen Effizienz von Algorithmen Eine Einführung Michael Klauser LMU 30. Oktober 2012 Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober 2012 1 / 39 Ein einführendes Beispiel Wie würdet ihr einen Stapel

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

Programmieren und Problemlösen

Programmieren und Problemlösen Dennis Komm Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 27. Februar 2019 Komplexität von Algorithmen Aufgabe Primzahltest Schreibe ein Programm, das eine ganze Zahl x als Eingabe

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 9, Donnerstag 18. Dezember 2014 (Teile und Herrsche, Mastertheorem) Junior-Prof. Dr.

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

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

Übersicht. Datenstrukturen und Algorithmen. Divide-and-Conquer. Übersicht. Vorlesung 9: Quicksort (K7)

Übersicht. Datenstrukturen und Algorithmen. Divide-and-Conquer. Übersicht. Vorlesung 9: Quicksort (K7) Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Algorithmus Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-5/dsal/ 2 7.

Mehr

Algorithmen I - Tutorium 28 Nr. 2

Algorithmen I - Tutorium 28 Nr. 2 Algorithmen I - Tutorium 28 Nr. 2 11.05.2017: Spaß mit Invarianten (die Zweite), Rekurrenzen / Mastertheorem und Merging Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK

Mehr

Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen

Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen Ziel: Kurze Einführung in den Pseudocode zur Beschreibung von Algorithmen Induktionsbeweise als wichtiges Hilfsmittel, um die Korrektheit eines Algorithmus

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

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

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

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

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

Ü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 Wiederholung: Validation Validation: nicht-formaler

Mehr

Kapitel 8 Fortgeschrittene Sortieralgorithmen

Kapitel 8 Fortgeschrittene Sortieralgorithmen Kapitel 8 Fortgeschrittene Sortieralgorithmen Zur Erinnerung: in Kapitel 6 Elementare Sortierverfahren Sortierverfahren, die auf Vergleichen von Werten basieren. Aufwand zum Sortieren von Feldern von n

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/32 Datenstrukturen und Algorithmen Vorlesung 7: Sortieren (K2) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Dr. Hanjo Täubig Tobias Lieber Sommersemester 2011 Übungsblatt 1 16. September 2011 Grundlagen: Algorithmen und

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

Aufgabe (Schreibtischtest, Algorithmenanalyse)

Aufgabe (Schreibtischtest, Algorithmenanalyse) Aufgabe (Schreibtischtest, Algorithmenanalyse) Führen Sie einen Schreibtischtest für den Algorithmus Positionsort für das folgende Eingabe-Array durch. Geben Sie nach jedem Durchlauf der for-schleife mit

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

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Dr. Hanjo Täubig Jeremias Weihmann Sommersemester 2014 Übungsblatt 2 28. April 2014 Grundlagen: Algorithmen und

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

Datenstrukturen, Algorithmen und Programmierung 2

Datenstrukturen, Algorithmen und Programmierung 2 Datenstrukturen, Algorithmen und Programmierung 2 Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 2. VO SS 2009 16. April 2009 1 Überblick Asymptotische Schranken

Mehr

1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G Studie zum Arbeitsverhalten von Studierenden unter Leitung

1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G Studie zum Arbeitsverhalten von Studierenden unter Leitung Organisatorisches Algorithmen und Datenstrukturen Kapitel 3: Divide & Conquer Frank Heitmann heitmann@informatik.uni-hamburg.de 1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G-021. 2 Studie zum

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Technische Universität München SoSe 2017 Fakultät für Informatik, I-16 Lösungsblatt 4 Dr. Stefanie Demirci 31. Mai 2017 Rüdiger Göbl, Mai Bui Algorithmen und Datenstrukturen Aufgabe 1 Komplexität Berechnung

Mehr

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren . Allgemeine (vergleichsbasierte) Sortierverfahren Vergleichsbaum: Der Aufbau des Verbleichsbaum ist für jeden Algorithmus und jede Eingabelänge n gleich. Jede Permutation der Eingabe, muss zu einem anderen

Mehr

Prof. Dr. Margarita Esponda

Prof. Dr. Margarita Esponda Analyse von Algorithmen Die O-Notation WS 2012/2013 Prof. Dr. Margarita Esponda Freie Universität Berlin 1 Korrekte und effiziente Lösung von Problemen Problem Wesentlicher Teil der Lösung eines Problems.

Mehr

Ordnen Sie die folgenden Funktionen nach ihrer asymptotischer Komplexität in aufsteigender Reihenfolge: i=1 4i + n = 4 n. i=1 i + 3n = 4 ( n(n+1)

Ordnen Sie die folgenden Funktionen nach ihrer asymptotischer Komplexität in aufsteigender Reihenfolge: i=1 4i + n = 4 n. i=1 i + 3n = 4 ( n(n+1) für Informatik Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe (Asymptotische Komplexität): Ordnen Sie die folgenden Funktionen nach

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

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

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

Algorithmen und Datenstrukturen 1 VL Übungstest WS November 2008

Algorithmen und Datenstrukturen 1 VL Übungstest WS November 2008 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 2008 07. November

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

Übungsblatt 4. Aufgabe 1. IN8009 Algorithmen und Datenstrukturen Thomas Stibor

Übungsblatt 4. Aufgabe 1. IN8009 Algorithmen und Datenstrukturen Thomas Stibor Aufgabe 1 Zeigen Sie 2n 2 = O(n 3 ), n = Ω(lgn), n 2 /2 2n = Θ(n 2 ). Übungsblatt 4 Zu zeigen: 2n 2 = O(n 3 ). O(g(n)) = {f(n) : es existieren positive Konstanten c und n 0, sodass 0 f(n) cg(n) für alle

Mehr

Datenstrukturen, Algorithmen und Programmierung 2

Datenstrukturen, Algorithmen und Programmierung 2 Datenstrukturen, Algorithmen und Programmierung 2 Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 1. VO SS 2009 14. April 2009 Petra Mutzel Kurzvorstellung

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

Algorithmenbegriff: Berechenbarkeit. Algorithmenanalyse. (Berechnung der Komplexität)

Algorithmenbegriff: Berechenbarkeit. Algorithmenanalyse. (Berechnung der Komplexität) Über-/Rückblick Algorithmenbegriff: Berechenbarkeit Turing-Maschine RAM µ-rekursive Funktionen Zeit Platz Komplexität Algorithmentechniken Algorithmenanalyse (Berechnung der Komplexität) Rekursion Iteration

Mehr

Asymptotik und Laufzeitanalyse

Asymptotik und Laufzeitanalyse und Vorkurs Informatik SoSe13 08. April 2013 und Algorithmen = Rechenvorschriften Wir fragen uns: Ist der Algorithmus effizient? welcher Algorithmus löst das Problem schneller? wie lange braucht der Algorithmus

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

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

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

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

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

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen VO 708.031 Um was geht es? Datenstrukturen Algorithmen Algorithmus Versuch einer Erklärung: Ein Algorithmus nimmt bestimmte Daten als Input und transformiert diese nach festen

Mehr

Algorithmen und Datenstrukturen Effizienz und Funktionenklassen

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

Mehr

. Die obige Beschreibung der Laufzeit für ein bestimmtes k können wir also erweitern und erhalten die folgende Gleichung für den mittleren Fall:

. Die obige Beschreibung der Laufzeit für ein bestimmtes k können wir also erweitern und erhalten die folgende Gleichung für den mittleren Fall: Laufzeit von Quicksort im Mittel. Wir wollen die erwartete Effizienz von Quicksort ermitteln. Wir nehmen an, die Wahrscheinlichkeit, dass das gewählte Pivot-Element a j das k-t kleinste Element der Folge

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910

Mehr

Algorithmen und Datenstrukturen Kapitel 2: Korrektheit von Algorithmen und Laufzeitanalyse rekursiver Algorithmen (mittels Rekurrenzgleichungen)

Algorithmen und Datenstrukturen Kapitel 2: Korrektheit von Algorithmen und Laufzeitanalyse rekursiver Algorithmen (mittels Rekurrenzgleichungen) Algorithmen und Datenstrukturen Kapitel 2: und Laufzeitanalyse rekursiver Algorithmen (mittels Rekurrenzgleichungen) Frank Heitmann heitmann@informatik.uni-hamburg.de 21. Oktober 2015 Frank Heitmann heitmann@informatik.uni-hamburg.de

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

5. Übungsblatt zu Algorithmen I im SoSe 2016

5. Übungsblatt zu Algorithmen I im SoSe 2016 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Dennis Hofheinz Lukas Barth, Lisa Kohl 5. Übungsblatt zu Algorithmen I im SoSe 2016 https://crypto.iti.kit.edu/index.php?id=algo-sose16

Mehr

Kapitel ADS:II. II. Algorithm Engineering

Kapitel ADS:II. II. Algorithm Engineering Kapitel ADS:II II. Algorithm Engineering Problemklassen und Lösungsstrategien Phasen des Algorithm Engineering Exkurs: Programmiersprachen Pseudocode Rekursion Maschinenmodell Laufzeitanalyse Algorithmenimplementierung

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Einleitung und Grundlagen Maike Buchin 18.4.2017 Verantwortliche Dozentin Organisation der Übungen Übungsleiter Korrekteure Maike Buchin Maike.Buchin@rub.de Raum NA 1/70 Sprechzeiten:

Mehr

Übung Algorithmen I

Übung Algorithmen I Übung Algorithmen I 20.5.15 Christoph Striecks Christoph.Striecks@kit.edu (Mit Folien von Julian Arz, Timo Bingmann und Sebastian Schlag.) Roadmap Organisation Mergesort, Quicksort Dual Pivot Quicksort

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Vorstellen des vierten Übungsblatts 2. Vorbereitende Aufgaben für das vierte Übungsblatt

Mehr

A6.1 Logarithmus. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. A6.1 Logarithmus. A6.2 Landau-Notation. A6.

A6.1 Logarithmus. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. A6.1 Logarithmus. A6.2 Landau-Notation. A6. Algorithmen und Datenstrukturen 8. März 2018 A6. Laufzeitanalyse: Logarithmus and Landau-Symbole Algorithmen und Datenstrukturen A6. Laufzeitanalyse: Logarithmus and Landau-Symbole Marcel Lüthi and Gabriele

Mehr

Abschnitt 7: Komplexität von imperativen Programmen

Abschnitt 7: Komplexität von imperativen Programmen Abschnitt 7: Komplexität von imperativen Programmen 7. Komplexität von imperativen Programmen 7 Komplexität von imperativen Programmen Einf. Progr. (WS 08/09) 399 Ressourcenbedarf von Algorithmen Algorithmen

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / Vorlesung 9, Donnerstag 19.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / Vorlesung 9, Donnerstag 19. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 9, Donnerstag 19. Dezember 2013 (Teile und Herrsche, Mastertheorem) Junior-Prof. Dr.

Mehr