Suchen und Sortieren

Ähnliche Dokumente
Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou

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

Universität des Saarlandes

Vom Leichtesten zum Schwersten Sortieralgorithmen

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

Programmieren I. Kapitel 7. Sortieren und Suchen

Suchen und Sortieren

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Abschnitt: Algorithmendesign und Laufzeitanalyse

Vorkurs Informatik WiSe 15/16

Grundlagen der Programmierung

16. Algorithmus der Woche Multiplikation langer Zahlen... schneller als in der Schule

JAVA - Suchen - Sortieren

Übung: Algorithmen und Datenstrukturen SS 2007

Informatik II, SS 2014

4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java)

Teile und Herrsche Teil 2

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

16. All Pairs Shortest Path (ASPS)

Sortierverfahren. Sortierverfahren für eindimensionale Arrays

Algorithmen und Datenstrukturen 1

Kostenmaße. F3 03/04 p.188/395

Suchen. lineare Suche, binäre Suche, divide and conquer, rekursive und iterative Algorithmen, geordnete Daten, Comparable

Einführung in die Informatik I Kapitel II.3: Sortieren

Algorithmen und Datenstrukturen 1

Übung Datenstrukturen. Sortieren

Algorithmen und Datenstrukturen

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Datenstrukturen und Algorithmen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (25 Sortieren vorsortierter Daten)

Algorithmen & Komplexität

Algorithmen und Datenstrukturen

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?

Datenstrukturen und Algorithmen

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

ALP I. Funktionale Programmierung

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Grundlegende Sortieralgorithmen

Geometrische Algorithmen

Algorithmen und Datenstrukturen 1 VL Übungstest WS 2010/ November 2010

4 Algorithmen und Datenstrukturen

Suchen und Sortieren (Die klassischen Algorithmen)

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

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Sortierverfahren für Felder (Listen)

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.

7. Sortieren Lernziele. 7. Sortieren

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

1 topologisches Sortieren

Programmiertechnik II

Algorithmen in Zellularautomaten

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

Einstieg in die Informatik mit Java

Datenstrukturen & Algorithmen

Informatik I 4. Kapitel Suchen in sequentiellen Listen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 6 Elementare Sortieralgorithmen

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik

Übungsklausur Algorithmen I

Algorithmen und Datenstrukturen

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

(27 - Selbstanordnende lineare Listen)

Humboldt-Universität zu Berlin Institut Für Informatik. Suchen und Sortieren. Unterrichtsentwurf

Grundlagen der Programmierung 2. Sortierverfahren

Algorithmen und Datenstrukturen 1-1. Seminar -

Programmiertechnik II

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Geometrische Algorithmen

Algorithmen & Datenstrukturen 1. Klausur

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Inhalt. 3. Spezielle Algorithmen

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Uebersicht. Webpage & Ilias. Administratives. Lehrbuch. Vorkenntnisse. Datenstrukturen & Algorithmen

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm

Informatik ohne Rechner

Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass

Folge 13 - Quicksort

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

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

Vorlesung Datenstrukturen

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

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

4 Effizienz und Komplexität 3.1 1

Vorlesung Algorithmische Geometrie Konvexe Hülle im R 3

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1

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

Sortieren durch Mischen (Mergesort; John von Neumann 1945)

Gruppenunterricht zum Thema: Sortierverfahren. Berufsschule / Gymnasium

11. Rekursion, Komplexität von Algorithmen

Diskrete Strukturen Kapitel 1: Einleitung

Kap. 4.2: Binäre Suchbäume

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

Transkript:

Ideen und Konzepte der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn (viele Folien von Kostas Panagiotou)

Suchen Welche Telefonnummer hat Kurt Mehlhorn? Wie schreibt man das Wort Equivalenz? Welche Webseiten enthalten die Wörter Uni Saarland? Welche ist die wichtigste? Web hat mehrere Billionen Seiten. Suche nach der Nadel im Heuhaufen. 2

Bedeutung von Suchen Menschen verbringen viel Zeit mit Suchen und Ordnen (Sortieren), Computer auch Suchen und Sortieren sind Hauptanwendungen von Computern Es gibt hocheffiziente Suchverfahren: Suche im Web in weniger als 1 Sekunde Sortieren hilft beim Suchen: Ordnung ist das halbe Leben 3

