Algorithmen und Datenstrukturen 1. 1 Einleitung

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen 1. 1 Einleitung"

Transkript

1 Algorithmen und Datenstrukturen 1 1 Einleitung Im ersten Kapitel soll auf informeller Ebene anhand eines einfachen Beispiels der Begriff des Algorithmus sowie verschiedene Aspekte der Algorithmenanalyse eingeführt werden. Wichtige Punkte dabei sind die Darstellung eines Algorithmus in Pseudocode, Korrektheit eines Algorithmus, Schleifeninvarianten, Laufzeit eines Algorithmus, das zugrundeliegende Maschinenmodell, die Wachstumsordnung sowie die Entwurfsstrategie divide and conquer. 1 Einleitung TU Bergakademie Freiberg, WS 2005/06

2 Algorithmen und Datenstrukturen Sortieren durch Einfügen (Insertion-Sort) Problembeschreibung: Eingabe: Eine Folge von n Zahlen a 1, a 2,..., a n. Ausgabe: Umordnung a 1, a 2,..., a n der Eingabefolge mit der Eigenschaft a 1 a 2 a n. Die Zahlen werden auch als Schlüssel (keys) bezeichnet; diese sind oft nur ein Bestandteil eines Datensatzes. Wir werden verschiedene Sortierverfahren kennenlernen, jedes wird durch einen Algorithmus ausgedrückt.

3 Algorithmen und Datenstrukturen 3 Darstellung von Algorithmen Oft ist Umgangssprache am zweckmäßigsten (Kochrezepte, Bedienungsanleitungen) Zu den präzisesten Darstellungen zählen die in einer Programmiersprache (Pascal, C, Java,... ). Zwischenvariante: Pseudocode. Enthält genaue Angaben über Ablauf, aber auch umgangssprachliche Bestandteile. Dient der Vermittlung von Algorithmen an Menschen (im Gegensatz zu Maschinen) Softwaretechnische Aspekte wie Datenkapselung, Modularität, Fehlerbehandlung usw. werden dabei ignoriert.

4 Algorithmen und Datenstrukturen 4 Insertion-Sort Ein Algorithmus zur Sortierung einer kleinen Anzahl von Schlüsseln Vorgehen ähnlich der Sortierung eines Spielkartenblatts: Am Anfang liegen die Karten des Blatts verdeckt auf dem Tisch. Die Karten werden nacheinander aufgedeckt und an der korrekten Position in das Blatt, das in der Hand gehalten wird, eingefügt. Um die Einfügestelle für eine neue Karte zu finden wird diese sukzessive (von links nach rechts) mit den bereits einsortierten Karten des Blattes verglichen. Zu jedem Zeitpunkt sind die Karten in der Hand sortiert und bestehen aus den zuerst vom Tisch entnommenen Karten.

5 Algorithmen und Datenstrukturen 5 INSERTION-SORT(A) 1 for j 2 to length[a] 2 do key A[j] 3 Füge A[j] ein in die sortierte Folge A[1.. j 1]. 4 i j 1 5 while i > 0 and A[i] > key 6 do A[i + 1] A[i] 7 i i 1 8 A[i + 1] key Der Pseudocode für den Insertion-Sort Algorithmus ist durch obige Prozedur INSERTION-SORT gegeben, die als Eingabeparameter ein Feld A mit der zu sortierenden Folge erhält. Die Folge wird an Ort und Stelle (in place) sortiert. Nach Beendigung des Algorithmus enthält A die sortierte Folge.

6 Algorithmen und Datenstrukturen 6 Beispiel: Ausführung von Insertion-Sort auf Eingabefeld A[1.. 6]. Die Komponente, auf die der Index j zeigt, ist rot eingefärbt. Blau eingfärbte Felder liegen im bereits sortierten Teilfeld A[1.. j 1].

7 Algorithmen und Datenstrukturen 6 Beispiel: Ausführung von Insertion-Sort auf Eingabefeld A[1.. 6]. Die Komponente, auf die der Index j zeigt, ist rot eingefärbt. Blau eingfärbte Felder liegen im bereits sortierten Teilfeld A[1.. j 1].

8 Algorithmen und Datenstrukturen 6 Beispiel: Ausführung von Insertion-Sort auf Eingabefeld A[1.. 6]. Die Komponente, auf die der Index j zeigt, ist rot eingefärbt. Blau eingfärbte Felder liegen im bereits sortierten Teilfeld A[1.. j 1].

9 Algorithmen und Datenstrukturen 6 Beispiel: Ausführung von Insertion-Sort auf Eingabefeld A[1.. 6]. Die Komponente, auf die der Index j zeigt, ist rot eingefärbt. Blau eingfärbte Felder liegen im bereits sortierten Teilfeld A[1.. j 1].

10 Algorithmen und Datenstrukturen 6 Beispiel: Ausführung von Insertion-Sort auf Eingabefeld A[1.. 6]. Die Komponente, auf die der Index j zeigt, ist rot eingefärbt. Blau eingfärbte Felder liegen im bereits sortierten Teilfeld A[1.. j 1].

