Algorithmen und Datenstrukturen
|
|
|
- Dirk Kalb
- vor 7 Jahren
- Abrufe
Transkript
1 Algorithmen und Datenstrukturen A3. Sortieren: Selection- und Insertionsort Marcel Lüthi and Gabriele Röger Universität Basel 1. März 2018
2 Sortieralgorithmen
3 Inhalt dieser Veranstaltung A&D Sortieren Komplexitätsanalyse Fundamentale Datenstrukturen Suchen Graphen Strings Weiterführende Themen Vergleichsbasierte Verfahren Nicht vergleichsbasierte Verfahren Überblick und Ausblick
4 Relevanz Sortieren von Daten wichtig für viele Anwendungen, z.b. sortierte Darstellung (z.b. auf Webseite) Produkte sortiert nach Preis, Kundenbewertung, etc. Kontobewegungen sortiert nach Buchungsdatum Vorverarbeitung für viele effiziente Suchalgorithmen Wie schnell können Sie eine Nummer im Telefonbuch nachschlagen? Und wenn die Einträge nicht sortiert wären? Vorverarbeitung für viele andere Verfahren z.b. Kruskals Algorithmus zur Berechnung minimaler Spannbäume von ungerichteten Graphen Fachzeitschrift Computing in Science & Engineering nennt Quicksort-Sortieralgorithmus als einen der 10 wichtigsten Algorithmen des 20. Jahrhunderts.
5 Aufgabenstellung Aufgabenstellung Sortieralgorithmen Eingabe Resultat Sequenz von n Elementen e 1,..., e n Jedes Element e i hat Schlüssel k i = key(e i ) Ordnungsrelation auf den Schlüsseln reflexiv: k k transitiv: k k und k k k k antisymmetrisch: k k und k k k = k Sequenz der Eingabeelemente gemäss Ordungsrelation ihrer Schlüssel sortiert Notation: auch e e für key(e) key(e )
6 Aufgabenstellung: Beispiele Beispiel Eingabe: 3, 6, 2, 3, 1, key(e) = e, auf natürlichen Zahlen Ausgabe: 1, 2, 3, 3, 6 Beispiel Eingabe: Liste aller Studierenden der Uni Basel, Eingabe: key(e) = Wohnort von e, lexikographische Ordnung Ausgabe: Liste aller Studierenden, nach Wohnort sortiert Bis auf weiteres: ganze Zahlen, key(e) = e und kleiner gleich Später (und Übung): Umgang mit komplexen Objekten
7 Interessante Eigenschaften von Sortieralgorithmen Zeitbedarf: Wieviele Schlüsselvergleiche und Swaps werden durchgeführt? adaptiv: Verfahren ist schneller, wenn Eingabe bereits (teilweise) vorsortiert. Platzbedarf: Wieviel Speicherplatz wird zusätzlich zum Eingabearray verwendet (explizit oder im call stack)? in-place: Zusätzlich verbrauchter Platz ist konstant (nicht abhängig von der Eingabegrösse). stabil: Reihenfolge von Elementen mit gleichem Schlüssel wird nicht verändert. vergleichsbasiert: Verfahren verwendet nur Vergleich von Schlüsselpaaren und tausch zweier Elemente.
8 Interessante Eigenschaften von Sortieralgorithmen Zeitbedarf: Wieviele Schlüsselvergleiche und Swaps werden durchgeführt? adaptiv: Verfahren ist schneller, wenn Eingabe bereits (teilweise) vorsortiert. Platzbedarf: Wieviel Speicherplatz wird zusätzlich zum Eingabearray verwendet (explizit oder im call stack)? in-place: Zusätzlich verbrauchter Platz ist konstant (nicht abhängig von der Eingabegrösse). stabil: Reihenfolge von Elementen mit gleichem Schlüssel wird nicht verändert. vergleichsbasiert: Verfahren verwendet nur Vergleich von Schlüsselpaaren und tausch zweier Elemente.
9 Interessante Eigenschaften von Sortieralgorithmen Zeitbedarf: Wieviele Schlüsselvergleiche und Swaps werden durchgeführt? adaptiv: Verfahren ist schneller, wenn Eingabe bereits (teilweise) vorsortiert. Platzbedarf: Wieviel Speicherplatz wird zusätzlich zum Eingabearray verwendet (explizit oder im call stack)? in-place: Zusätzlich verbrauchter Platz ist konstant (nicht abhängig von der Eingabegrösse). stabil: Reihenfolge von Elementen mit gleichem Schlüssel wird nicht verändert. vergleichsbasiert: Verfahren verwendet nur Vergleich von Schlüsselpaaren und tausch zweier Elemente.
10 Interessante Eigenschaften von Sortieralgorithmen Zeitbedarf: Wieviele Schlüsselvergleiche und Swaps werden durchgeführt? adaptiv: Verfahren ist schneller, wenn Eingabe bereits (teilweise) vorsortiert. Platzbedarf: Wieviel Speicherplatz wird zusätzlich zum Eingabearray verwendet (explizit oder im call stack)? in-place: Zusätzlich verbrauchter Platz ist konstant (nicht abhängig von der Eingabegrösse). stabil: Reihenfolge von Elementen mit gleichem Schlüssel wird nicht verändert. vergleichsbasiert: Verfahren verwendet nur Vergleich von Schlüsselpaaren und tausch zweier Elemente.
11 Inhalt dieser Veranstaltung A&D Sortieren Komplexitätsanalyse Fundamentale Datenstrukturen Suchen Graphen Strings Weiterführende Themen Vergleichsbasierte Verfahren Nicht vergleichsbasierte Verfahren Überblick und Ausblick
12 Selectionsort
13 Sortierverfahren Sortieren Vergleichsbasierte Verfahren Nicht vergleichsbasierte Verfahren Überblick und Ausblick Selectionsort Insertionsort Mergesort Minimale Vergleichszahl Quick Sort Heap Sort
14 Selectionsort: Informell n = 8 Finde kleinstes Element an Positionen 0,..., n 1 und tausche es an Position 0 Finde kleinstes Element an Positionen 1,..., n 1 und tausche es an Position 1... Finde kleinstes Element an Positionen n 2,..., n 1 und tausche es an Position n - 2
15 Selectionsort: Algorithmus Selectionsort def selection_sort(array): n = len(array) for i in range(n - 1): # i = 0,...,n-2 # find minimum from positions i.. n min_val = array[i] min_index = i for j in range(i + 1, n): # j = i+1,...,n-1 if array[j] < min_val: min_val = array[j] min_index = j # swap element at pos i with minimum element array[min_index] = array[i] array[i] = min_val
16 Selectionsort: Beispiel i min ind
17 Selectionsort: Beispiel i min ind
18 Selectionsort: Beispiel i min ind
19 Selectionsort: Beispiel i min ind Minimum wird in dunklen Einträgen gesucht. Roter Eintrag ist gefundenes Minimum. Graue Einträge sind in richtiger Reihenfolge.
20 Selectionsort: Korrektheit Invariante: Eigenschaft, die während der gesamten Algorithmenlaufzeit gilt. Invariante 1: Zum Ende jedes Durchlaufs der äusseren Schleife sind die Elemente an den Positionen i sortiert. Invariante 2: Zum Ende jedes Durchlaufs der äusseren Schleife ist keines der Elemente an den Positionen i grösser als ein Element an einer Position > i. Korrektheit der Invarianten per (gemeinsamer) Induktion Nach letztem Schleifendurchlauf sind alle Elemente bis auf das letzte in korrekter Reihenfolge und das letzte ist nicht kleiner als das vorletzte. gesamte Eingabe sortiert
21 Selectionsort: Korrektheit Invariante: Eigenschaft, die während der gesamten Algorithmenlaufzeit gilt. Invariante 1: Zum Ende jedes Durchlaufs der äusseren Schleife sind die Elemente an den Positionen i sortiert. Invariante 2: Zum Ende jedes Durchlaufs der äusseren Schleife ist keines der Elemente an den Positionen i grösser als ein Element an einer Position > i. Korrektheit der Invarianten per (gemeinsamer) Induktion Nach letztem Schleifendurchlauf sind alle Elemente bis auf das letzte in korrekter Reihenfolge und das letzte ist nicht kleiner als das vorletzte. gesamte Eingabe sortiert
22 Selectionsort: Korrektheit Invariante: Eigenschaft, die während der gesamten Algorithmenlaufzeit gilt. Invariante 1: Zum Ende jedes Durchlaufs der äusseren Schleife sind die Elemente an den Positionen i sortiert. Invariante 2: Zum Ende jedes Durchlaufs der äusseren Schleife ist keines der Elemente an den Positionen i grösser als ein Element an einer Position > i. Korrektheit der Invarianten per (gemeinsamer) Induktion Nach letztem Schleifendurchlauf sind alle Elemente bis auf das letzte in korrekter Reihenfolge und das letzte ist nicht kleiner als das vorletzte. gesamte Eingabe sortiert
23 Selectionsort: Korrektheit Invariante: Eigenschaft, die während der gesamten Algorithmenlaufzeit gilt. Invariante 1: Zum Ende jedes Durchlaufs der äusseren Schleife sind die Elemente an den Positionen i sortiert. Invariante 2: Zum Ende jedes Durchlaufs der äusseren Schleife ist keines der Elemente an den Positionen i grösser als ein Element an einer Position > i. Korrektheit der Invarianten per (gemeinsamer) Induktion Nach letztem Schleifendurchlauf sind alle Elemente bis auf das letzte in korrekter Reihenfolge und das letzte ist nicht kleiner als das vorletzte. gesamte Eingabe sortiert
24 Selectionsort: Korrektheit Invariante: Eigenschaft, die während der gesamten Algorithmenlaufzeit gilt. Invariante 1: Zum Ende jedes Durchlaufs der äusseren Schleife sind die Elemente an den Positionen i sortiert. Invariante 2: Zum Ende jedes Durchlaufs der äusseren Schleife ist keines der Elemente an den Positionen i grösser als ein Element an einer Position > i. Korrektheit der Invarianten per (gemeinsamer) Induktion Nach letztem Schleifendurchlauf sind alle Elemente bis auf das letzte in korrekter Reihenfolge und das letzte ist nicht kleiner als das vorletzte. gesamte Eingabe sortiert
25 Selectionsort: Eigenschaften in-place: zusätzlicher Speicherbedarf nicht abhängig von Eingabegrösse Zeitbedarf: hängt nur von Grösse der Eingabe ab (nicht adaptiv für teilsortierte Eingaben) genauere Analyse: nächste Woche nicht stabil: beim Tausch kann das Element an Position i hinter ein gleiches Element springen, was später nicht mehr repariert wird.
26 Insertionsort
27 Sortierverfahren Sortieren Vergleichsbasierte Verfahren Nicht vergleichsbasierte Verfahren Überblick und Ausblick Selectionsort Insertionsort Mergesort Minimale Vergleichszahl Quick Sort Heap Sort
28 Insertionsort: Informell Ähnlich zum Sortieren von Spielkarten auf der Hand Elemente werden nacheinander in bereits sortierten Bereich am Sequenzanfang einsortiert. Grössere Elemente werden entsprechend nach hinten verschoben.
29 Insertionsort: Beispiel i
30 Insertionsort: Beispiel i
31 Insertionsort: Beispiel i
32 Insertionsort: Beispiel i Graue Einträge wurden nicht bewegt. Roter Eintrag wurde einsortiert. Schwarze Einträge wurden um eins nach rechts verschoben.
33 Insertionsort: Algorithmus Insertionsort (mit Swaps) def insertion_sort(array): n = len(array) for i in range(1, n): # i = 1,..., n - 1 # move array[i] to the left until it is # at the correct position. for j in range(i, 0, -1): # j = i,..., 1 if array[j] < array[j-1]: # not yet at final position. # swap array[j] and array[j-1] tmp = array[j] array[j] = array[j-1] array[j-1] = tmp else: break # continue with next i
34 Insertionsort: Algorithmus (etwas schneller) Vorherige Version: meiste Zuweisungen an array[j-1] unnötig. Insertionsort def insertion_sort(array): for i in range(1, len(array)): val = array[i] j = i while j > 0 and array[j - 1] > val: array[j] = array[j - 1] j -= 1 array[j] = val Laufzeitanalyse (später): kein fundamentaler Unterschied trotzdem: wenn direkte Zuweisung möglich zu bevorzugen
35 Insertionsort: Korrektheit Invariante 1: Zu Beginn jedes Durchlaufs der äusseren Schleife sind die Elemente an den Positionen < i sortiert. Invariante 2: Sei val der Wert an Position i vor Beginn der inneren Schleife. Zu Beginn jedes Durchlaufs der inneren Schleife sind die Elemente an den Positionen j bis i grösser oder gleich val. Korrektheit der Invarianten per Induktion Die innere Schleife verändert die Reihenfolge der an eine höhere Position verschobenen Elemente nicht und das nach unten verschobene Element wird korrekt einsortiert. Nach letztem Schleifendurchlauf sind alle Elemente sortiert.
36 Insertionsort: Korrektheit Invariante 1: Zu Beginn jedes Durchlaufs der äusseren Schleife sind die Elemente an den Positionen < i sortiert. Invariante 2: Sei val der Wert an Position i vor Beginn der inneren Schleife. Zu Beginn jedes Durchlaufs der inneren Schleife sind die Elemente an den Positionen j bis i grösser oder gleich val. Korrektheit der Invarianten per Induktion Die innere Schleife verändert die Reihenfolge der an eine höhere Position verschobenen Elemente nicht und das nach unten verschobene Element wird korrekt einsortiert. Nach letztem Schleifendurchlauf sind alle Elemente sortiert.
37 Insertionsort: Korrektheit Invariante 1: Zu Beginn jedes Durchlaufs der äusseren Schleife sind die Elemente an den Positionen < i sortiert. Invariante 2: Sei val der Wert an Position i vor Beginn der inneren Schleife. Zu Beginn jedes Durchlaufs der inneren Schleife sind die Elemente an den Positionen j bis i grösser oder gleich val. Korrektheit der Invarianten per Induktion Die innere Schleife verändert die Reihenfolge der an eine höhere Position verschobenen Elemente nicht und das nach unten verschobene Element wird korrekt einsortiert. Nach letztem Schleifendurchlauf sind alle Elemente sortiert.
38 Insertionsort: Korrektheit Invariante 1: Zu Beginn jedes Durchlaufs der äusseren Schleife sind die Elemente an den Positionen < i sortiert. Invariante 2: Sei val der Wert an Position i vor Beginn der inneren Schleife. Zu Beginn jedes Durchlaufs der inneren Schleife sind die Elemente an den Positionen j bis i grösser oder gleich val. Korrektheit der Invarianten per Induktion Die innere Schleife verändert die Reihenfolge der an eine höhere Position verschobenen Elemente nicht und das nach unten verschobene Element wird korrekt einsortiert. Nach letztem Schleifendurchlauf sind alle Elemente sortiert.
39 Insertionsort: Eigenschaften in place: zusätzlicher Speicherbedarf nicht abhängig von Eingabegrösse Zeitbedarf: adaptiv für teilsortierte Eingaben Bei bereits sortierter Eingabe bricht innere Schleife direkt ab. Bei umgekehrt sortierter Eingabe wird jedes Element schrittweise bis ganz vorne verschoben. genauere Analyse: nächste Woche stabil: Element wird nur so lange nach vorne verschoben, solange es mit echt grösserem Element getauscht wird. kann nicht Reihenfolge mit gleichem Element tauschen.
40 Zusammenfassung
41 Zusammenfassung Selectionsort und Insertionsort sind zwei einfache Sortierverfahren. Selectionsort baut die sortierte Sequenz von vorne auf, indem es sukkessive ein minimales Element aus dem noch unsortierten Bereich an das Ende des sortierten Bereichs tauscht. Insertionsort betrachtet die Elemente von vorne nach hinten und sortiert sie in den bereits sortierten Bereich am Sequenzanfang ein.
2.3.1 Einleitung Einfache Sortierverfahren Höhere Sortierverfahren Komplexität von Sortierverfahren Spezielle Sortierverfahren
2.3 Sortieren 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 Höhere Sortierverfahren 2.3.4 Komplexität von Sortierverfahren 2.3.5 Spezielle Sortierverfahren 1 Selection-Sort Idee: Suche kleinstes
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
Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen
1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
Einführung in die Informatik I Kapitel II.3: Sortieren
1 Einführung in die Informatik I Kapitel II.3: Sortieren Prof. Dr.-Ing. Marcin Grzegorzek Juniorprofessur für Mustererkennung im Institut für Bildinformatik Department Elektrotechnik und Informatik Fakultät
Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen
Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
Datenstrukturen und Algorithmen
Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/32 Datenstrukturen und Algorithmen Vorlesung 7: Sortieren (K2) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group
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
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
Programmieren I. Kapitel 7. Sortieren und Suchen
Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren
Algorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik [email protected] 4. Sortierverfahren Elementare Sortierverfahren - Sortieren durch
Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)
Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.rwth-aachen.de/i2/dsal0/ Algorithmus 8. Mai 200 Joost-Pieter
Grundlagen der Programmierung 2. Sortierverfahren
Grundlagen der Programmierung 2 Sortierverfahren Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 30. Mai 2006 Sortieren Ziel: Bringe Folge von Objekten in eine Reihenfolge
Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen
Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 1 für die Übung
Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:
Übungsblatt 1 Aufgabe 1.1 Beweisen oder widerlegen Sie, dass für die im Folgenden definierte Funktion f(n) die Beziehung f(n) = Θ(n 4 ) gilt. Beachten Sie, dass zu einem vollständigen Beweis gegebenenfalls
Sortierverfahren für Felder (Listen)
Sortierverfahren für Felder (Listen) Generell geht es um die Sortierung von Daten nach einem bestimmten Sortierschlüssel. Es ist auch möglich, daß verschiedene Daten denselben Sortierschlüssel haben. Es
Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block
Inhalt: InsertionSort BubbleSort QuickSort Block M.: "Java-Intensivkurs - In 14 Tagen lernen Projekte erfolgreich zu realisieren", Springer-Verlag 2007 InsertionSort I Das Problem unsortierte Daten in
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
Pro Informatik 2009: Objektorientierte Programmierung Tag 17. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik
Tag 17 Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik 08.09.2009 Agenda Tag 16 Datenstrukturen Abstrakte Datentypen, ADT Folge: Stack, Queue, Liste, ADT Menge: Bäume:
S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J
Greedy-Strategie Definition Paradigma Greedy Der Greedy-Ansatz verwendet die Strategie 1 Top-down Auswahl: Bestimme in jedem Schritt eine lokal optimale Lösung, so dass man eine global optimale Lösung
Grundlagen der Programmierung
Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind viele Teile direkt aus der Vorlesung
Ausgewählte Algorithmen: Sortieren von Listen
Kapitel 11: Ausgewählte Algorithmen: Sortieren von Listen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Analyse von Algorithmen: Zeitkomplexität Elementare Sortierverfahren
Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2
Jan Pöschko 18. Januar 2007 Inhaltsverzeichnis 1 Problemstellung 2 1.1 Definition................................... 2 1.2 Warum Sortieren?.............................. 2 2 Einfache Sortieralgorithmen
Suchen und Sortieren Sortieren. Heaps
Suchen und Heaps (Folie 245, Seite 63 im Skript) 3 7 21 10 17 31 49 28 14 35 24 42 38 Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die
1. Grundlagen... 2. 2. Sortieren... 6. 1.1. Vertauschen... 13. 1.2. Selektion... 16. 1.3. Einfügen... 19. 1.4. Quicksort... 22. 3. Suchen...
Suchen und Sortieren In diesem Kapitel behandeln wir Algorithmen zum Suchen und Sortieren Inhalt 1. Grundlagen... 2 2. Sortieren... 6 1.1. Vertauschen... 13 1.2. Selektion... 16 1.3. Einfügen... 19 1.4.
Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale
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
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
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
Vom Leichtesten zum Schwersten Sortieralgorithmen
Aktivität 7 Vom Leichtesten zum Schwersten Sortieralgorithmen Zusammenfassung Häufig verwendet man Computer dazu Listen von Elementen in eine bestimmte Ordnung zu bringen. So kann man beispielsweise Namen
Sortierverfahren. Sortierverfahren für eindimensionale Arrays
Sortierverfahren Sortierverfahren Sortieren durch Einfügen Sortieren durch Auswählen Sortieren durch Vertauschen (Bubblesort) Quicksort Sortierverfahren für eindimensionale Arrays 1 Gegeben ist eine beliebige
HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen
9.2.5 HUT 9.2.5 3 atenstrukturen im omputer atenstrukturen ie beiden fundamentalen atenstrukturen in der Praxis sind rray und Liste Rekursion Feedback valuation rray Zugriff: schnell Umordnung: langsam
Suchen und Sortieren (Die klassischen Algorithmen)
Suchen und Sortieren (Die klassischen Algorithmen) Lineare Suche und Binäre Suche (Vorbedingung und Komplexität) Sortieralgorithmen (allgemein) Direkte Sortierverfahren (einfach aber langsam) Schnelle
Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
Folge 13 - Quicksort
Für Abiturienten Folge 13 - Quicksort 13.1 Grundprinzip des Quicksort Schritt 1 Gegeben ist ein unsortierter Array von ganzen Zahlen. Ein Element des Arrays wird nun besonders behandelt, es wird nämlich
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Freitag, 05. Mai 2006: keine Vorlesung! aber Praktikum von 08.00 11.30 Uhr (Gruppen E, F, G, H; Vortestat für Prototyp)
Algorithmen und Datenstrukturen Sortieren
Algorithmen und Datenstrukturen Sortieren Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS Lernziele der Vorlesung Algorithmen Sortieren, Suchen, Optimieren
Theoretische Informatik SS 03 Übung 3
Theoretische Informatik SS 03 Übung 3 Aufgabe 1 a) Sind die folgenden Funktionen f : partiell oder total: f(x, y) = x + y f(x, y) = x y f(x, y) = x y f(x, y) = x DIV y? Hierbei ist x DIV y = x y der ganzzahlige
Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume
Effiziente Algorithmen und Datenstrukturen I Kapitel 9: Minimale Spannbäume Christian Scheideler WS 008 19.0.009 Kapitel 9 1 Minimaler Spannbaum Zentrale Frage: Welche Kanten muss ich nehmen, um mit minimalen
ADS: Algorithmen und Datenstrukturen 2
ADS: Algorithmen und Datenstrukturen 2 Teil 5 Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität
Laufzeit und Komplexität
Laufzeit und Komplexität Laufzeit eines Algorithmus Benchmarking versus Analyse Abstraktion Rechenzeit, Anzahl Schritte Bester, Mittlerer, Schlechtester Fall Beispiel: Lineare Suche Komplexitätsklassen
Grundlegende Sortieralgorithmen
Grundlegende Sortieralgorithmen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch Sortieren in Java Man kann Sortierverfahren in einem imperativem oder einem objektorientierten Stil programmieren.
Proseminar Online Algorithmen, Prof. Dr. Rolf Klein
Proseminar Online Algorithmen, Prof. Dr. Rolf Klein Vortrag von Michael Daumen am 13.12.2000 Thema : Minimum Spanning Tree und 2-Approximation der TSP-Tour Inhalt des Vortrags : 1. genaue Vorstellung des
Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen
Datenstrukturen und SS Robert Elsässer
Datenstrukturen und Algorithmen Robert Elsässer Organisatorisches Vorlesung: Mo 11:15-12:45 Audimax Fr 11:15-12:45 Raum G Zentralübung: Do 13:00 13:45 Raum G Beginn: nächste Woche Übungen: Beginn: nächste
Schulinternes Curriculum im Fach Informatik
Schulinternes Curriculum im Fach Informatik Unterricht in EF : 1. Geschichte der elektronischen Datenverarbeitung (3 Stunden) 2. Einführung in die Nutzung von Informatiksystemen und in grundlegende Begriffe
Universität des Saarlandes
Universität des Saarlandes FR 6.2 Informatik Prof. Dr. Kurt Mehlhorn WiSe 2015/2016 Übungen zu Ideen der Informatik http://www.mpi-inf.mpg.de/departments/algorithms-complexity/teaching/winter15/ideen/
Klausur Datenstrukturen und Algorithmen SoSe 2012
Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Jonathan Heinen, Thomas Ströder, Sabrina von Styp Klausur Datenstrukturen und Algorithmen SoSe 2012 Vorname: Nachname: Studiengang (bitte genau einen
Informatik II Musterlösung
Ludwig-Maximilians-Universität München SS 2006 Institut für Informatik Übungsblatt 4 Prof. Dr. M. Wirsing, M. Hammer, A. Rauschmayer Informatik II Musterlösung Zu jeder Aufgabe ist eine Datei abzugeben,
Algorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen 2 Sommersemester 2007 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik [email protected] Traversierung Durchlaufen eines Graphen, bei
Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou
Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou Suchen Welche Telefonnummer hat Kurt Mehlhorn? Wie schreibt man das Wort Equivalenz?
Wirtschaftsinformatik I
Wirtschaftsinformatik I - Tutorium 6/ 7 (April 2010) Zusatzinformationen - Lösungsvorschläge Wirtschaftsinformatik I Tutorium Jochen Daum (4.Semester BWL) Universität Mannheim Rechtshinweis: Diese Präsentation
MAXIMUM2.STR 02.10.2002. Struktogramme. Aufgabe: 3 Zahlen eingeben, größte Zahl ermitteln und ausgeben.
Struktogramme 02.10.2002 Aufgabe: 3 Zahlen eingeben, größte Zahl ermitteln und ausgeben. MAX_DOZ1 Integer a, b, c, max M AX IM U M 1.S T R Inte g er a, b, c Ausgabe "Zahlen eingeben" E ing abe a, b, c
Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?
Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum
Humboldt-Universität zu Berlin Institut Für Informatik. Suchen und Sortieren. Unterrichtsentwurf
Humboldt-Universität zu Berlin Institut Für Informatik Suchen und Sortieren Unterrichtsentwurf Inhalt 1 Einleitung...3 2 Sachanalyse...3 3 Stundenplanung 3.1 Ziele...5 3.2 Didaktische Analyse...5 3.3 Verlaufsplan...8
Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 2 Prof. Dr. Helmut Seidl, S. Pott,
Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte
Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Musterlösung 1. Aufgabe (5 Punkte) Im folgenden Programmcode sind einige Fehler enthalten. Finden und markieren Sie mindestens
27. August 2013 Einleitung. Algorithmen und Datenstrukturen
Algorithms and Data Structures Introduction Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 27. August 201 ODE/FHTBM Algorithms and Data Structures Introduction
Programmiertechnik II
2007 Martin v. Löwis Priority Queues and Heapsort 2007 Martin v. Löwis 2 Priority Queue Abstrakter Datentyp Inhalt: Elemente mit Priorität Operationen: Einfügen: Angabe des Elements und seiner Priorität
Graphen: Datenstrukturen und Algorithmen
Graphen: Datenstrukturen und Algorithmen Ein Graph G = (V, E) wird durch die Knotenmenge V und die Kantenmenge E repräsentiert. G ist ungerichtet, wenn wir keinen Start- und Zielpunkt der Kanten auszeichnen.
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren Teilnehmerkreis und Voraussetzungen Studiengänge
JAVA - Suchen - Sortieren
Übungen Informatik I JAVA - Suchen - Sortieren http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik
Einführung in die Informatik 2
Einführung in die Informatik 2 Sortieren Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 [email protected] Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v. Sommersemester
Minimal spannende Bäume
http://www.uni-magdeburg.de/harbich/ Minimal spannende Fakultät für Informatik Otto-von-Guericke-Universität 2 Inhalt Definition Wege Untergraphen Kantengewichtete Graphen Minimal spannende Algorithmen
Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen
Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter
EndTermTest PROGALGO WS1516 A
EndTermTest PROGALGO WS1516 A 14.1.2016 Name:................. UID:.................. PC-Nr:................ Beachten Sie: Lesen Sie erst die Angaben aufmerksam, genau und vollständig. Die Verwendung von
Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1
Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1 1. Das Objekt Bruch mit einem Standardkonstruktor (initialisieren mit 0), einem allgemeinen Konstruktor (Zähler und Nenner können beliebig vorgegeben
Algorithmen und Datenstrukturen Suchbaum
Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen
Asymptotische Laufzeitanalyse: Beispiel
Asyptotische Laufzeitanalyse: n = length( A ) A[j] = x GZ Algorithen u. Datenstrukturen 1 31.10.2013 Asyptotische Laufzeitanalyse: n = length( A ) A[j] = x GZ Algorithen u. Datenstrukturen 2 31.10.2013
Algorithmen. Suchalgorithmen
Algorithmen Suchalgorithmen Suchen in Tabellen Der Standardfall. Wie in der Einleitung beschrieben, handelt es sich bei den Datensätzen, die durchsucht werden sollen, um Zahlen. Ein Array könnte beispielsweise
Kapitel 3: Untere Schranken für algorithmische Probleme Gliederung
Gliederung 1. Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs 6. Ausgewählte
Erinnerung VL
Erinnerung VL 30.05.2016 Radix-Sort, Abschluss Sortieren Prioritätslisten: Warteschlange mit Prioritäten deletemin: kleinstes Element rausnehmen insert: Element einfügen Binäre Heaps als Implementierung
INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS
Julian Arz, Timo Bingmann, Sebastian Schlag INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Julian Universität Arz, des Timo LandesBingmann, Baden-Württemberg Sebastian und Schlag nationales
Sortieren Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 1
Sortieren 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 1 Sortiermethoden (Auswahl) Allgemeine Methoden: Sortieren in Arrays Spezielle Methoden: Sortieren von Dateien 2009 Jiri Spale, Algorithmen
Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n
Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: [email protected] Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim
Übersicht. Berechnung der Potenz für zwei ganze Zahlen Klausuraufgabe SS 2010! Berechnung der Cosinus-Funktion Klausuraufgabe WS 2010/2011!
Algorithmen und Datenstrukturen Wintersemester 2012/13 8. Vorlesung Algorithmen in Java Jan-Henrik Haunert Lehrstuhl für Informatik I Übersicht Berechnung der Potenz für zwei ganze Zahlen Klausuraufgabe
Informatik Vorkurs. Algorithmik
Informatik Vorkurs Algorithmik Was ist Informatik? Computer science is no more about computers than astronomy is about telescopes Edsgin Dijkstra (zugeschrieben) it's not about computers in the same sense
Algorithmen und Datenstrukturen Laufzeitabschätzung
Algorithmen und Datenstrukturen Laufzeitabschätzung Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Lernziele der Vorlesung Algorithmen Sortieren, Suchen,
Programmierkurs Python I
Programmierkurs Python I Michaela Regneri & Stefan Thater Universität des Saarlandes FR 4.7 Allgemeine Linguistik (Computerlinguistik) Winter 2010/11 Übersicht Kurze Wiederholung: while Sammeltypen (kurz
Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik
Grundlagen der Programmierung 1 Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2 Softwaretechnik Prof. Dr. O. Drobnik Professur Architektur und Betrieb verteilter Systeme Institut für
Algorithmen II Vorlesung am
Algorithmen II Vorlesung am 0..0 Minimale Schnitte in Graphen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales Forschungszentrum
Überblick. Lineares Suchen
Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Tanya Braun (Übungen) sowie viele Tutoren Teilnehmerkreis und Voraussetzungen Studiengänge Bachelor
14. Rot-Schwarz-Bäume
Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).
1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie
Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. äume / Graphen. Hashing 6. Algorithmische Geometrie 4/6, Folie 1 2014 Prof. Steffen Lange - HDa/FbI
Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm
Studienanforderungen Studiengang Maschinenbau Programmieren Begleitende Übungen zu Veranstaltungen Umsetzen des Algorithmus in ein lauffähiges Programm Studiengang Bauingenieurwesen Programmieren Begleitende
ADS: Algorithmen und Datenstrukturen 2
ADS: Algorithmen und Datenstrukturen Der Tragödie IV. Theyl Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University
Uebersicht. Webpage & Ilias. Administratives. Lehrbuch. Vorkenntnisse. Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Uebersicht Administratives Einleitung Ein einführendes Beispiel Matthias Zwicker Universität Bern Frühling 2010 2 Administratives Dozent Prof. Zwicker, [email protected]
4.Grundsätzliche Programmentwicklungsmethoden
4.Grundsätzliche Programmentwicklungsmethoden 1.1 Grundlage strukturierter und objektorientierter Programmierung Begriff Software Engineering - umfaßt den gezielten Einsatz von Beschreibungsmitteln, Methoden
Grundbegriffe der Informatik
Grundbegriffe der Informatik Übung Simon Wacker Karlsruher Institut für Technologie Wintersemester 2015/2016 GBI Grundbegriffe der Informatik Karlsruher Institut für Technologie 1 / 13 Programmiersprachen
Einführung in die Informatik I Kapitel II.1: Suchen
1 Einführung in die Informatik I Kapitel II.1: Suchen Prof. Dr.-Ing. Marcin Grzegorzek Juniorprofessur für Mustererkennung im Institut für Bildinformatik Department Elektrotechnik und Informatik Fakultät
4 Greedy-Algorithmen (gierige Algorithmen)
Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine
Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen
. Graphen viele praktische (Optimierungs-)Probleme sind als graphentheoretische Probleme formulierbar z.b. in Produktionsplanung, Personaleinsatzplanung,.... Grundlagen gerichteter, ungerichteter und gewichteter