Gibt es ein X in der Buchstabensuppe? 4

Aha! 5

Ein grünes Badetuch? 6

Aha! Bilder von Ursus Wehrli, 2011 7

Konzepte der heutigen Vorlesung Suchen = Information ablegen und verarbeiten, so dass man sie schnell wiederfindet (oder sagen kann, dass sie nicht vorhanden ist) Ordnung erleichtert das Suchen Sortieren = nach einem Kriterium ordnen Datenstrukturen = Suchen in Mengen, die sich zeitlich ändern Laufzeit (Komplexität) von Algorithmen 8

Wichtige Ordnungen Zahlen ordnet man der Größe nach, etwa 2 < 5 < 13 < 45 Worte ordnet man alphabetisch, etwa Kurt < Michael < Stefan < Stefanie 9

Suchen Daten können alles Mögliche sein: Zeichenketten, Zahlen, Bilder, Hier: (Name + Telefonnummer) Haben einen Karteikasten: auf jeder Karteikarte steht ein Name und eine Nummer Frage: Wie viele Zettel muss man anschauen, bis man die Nummer zu einem Namen hat? 11

Grundoperation Zwei Objekte a und b vergleichen Das Resultat ist a < b, a ist kleiner als b, a steht vor b a = b, a ist gleich b a > b, a ist größer als b, a steht nach b Wir messen Effizienz in Anzahl von Vergleichen Sagt auch tatsächliche Laufzeit gut vorher 12

Zettel sind ungeordnet Wir müssen alle Karten anschauen, um sicher zu sein, dass ein gesuchter Name nicht da ist. Falls ein Name da ist, im Mittel die Hälfte der Karten Anzahl der Vergleiche im schlechtesten Fall = Anzahl der Karten 13

Ein Beispiel Das Internet hat mehrere Billionen Webseiten 1 Billion = 1.000.000.000.000 Optimistisch: Pro Sekunde können wir 1.000.000.000 Seiten durchsuchen Dann brauchen wir 1.000 Sekunden! Aber Google ist viel schneller 14

Wie machen wir das besser? Wir sortieren unsere Karteikarten nach Name Also wie in einem Telefonbuch Wir suchen nach X Wir ziehen eine Karte, darauf steht Y X kommt vor / nach Y in der alphabetischen Ordnung der Namen oder X = Y Was wissen wir nun? Welche Karte nehmen wir für den ersten Vergleich? Wie geht es weiter? 15

Binärsuche Gegeben: Liste mit N Elementen Aufsteigend sortiert: Der Nachfolger ist größer als sein Vorgänger. Frage: Enthält die Liste ein Element x? Algorithmus: Konzept: Divide and Conquer 16

Der Algorithmus Binärsuche Karteikasten: L[1], L[2],, L[N] N Karten l 1; r N; Solange l r // falls x vorkommt, dann x in L[l],, L[r] Sei m der mittlere Index, also m = floor((l + r)/2) // es gilt l m r falls x = L[m] dann fertig, x ist gefunden falls x < L[m] dann r m 1; falls x > L[m] dann l m + 1; // x kommt nicht vor 17

Rekursive Version von Binärsuche Karteikasten: L[1], L[2],, L[N] N Karten Suche(L[l],, L[r], x) bestimmt ob x in L[l],, L[r] falls r < l dann fertig, x nicht vorhanden Sei m der mittlere Index, also m = (l + r)/2 falls x = L[m] dann fertig, x ist gefunden falls x < L[m] dann Suche(L[l],, L[m 1], x) falls x > L[m] dann Suche(L[m + 1],, L[r], x) 18

Komplexität (Anzahl der Vergleiche) N = 1: # Vergleiche = 1 N = 3: # Vergleiche = 2 2 40 = 1.099.511.627.776 N = 7: # Vergleiche = 3 N = 15: # Vergleiche = 4 N = 31: # Vergleiche = 5 N = 15 = 2 2 2 2 1 = 2 4 1 Vergleiche = 4 N = 31 = 2 2 2 2 2 1 = 2 5 1 Vergleiche = 5 N =. = 2 40 1 Vergleiche = 40 Anzahl Vergleiche = Zweierlogarithmus(N + 1) Das ist irre!!!!! 19