11 Algorithmen und Datenstrukturen 6 Beispiel: Ausführung von Insertion-Sort auf Eingabefeld A[1.. 6]. Die Komponente, auf die der Index j zeigt, ist rot eingefärbt. Blau eingfärbte Felder liegen im bereits sortierten Teilfeld A[1.. j 1].

12 Algorithmen und Datenstrukturen 6 Beispiel: Ausführung von Insertion-Sort auf Eingabefeld A[1.. 6]. Die Komponente, auf die der Index j zeigt, ist rot eingefärbt. Blau eingfärbte Felder liegen im bereits sortierten Teilfeld A[1.. j 1].

13 Algorithmen und Datenstrukturen 6 Beispiel: Ausführung von Insertion-Sort auf Eingabefeld A[1.. 6]. Die Komponente, auf die der Index j zeigt, ist rot eingefärbt. Blau eingfärbte Felder liegen im bereits sortierten Teilfeld A[1.. j 1].

14 Algorithmen und Datenstrukturen 6 Beispiel: Ausführung von Insertion-Sort auf Eingabefeld A[1.. 6]. Die Komponente, auf die der Index j zeigt, ist rot eingefärbt. Blau eingfärbte Felder liegen im bereits sortierten Teilfeld A[1.. j 1].

15 Algorithmen und Datenstrukturen 6 Beispiel: Ausführung von Insertion-Sort auf Eingabefeld A[1.. 6]. Die Komponente, auf die der Index j zeigt, ist rot eingefärbt. Blau eingfärbte Felder liegen im bereits sortierten Teilfeld A[1.. j 1].

16 Algorithmen und Datenstrukturen 6 Beispiel: Ausführung von Insertion-Sort auf Eingabefeld A[1.. 6]. Die Komponente, auf die der Index j zeigt, ist rot eingefärbt. Blau eingfärbte Felder liegen im bereits sortierten Teilfeld A[1.. j 1].

17 Algorithmen und Datenstrukturen 7 Pseudocode-Konventionen 1. Einrücken verdeutlicht die Blockstruktur. 2. Schleifenkonstrukte wie in Pascal, C, C++ oder Java. Die Zählvariable einer for -Schleife ist auch nach Schleifenende noch definiert. 3. Text von -Symbol bis Zeilenende ist ein Kommentar. 4. Variablen sind lokal wenn nicht anders vermerkt. 5. Auf Elemente eines Feldes (Arrays) wird zugegriffen durch den Namen des Feldes gefolgt vom Elementindex in eckigen Klammern. Indexbereiche werden durch.. angegeben. 6. Eine mehrfache Zuweisung wie i j e ist eine Kurzschreibweise für die Zuweisung j e gefolgt von der Zuweisung i j.

18 Algorithmen und Datenstrukturen 8 7. Oft treten Objekte auf, welche Attribute besitzen. Das Attribur attr eines Objektes x wird bezeichnet mit attr[x]. 8. Objekte werden, wie in Java, als Referenzen behandelt. Sind x, y Objekte, so zeigen nach der Zuweisung y x beide auf dasselbe Objekt. Dies zieht kein Kopieren von Attributen nach sich. 9. Unterprogrammparameter werden als Wert ( call by value ) übergeben, aber als Referenz, falls es sich um Objekte handelt. 10. Logische Ausdrücke mit den Operatoren und sowie oder werden verkürzt ausgewertet, falls nach Auswertung eines Teils eines logischen Ausdrucks der Wahrheitswert des gesamten Ausdrucks bereits feststeht.

19 Algorithmen und Datenstrukturen 9 Korrektheit Zur Prüfung, ob ein Algorithmus das richtige Resultat liefert, werden oft Schleifeninvarianten verwendet. Für die äußere for -Schleife von INSERTION- SORT eignet sich: Schleifeninvariante: Zu Beginn jedes Durchlaufs der äußeren for -Schleife besteht das Teilfeld A[1.. j 1] aus den dort ursprünglich enthaltenen Zahlen in aufsteigend sortierter Reihenfolge.

20 Algorithmen und Datenstrukturen 10 Für den Korrektheitsnachweis ist über die Invariante folgendes zu zeigen: Initialisierung: Die Invariante ist vor dem ersten Durchlauf erfüllt. Erhaltung: Ist die Invariante vor einem Durchlauf erfüllt, so auch danach. Terminierung: Endet die Schleife, so liefert die Invariante oft zusammen mit dem Grund für den Schleifenabbruch eine für den Korrektheitsnachweis hilfreiche Aussage. Man beachte die Ähnlichkeit mit dem mathematischen Prinzip der vollständigen Induktion (Induktionsanfang, Induktionsschritt). Im Unterschied hierzu wird die Invariante jedoch nur für endlich viele Durchläufe benötigt, da die Schleife in der Regel abbrechen soll.

