Algorithmen und Datenstrukturen 1. 1 Einleitung
|
|
- Jutta Hertha Franke
- vor 5 Jahren
- Abrufe
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.
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
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
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
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
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
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
Ü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
Ü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
Ü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.
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
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
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
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
Ü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/
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
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:
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
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.
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
Ü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.
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
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
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:
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
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
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
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
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):
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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,
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
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.
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]
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
Ü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
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
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.......................................
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
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.
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
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
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:
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
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
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
Ü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
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
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
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?
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
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.
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
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
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
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
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
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
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
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
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
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,
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
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
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
Ü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
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
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
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:
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
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
( )= 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
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
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:
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
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
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
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