Lineare Suche vs. Binärsuche Binärsuche funktioniert, wenn man die gegebenen Daten ordnen kann: (Name, Telefonnummer) Webseiten? Lineare Suche: Aufwand = Anzahl der Elemente Binärsuche: Aufwand = Logarithmus der Anzahl der Elemente Binärsuche ist rasend schnell 20

Wie sortiert man? 22

Mischen zweier sortierter Folgen Zwei aufsteigend sortierte Folgen von je n Elementen kann man mit höchstens 2n 1 Vergleichen zu einer sortierten Folge mischen Strategie: Vergleiche die beiden ersten Elemente und bewege das kleinere zur Resultatfolge. Wenn eine Folge erschöpft ist, bewege alle Elemente der anderen. 23

Mischen Pseudocode Seien A[0] bis A[n 1] und B[0] bis B[n 1] sortierte Folgen. Stelle C[0] bis C[2 n 1] für das Ergebnis bereit Setze i und j auf Null Solange (i < n oder j < n) Falls ( i < n und j < n und A[i] < B[j]) oder j = n dann bewege A[i] nach C[i + j] und erhöhe i sonst bewege B[j] nach C[i + j] und erhöhe j 24

Sortieren durch Mischen Wir haben n = 2 k Elemente und damit n sortierte Folgen der Länge 1 Paare die sortierten Folgen und mische je zwei zu einer Folge der doppelten Länge Solange noch mehr als eine Folge, wiederhole 25

Sortieren durch Mischen, Analyse 1) Wir haben n = 2 k Elemente und damit n sortierte Folgen der Länge 1. 2) Paare die sortierten Folgen und mische je zwei zu einer Folge der doppelten Länge. 3) Solange noch mehr als eine Folge, wiederhole. Jede Ausführung von 2) kostet nicht mehr als n Vergleiche. Wir wiederholen 2) k-mal. Also nicht mehr als n k = n log n Vergleiche. 27

Sortieren durch Mischen Sortieren durch Mischen sortiert n Elemente mit nicht mehr als n log n Vergleichen Was bedeutet das praktisch? 28

Tatsächliche Laufzeit auf KMs Rechner n = 2 22 1.09 Sekunden n = 2 25 9.94 Sekunden n = 2 29 183 Sekunden n = 2 30 1240 Sekunden Beachte 183 9.94 = 18.41 2 29 log 2 29 2 25 log 2 25 = 16 29 25 = 18.56 Analyse sagt Laufzeitwachstum gut vorher Aber letzte Zeile: Rechner ist in anderem Regime, benutzt Platte 29

Quicksort S = Menge, die zu sortieren ist Wähle ein Element s in S Teile S in S < = Elemente kleiner s S > = Elemente größer s Tony Hoare Turing Award 1980 Gib aus Sort(S < ) s Sort(S > ) Rekursion endet, wenn S < und S > leer sind 30

Quicksort, Beispielausführung 31

Beim Teilen kann man Glück oder Pech haben Laufzeit wie n log n n 2 n = 10 6 0.1 sec 500 sec 32

Kann man das Glück erzwingen? Bis 1980: immer raffiniertere deterministische Strategien Seit 1980: wähle das Teilungselement zufällig Randomisierter Algorithmus Urne mit n roten und n schwarzen Kugeln. Wie findet man 2 2 eine rote Kugel ohne hinsehen? 33

Zusammenfassung Sortieren Sortieren geht recht schnell, eine Million Elemente in 0.1 Sekunden auf Notebook Weltrekord Eine Billion Zahlen in drei Stunden 34

Tony Hoare (1934 Ich stelle fest, dass es zwei Wege gibt, ein Software- Design zu erstellen, entweder so einfach, dass es offensichtlich keine Schwächen hat, oder so kompliziert, dass es keine offensichtlichen Schwächen hat. Die erste Methode ist weitaus schwieriger. Tony Hoare, Dankesrede für den Turingpreis 1980 35

Zusammenfassung Binärsuche ist rasend schnell: 40 Vergleiche für Suche in einer Billion Elemente Sortieren ist billig: eine Million Elemente in 0.1 sec auf diesem Notebook 37