21 Algorithmen und Datenstrukturen 11 Nachweis für INSERTION-SORT: Initialisierung: Unmittelbar vor der ersten Iteration ist j = 2; somit besteht das Teilfeld A[1.. j 1] aus dem ersten Element des Feldes und ist trivialerweise sortiert. Erhaltung: Strengenommen müßte man auch für die innere while - Schleife eine Invariante aufstellen und beweisen. Wir halten aber informal fest, dass deren Wirken darin besteht, die Einträge A[j 1], A[j 2],... solange jeweils um eine Position nach rechts zu verschieben, bis die richtige Einfügeposition für key (dessen Wert anfangs in A[j] stand) freigeworden ist. Dort wird daraufhin der Wert von key geschrieben. Terminierung: Die äußere for -Schleife terminiert sobald j > n, was zum erstenmal bei j = n + 1 zutrifft, also für j 1 = n. Einsetzen von j 1 = n in die Schleifeninvariante liefert die Aussage, dass das gesamte Feld nun sortiert ist.

22 Algorithmen und Datenstrukturen 12 Analyse von Algorithmen Aufwand eines Algorithmus: Laufzeit, Speicherbedarf, Kommunitationsbedarf, etc. Um den Aufwand (üblicherweise die Laufzeit) beim Ausführen eines Algorithmus zu beschreiben, muss ein Berechnungsmodell (Maschinenmodell) zugrundegelegt werden. Welche Grundoperationen stehen zur Verfügung? Wie lange dauern diese? Wie sehen die Daten aus? Möglichst nahe an realen Computern, aber einfach genug, um Aussagen herleiten zu können.

23 Algorithmen und Datenstrukturen 13 Das Modell der Random-Access Maschine (RAM) Anweisungen werden nacheinander, nicht gleichzeitig ausgeführt. Um die Mühe, jeder Anweisung einen Zeitaufwand zuzuordnen, zu umgehen, legen wir fest, dass folgende, in realen Computern auftretende Operationen einen konstanten (gleichen) Zeitaufwand darstellen Arithmetik: Addition, Subtraktion, Multiplikation, Division, Rest, nächstgrößere/-kleinere ganze Zahl, Links- und Rechtsshift. Datenbewegung: Laden (load), Abspeichern (store), Kopieren (copy). Steuerung: bedingte/unbedingte Verzweigung, Unterprogrammaufruf und -rücksprung. Speicherhierarchien werden nicht berücksichtigt.

24 Algorithmen und Datenstrukturen 14 Datentypen: Das RAM-Modell enthält ganze Zahlen (integer) sowie Gleitpunktzahlen (floating point). Dabei ist anzumerken: Wir lassen die Genauigkeit der Zahldarstellung außer acht, diese kann jedoch in gewissen numerischen Anwendungen von grösserer Bedeutung sein. Die Wortlänge ist begrenzt: treten Zahlen der Größenordnung n auf, so nehmen wir an, diese würden durch c log 2 n Bits dargestellt, wobei c 1, d.h. jedes Wort kann den Wert n aufnehmen (speichern) und wir können n Größen indizieren; c ist eine Konstante, d.h. kann nicht als beliebig groß angenommen werden. (Ansonsten beliebig große Datenmengen in einem Wort speicherbar, in einer Operation bearbeitbar: unrealistisch)

25 Algorithmen und Datenstrukturen 15 Wie wird die Laufzeit eines Algorithmus analysiert? Laufzeit hängt von den Eingabedaten ab: 1000 Zahlen sortieren dauert länger als 3 Zahlen sortieren. Selbst bei zwei Sätzen von Eingabedaten gleicher Länge ist die Laufzeit von INSERTION-SORT für bereits sortierte Eingabedaten kürzer als wenn diese umgekehrt sortiert sind. Größe der Eingabe: hängt auch von der Aufgabe ab. Typisch: Anzahl Objekte in der Eingabe (etwa Länge eines zu sortierenden Feldes). Kann auch anders sein, etwa bei der Multiplikation zweier ganzer Zahlen die Bitlänge des Ergebnisses. Kann von mehreren Größen abhängen, etwa bei Graphenalgorithmen Anzahl Knoten und Kanten des Eingabegraphen.

26 Algorithmen und Datenstrukturen 16 Laufzeit: bei gegebenen Eingabedaten die Anzahl auszuführender Grundoperationen (Schritte). Definition der Schritte sollte maschinenunabhängig sein. Jede Zeile Pseudocode erfordert konstante Zeit. Zeilen können unterschiedlichen Zeitaufwand erfordern, aber jede Abarbeitung der i-ten Zeile erfordert stets denselben Aufwand c i. Zugrundeliegende Annahme: jede Zeile enthält ausschließlich Grundoperationen. Enthält eine Zeile einen Unterprogrammaufruf, so ist der Aufwand des Aufrufs zwar konstant, aber nicht notwendig die Ausführung des Unterprogramms. Enthält die Zeile andere als Grundoperationen (z.b. sortiere Punkte nach aufsteigender x-koordinate ), so ist deren Laufzeit evtl. nicht konstant.

27 Algorithmen und Datenstrukturen 17 Analyse von Insertion-Sort c i bezeichne den Zeitaufwand für Zeile i. Für j = 2, 3,..., n bezeichne t j die Anzahl, wie oft beim Durchlauf mit Index j die Abbruchbedingung der while -Schleife geprüft wird. Beachte: beim regulären Abbruch einer for - oder while -Schleife wird die Abbruchbedingung einmal öfter als der Rumpf der Schleife ausgeführt.

28 Algorithmen und Datenstrukturen 18 Aufwand Anzahl INSERTION-SORT(A) 1 for j 2 to length[a] c 1 n 2 do key A[j] c 2 n 1 3 Füge A[j] ein in die sortierte Folge A[1.. j 1]. 4 i j 1 c 4 n 1 n 5 while i > 0 and A[i] > key c 5 j=2 t j n 6 do A[i + 1] A[i] c 6 j=2 (t j 1) n 7 i i 1 c 7 j=2 (t j 1) 8 A[i + 1] key c 8 n 1

29 Algorithmen und Datenstrukturen 19 Die Laufzeit ergibt sich als (Aufwand der Anweisung) (Anzahl deren Ausführungen). alle Anweisungen Für die Laufzeit T (n) von INSERTION-SORT erhalten wir T (n) = c 1 n + c 2 (n 1) + c 4 (n 1) + c 5 n + c 7 (t j 1) + c 8 (n 1). j=2 n j=2 t j + c 6 n j=2 (t j 1) Die Laufzeit hängt damit neben n auch von den Größen t j ab, welche ihrerseits von den Eingabedaten abhängen. Wir betrachten zwei Spezialfälle.

30 Algorithmen und Datenstrukturen 20 Günstigster Fall (best case): Eingabefeld ist bereits (aufsteigend) sortiert. In jedem Durchlauf der for -Schleife ist die Abbruchbedingung der while -Schleife stets beim ersten Mal erfüllt (es gilt stets A[i] key für i = j 1). Damit gilt t j = 1 für alle j. Für die Laufzeit gilt somit T (n) = c 1 n + c 2 (n 1) + c 4 (n 1) + c 5 (n 1) + c 8 (n 1) = (c 1 + c 2 + c 4 + c 5 + c 8 )n (c 2 + c 4 + c 5 + c 8 ). Es gilt also T (n) = an+b mit Konstanten a, b (welche von Ausführungszeiten von Grundanweisungen abhängen). Damit ist T (n) eine lineare Funktion von n.

31 Algorithmen und Datenstrukturen 21 Der ungünstigste Fall (worst case): Eingabefeld ist absteigend sortiert. In der while -Bedingung ist stets A[j] > key. key muss mit allen links von Position j stehenden Einträgen verglichen werden, d.h. es sind jedes Mal j 1 Vergleiche erforderlich. Die while -Schleife bricht also stets erst bei i = 0 ab, also gilt t j = j. Somit folgt n t j = j=2 n j = j=2 n (t j 1) = j=2 n(n + 1) 2 n (j 1) = j=2 1, n 1 k=1 k = (n 1)n. 2

32 Algorithmen und Datenstrukturen 22 Somit gilt ( ) n(n + 1) T (n) = c 1 n + c 2 (n 1) + c 4 (n 1) + c ( ) ( ) n(n 1) n(n 1) + c 6 + c 7 + c 8 (n 1) 2 2 = c ( 5 + c 6 + c 7 n 2 + c 1 + c 2 + c 4 + c ) 5 c 6 c 7 + c 8 n 2 2 (c 2 + c 4 + c 5 + c 8 ). In diesem Fall gilt T (n) = an 2 + bn + c mit Konstanten a, b, c, d.h. T (n) ist eine quadratische Funktion von n.

33 Algorithmen und Datenstrukturen 23 Analyse im ungünstigsten und mittleren Fall Es ist sinnvoll, zunächst die Laufzeit im ungünstigsten Fall, d.h. die längste Laufzeit bei allen möglichen Eingaben der Länge n, zu bestimmen. Gründe: Die worst-case-laufzeit liefert eine obere Schranke für die Laufzeit für beliebige Eingaben. Für einige Algorithmen tritt der ungünstigste Fall hinreichend oft auf. (Bei Suchalgorithmen beispielsweise immer bei Nichtvorhandensein des gesuchten Objektes) Das Verhalten im mittleren Fall ist oft nicht viel besser als im ungünstigsten Fall.

34 Algorithmen und Datenstrukturen 24 Beispiel: Angenommen die Eingabe für INSERTION-SORT bestehe aus n zufällig gewählten Zahlen. Im Mittel ist der in A[j] enthaltene Schlüssel kleiner als die Hälfte der Zahlen in A[1.. j 1], und größer als die andere Hälfte. Im Mittel muss die while -Schleife das bereits sortierte Teilfeld A[1.. j 1] zur Hälfte durchsuchen bis die Einfügestelle für key gefunden ist. t j = j/2. Obwohl damit die mittlere Laufzeit halb so groß ist wie die worst-case- Laufzeit, ist diese immer noch eine quadratische Funktion von n. Allgemein: Aussagen über mittlere Laufzeit erfordern stochastische Methoden sowie Annahmen über die Wahrscheinlichkeiten der möglichen Eingaben.

35 Algorithmen und Datenstrukturen 25 Wachstumsordnung Oft ist das Laufzeitverhalten eines Algorithmus hinreichend genau beschrieben durch den führenden Term der Laufzeitformel, d.h. man kann die Terme niederer Ordnung sowie die Konstante im führenden Term ignorieren. Beispiel: INSERTION-SORT mit worst-case-laufzeit T (n) = an 2 + bn + c. Weglassen der Terme niederer Ordnung an 2 Ignorieren der Konstanten n 2 Natürlich gibt dieser vereinfachte Ausdruck nicht mehr die Laufzeit an, sondern lediglich deren Wachstumsordnung, d.h. T (n) wächst wie n 2. Man sagt nun, die Laufzeit sei Θ(n 2 ), um diesen Sachverhalt auszudrücken. Ein Algorithmus wird effizienter als ein anderer eingestuft, falls seine worst-case-laufzeit eine kleinere Wachstumsordnung aufweist.

36 Algorithmen und Datenstrukturen Sortieren durch Mischen (Merge-Sort) Entwurfsprinzip bei INSERTION-SORT: Inkrementelles Sortieren, d.h. nach Sortieren des Teilfeldes A[1.. j 1] wird A[j] so eingefügt, dass A[1.. j] sortiert ist. Weiteres Entwurfsprinzip: Divide and conquer ( teile und herrsche ): 1. Zerlege das Problem in Teilprobleme (typischerweise zwei ungefähr gleich große) 2. Löse die Teilprobleme (rekursiv) 3. Kombiniere die Teillösungen zur Gesamtlösung 1.2 Sortieren durch Mischen (Merge-Sort) TU Bergakademie Freiberg, WS 2005/06

37 Algorithmen und Datenstrukturen 27 MERGE-SORT ist ein auf der Divide-and-conquer-Strategie basierendes Sortierverfahren mit einer Worst-case Laufzeit von niedrigerer Ordnung als die von INSERTION-SORT. Die Teilprobleme bestehen im Sortieren von Teilfeldern A[p.. r], wobei das Ausgangsproblem durch p = 1 und r = n gekennzeichnet ist. Sortieren von A[p.. r]: 1. Zerlege A[p.. r] in zwei Teilfelder A[p.. q] und A[q + 1,.. r], wobei q in der Mitte zwischen p und r liegt. 2. Sortiere (rekursiv) beide Teilfelder. Die Rekursion endet bei Teilfeldern der Länge eins. 3. Füge die sortierten Teilfelder zu einem sortierten Gesamtfeld zusammen. Dieser Schritt wird durch die unten definierte Prozedur MER- GE(A, p, q, r) geleistet. 1.2 Sortieren durch Mischen (Merge-Sort) TU Bergakademie Freiberg, WS 2005/06

38 Algorithmen und Datenstrukturen 28 Pseudocode: MERGE-SORT(A, p, r) 1 if p < r Prüfe ob Rekursion zuende. 2 then q (p + r)/2 Zerlege. 3 MERGE-SORT(A, p, q) Sortiere linkes Teilfeld. 4 MERGE-SORT(A, q + 1, r) Sortiere rechtes Teilfeld. 5 MERGE(A, p, q, r) Füge Teilfelder zusammen. Erster Aufruf: MERGE-SORT(A, 1, n). 1.2 Sortieren durch Mischen (Merge-Sort) TU Bergakademie Freiberg, WS 2005/06

39 Algorithmen und Datenstrukturen 29 Beispiel: Zerlegephase für n = Sortieren durch Mischen (Merge-Sort) TU Bergakademie Freiberg, WS 2005/06

40 Algorithmen und Datenstrukturen 30 Beispiel: Zerlegephase für n = Sortieren durch Mischen (Merge-Sort) TU Bergakademie Freiberg, WS 2005/06

41 Algorithmen und Datenstrukturen 31 Zusammenfügen Eingabe: Feld A, Indizes p, q, r mit p q < r Beide Teilfelder A[p.. q] und A[q r] sind sortiert. Insbesondere sind beide nicht leer. Ausgabe: Beide Teilfelder vereint in einem sortierten Feld A[p.. r]. Wir konstruieren hierfür einen Algorithmus mit Laufzeit Θ(n), n = r p+1 = # zusammengefügter Elemente. Bemerkung: Bisher bezeichnete n die Größe des Ausgangsproblems, hier bezeichnet es die des Teilproblems. Dies ist üblich bei der Analyse rekursiver Algorithmen. 1.2 Sortieren durch Mischen (Merge-Sort) TU Bergakademie Freiberg, WS 2005/06

42 Algorithmen und Datenstrukturen 32 Zusammenfügen in linearer Zeit (Grundidee) Betrachte als Analogie zwei Spielkartenstapel: Beide Stapel sind sortiert und liegen offen auf dem Tisch, mit der niedrigstwertigen Karte obenauf. Wir fügen diese zu einem sortierten verdeckten Stapel zusammen. Grundoperation: Wähle die niedrigere der beiden obenliegenden Karten. Entferne diese aus ihrem Stapel und lege sie verdeckt auf den Ausgabestapel. Wiederhole die Grundoperation bis einer der beiden Stapel abgearbeitet ist. Setzte den verbleibenden Stapel verdeckt auf den Ausgabestapel. 1.2 Sortieren durch Mischen (Merge-Sort) TU Bergakademie Freiberg, WS 2005/06

43 Algorithmen und Datenstrukturen 33 Laufzeit: Jede Grundoperation erfordert konstanten Aufwand, da hierbei stets zwei Karten verglichen werden. Die Grundoperation muss höchstens n Mal ausgeführt werden, da nur soviele Karten in beiden Ausgangsstapeln enthalten sind. Insgesamt erfordert das Mischen somit Θ(n) Laufzeit. 1.2 Sortieren durch Mischen (Merge-Sort) TU Bergakademie Freiberg, WS 2005/06

44 Algorithmen und Datenstrukturen 34 Durch folgenden Trick kann man sich die Prüfung auf leeren Stapel ersparen: Beide Ausgangsstapel erhalten als unterste Karte eine Sonderkarte mit Wertigkeit. Diese ist höher als die Wertigkeit jeder anderen Karte bis auf die zweite Sonderkarte. Wir wissen im Voraus, dass genau n = r p + 1 gewöhnliche Karten zu verarbeiten sind, danach kann der Algorithmus enden. (Die Sonderkarten werden nie in den Ausgabestapel einsortiert.) 1.2 Sortieren durch Mischen (Merge-Sort) TU Bergakademie Freiberg, WS 2005/06

45 Algorithmen und Datenstrukturen 35 MERGE(A, p, q, r) n 1 q p + 1 n 2 r q Erzeuge Hilfsfelder L[1.. n 1 + 1] und R[1.. n 2 + 1] for i 1 to n 1 do L[i] A[p + i 1] for j 1 to n 2 do R[j] A[q + j] L[n 1 + 1], R[n 2 + 1] i 1, j 1 for k p to r do if L[i] R[j] then A[k] L[i], i i + 1 else A[k] R[j], j j Sortieren durch Mischen (Merge-Sort) TU Bergakademie Freiberg, WS 2005/06

46 Algorithmen und Datenstrukturen 36 Analyse von Divide-and-conquer Algorithmen Rekursionsgleichung für T (n) = Laufzeit für Problem der Größe n Ist die Problemgröße klein genug (n c) so liegt ein Basisfall vor, dessen Lösung konstante Zeit erfordert: Θ(1). Andernfalls zerlegen wir in a Teilprobleme, jedes 1/b Mal so groß wie das Ausgangsproblem (a = b = 2 für MERGE-SORT). Erforderliche Zeit für Zerlegen eines Problems der Größe n sei D(n). a zu lösende Teilprobleme der Größe n/b, jedes Teilproblem erfordert Laufzeit T (n/b) insgesamte Laufzeit at (n/b) zur Lösung der Teilprobleme. Sei C(n) der Aufwand zum Zusammenfügen der Teillösungen eines Ausgangsproblems der Größe n. 1.2 Sortieren durch Mischen (Merge-Sort) TU Bergakademie Freiberg, WS 2005/06

47 Algorithmen und Datenstrukturen 37 Wir erhalten die Rekursionsgleichung T (n) = { Θ(1) falls n c, at (n/b) + D(n) + C(n) sonst. 1.2 Sortieren durch Mischen (Merge-Sort) TU Bergakademie Freiberg, WS 2005/06

48 Algorithmen und Datenstrukturen 38 Analyse von Merge-Sort Zur Vereinfachung sei n eine Zweierpotenz, d.h. n = 2 k für ein k N 0. Jeder Zerlegungsschritt erzeugt Teilprobleme von Größe genau n/2. Der Basisfall tritt ein für n = 1. Laufzeit der Merge-Sort Phasen für n 2: Zerlegen: Berechnung von q als Mittelwert von p und r, d.h. D(n) = Θ(1) Teillösungen: Rekursive Lösung zweier Teilproblemen der Größe n/2: 2T (n/2) Zusammenfügen: MERGE angewandt auf Feld von Gesamtlänge n erfordert Laufzeit Θ(n), also C(n) = Θ(n). 1.2 Sortieren durch Mischen (Merge-Sort) TU Bergakademie Freiberg, WS 2005/06

49 Algorithmen und Datenstrukturen 39 Schließlich gilt D(n) + C(n) = Θ(1) + Θ(n) = Θ(n), und wir erhalten T (n) = { Θ(1) falls n = 1, 2T (n/2) + Θ(n) falls n > 1. Lösung der Rekursionsgleichung: Man kann zeigen (siehe Kapitel 3) dass für die Lösung obiger Rekursiongleichung gilt T (n) = Θ(n log n). Da n log n langsamer wächst als n 2 besitzt MERGE-SORT asymptotisch eine geringere Laufzeit als INSERTION-SORT. Dies wirkt sich u.u. erst für hinreichend große n aus. 1.2 Sortieren durch Mischen (Merge-Sort) TU Bergakademie Freiberg, WS 2005/06

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

Rekursionsbäume Aufstellen eines Baumes dessen Knoten die Laufzeit auf jeder Rekursionsstufe darstellen und Aufsummieren

Rekursionsbäume Aufstellen eines Baumes dessen Knoten die Laufzeit auf jeder Rekursionsstufe darstellen und Aufsummieren Algorithmen und Datenstrukturen 74 3 Rekursionen Vor allem bei rekursiven Algorithmen besitzt die Laufzeitfunktion eine naheliegende rekursive Formulierung, d.h. die Laufzeitfunktion ist konstant für den

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

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

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

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Sortieralgorithmen Einleitung Heapsort Quicksort 2 Motivation Sortieren ist Voraussetzung für viele Anwendungen Nach

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 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

Ü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

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

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

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

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

Übersicht. Datenstrukturen und Algorithmen. Die Teile-und-Beherrsche-Methode. Übersicht. Vorlesung 3: Rekursionsgleichungen (K4)

Übersicht. Datenstrukturen und Algorithmen. Die Teile-und-Beherrsche-Methode. Übersicht. Vorlesung 3: Rekursionsgleichungen (K4) Datenstrukturen und Algorithmen Vorlesung 3: (K4) 1 e für rekursive Algorithmen Prof. Dr. Erika Ábrahám 2 Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-14/ datenstrukturen-und-algorithmen/

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

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a

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

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

Ü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

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

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2015/16 2. Vorlesung Sortieren mit anderen Mitteln Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2-11 Teile und herrsche Idee: teile den Kartenstapel

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2012/13 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a

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

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

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2016/17 2. Vorlesung Sortieren mit anderen Mitteln Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2-1 Teile und herrsche Idee: teile den Kartenstapel

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

Sortieren II / HeapSort Heaps

Sortieren II / HeapSort Heaps Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: dsal-i1@algo.rwth-aachen.de Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php

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

Technische Universität München SoSe 2015 Institut für Informatik I Mai 2015 Dr. Tobias Lasser. Aufgabe 1 Rechnen mit Landau-Symbolen

Technische Universität München SoSe 2015 Institut für Informatik I Mai 2015 Dr. Tobias Lasser. Aufgabe 1 Rechnen mit Landau-Symbolen Technische Universität München SoSe 2015 Institut für Informatik I-16 27. Mai 2015 Dr. Tobias Lasser Lösungsvorschläge zur Musterklausur zu Algorithmen und Datenstrukturen Aufgabe 1 Rechnen mit Landau-Symbolen

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

Heapsort. 1. Erstelle aus dem gegebenen Array einen Max-Heap (DownHeap) 2. Tausche erstes und letztes Element des Arrays

Heapsort. 1. Erstelle aus dem gegebenen Array einen Max-Heap (DownHeap) 2. Tausche erstes und letztes Element des Arrays Heapsort Beispiel für einen eleganten Algorithmus, der auf einer effizienten Datenstruktur (dem Heap) beruht [Williams, 1964] Daten liegen in einem Array der Länge n vor 1. Erstelle aus dem gegebenen Array

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

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

Interne Sortierverfahren

Interne Sortierverfahren Angewandte Datentechnik Interne Sortierverfahren Interne Sortierverfahren Ausarbeitung einer Maturafrage aus dem Fach A n g e w a n d t e D a t e n t e c h n i k Andreas Hechenblaickner 5CDH HTBLA Kaindorf/Sulm

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Mariano Zelke Datenstrukturen 2/19 Das Teilfolgenproblem: Algorithmus A 3 A 3 (i, j bestimmt den Wert einer maximalen Teilfolge für a i,..., a j. (1 Wenn

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

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

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

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

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

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

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

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

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

Copyright, Page 1 of 7 Heapsort

Copyright, Page 1 of 7 Heapsort www.mathematik-netz.de Copyright, Page 1 of 7 Heapsort Alle grundlegenden, allgemeinen Sortierverfahren benötigen O(n 2 ) Zeit für das Sortieren von n Schlüsseln. Die kritischen Operationen, d.h. die Auswahl

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

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

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

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

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

Ü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

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

Elementare Sortierverfahren

Elementare Sortierverfahren Algorithmen und Datenstrukturen I Elementare Sortierverfahren Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 18:16 Inhaltsverzeichnis Sortieren.......................................

Mehr

7. Sortieren Lernziele. 7. Sortieren

7. Sortieren Lernziele. 7. Sortieren 7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche

Mehr

4 Probabilistische Analyse und randomisierte Algorithmen

4 Probabilistische Analyse und randomisierte Algorithmen Algorithmen und Datenstrukturen 96 4 Probabilistische Analyse und randomisierte Algorithmen Bei der Algorithmenanalyse ist es sehr hilfreich, Aspekte berücksichtigen zu können, die vom Zufall abhängen.

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 4 (30.4.2018) Sortieren IV Algorithmen und Komplexität Analyse Merge Sort Laufzeit T(n) setzt sich zusammen aus: Divide und Merge: O n

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

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

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems 4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um

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

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Weitere Grundlagen Maike Buchin 20.4.2017 Wiederholung wir interessieren uns für effizienten Algorithmen und Datenstrukturen Laufzeiten messen wir asymptotisch in der Oh-Notation

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Die Landau-Notation (Wiederholung und Vertiefung) 2. Vorbereitung Aufgabenblatt 1, Aufgabe 1

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

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

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 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

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. 8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.

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

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative

Mehr

Technische Universität München SoSe 2018 Fakultät für Informatik, I Mai 2018 Dr. Stefanie Demirci

Technische Universität München SoSe 2018 Fakultät für Informatik, I Mai 2018 Dr. Stefanie Demirci Name: Vorname: Matr. Nr.: Technische Universität München SoSe 2018 Fakultät für Informatik, I-16 9. Mai 2018 Dr. Stefanie Demirci Probeklausur zu Algorithmen und Datenstrukturen Allgemeine Hinweise Die

Mehr

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) : 2 Sortieren Das Sortieren einer Datenfolge ist eines der am leichtesten zu verstehenden und am häufigsten auftretenden algorithmischen Probleme. In seiner einfachsten Form besteht das Problem darin, eine

Mehr

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems 4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um

Mehr

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität Datenstrukturen und Algorithmen Christian Sohler FG Algorithmen & Komplexität 1 Klausur Wichtige Hinweise: 2.7.07, Beginn 9 Uhr Bitte spätestens 8:4 Uhr vor Ort sein Sporthalle + Audimax Informationen

Mehr

Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren

Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren Rekursion Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren Mathematische Rekursion o Viele mathematische Funktionen sind sehr natürlich rekursiv definierbar, d.h. o die

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

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

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

Suchen und Sortieren

Suchen und Sortieren Ideen und Konzepte der Informatik Suchen und Sortieren Ordnung ist das halbe Leben Antonios Antoniadis (Basierend auf Folien von Kurt Mehlhorn und Konstantinos Panagiotou) 6. November 2017 6. November

Mehr

Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren

Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren Rekursion Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren Mathematische Rekursion o Viele mathematische Funktionen sind sehr natürlich rekursiv definierbar, d.h. o die

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 ) Frank Heitmann heitmann@informatik.uni-hamburg.de 21. Oktober 2015 Frank Heitmann heitmann@informatik.uni-hamburg.de

Mehr

Übung zur Vorlesung Berechenbarkeit und Komplexität

Übung zur Vorlesung Berechenbarkeit und Komplexität RWTH Aachen Lehrgebiet Theoretische Informatik Reidl Ries Rossmanith Sanchez Tönnis WS 2012/13 Übungsblatt 7 26.11.2012 Übung zur Vorlesung Berechenbarkeit und Komplexität Aufgabe T15 Entwickeln Sie ein

Mehr

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält

Mehr

public class Test extends MiniJava { public static void main (String [] args) { write(args[0]+args[1]); } } // end of class Test

public class Test extends MiniJava { public static void main (String [] args) { write(args[0]+args[1]); } } // end of class Test Manche Funktionen, deren Ergebnistyp void ist, geben gar keine Werte zurück im Beispiel: write() und main(). Diese Funktionen heißen Prozeduren. Das Hauptprogramm hat immer als Parameter ein Feld args

Mehr

Bucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt.

Bucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt. Bucketsort Beispiel Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt 1 2 A.78.17 0 1 B.12.17 Sonst: Skalieren ( Aufwand O(n) ) 3.39 2.21.23.26 Idee:

Mehr

Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt

Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt Bucketsort Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt Sonst: Skalieren ( Aufwand O(n) ) Idee: Teile [0, 1) in n gleich große Buckets - Oder: n/k

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

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften Ziel: Methoden kennen

Mehr

Algorithms & Data Structures 2

Algorithms & Data Structures 2 Algorithms & Data Structures Digital Sorting WS B. Anzengruber-Tanase (Institute for Pervasive Computing, JKU Linz) (Institute for Pervasive Computing, JKU Linz) WIEDERHOLUNG :: UNTERE SCHRANKE FÜR SORTIEREN

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 6 (7.5.2018) Dictionaries, Binäre Suche, Hashtabellen I / Yannic Maus Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary:

Mehr

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Technische Universität München Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften

Mehr

Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit

Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit Team A blau Martin Herfurth 11043831 Markus Wagner 11043447 5. Februar 2007 1 1 Untere Schranke für Vergleichsbasierte Algorithmen

Mehr

Konzepte der Informatik

Konzepte der Informatik Platzhalter für Bild, Bild auf Titelfolie hinter das Logo einsetzen Konzepte der Informatik Vorkurs Informatik zum WS 2013/2014 16.09. - 27.09.2013 Dr. Werner Struckmann / Hendrik Freytag 1. April 2010

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