Computational Thinking Suchen und Sortieren [Ordnung muss sein…]

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

8. Termin Teil B: Wiederholung Begriffe Baum
(bitones Sortieren, Hyperquicksort, Regular Sampling)
Kap. 7 Sortierverfahren Kap. 7.0 Darstellung, Vorüberlegungen
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Vom graphischen Differenzieren
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Claudio Moraga; Gisbert Dittrich
Das LCA – Problem in Suffixbäumen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – B-Bäume)
Lineare Suche Divide-and-Conquer-Suche Kombinationssuche
Kapitel 6: Klassifizierung von Sortiertechniken
3. Kapitel: Komplexität und Komplexitätsklassen
Kapitel 6. Suchverfahren
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
5. Sortier-Algorithmen Vorbemerkungen:
Übung 6.6Schranken 1.Angenommen, Ihr Algorithmus habe einen Aufwand von g(n) = 5n 3 + n für alle n a)Geben sie eine obere Schranke O(g(n)) an. b)Beweisen.
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Das Halteproblem. Gibt es einen Algorithmus, mit dem man für jedes beliebig vorgegebene Programm R und für jede beliebig vorgegebene Eingabe E entscheiden.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Sortieren vorsortierter Daten
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Algorithmentheorie 03 – Randomisierung (Closest Pair)
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Geometrisches Divide and Conquer
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Diskrete Mathematik I Vorlesung 9b AVL-Baum, Algorithmen.
Minimum Spanning Tree: MST
Vortrag: Ingo Gensch, Mathias Reich am:
Mergesort Divide and Conquer
Maschinelles Lernen und automatische Textklassifikation
Ideen der Informatik Suchen und Sortieren [Ordnung muss sein…]
4 Sortierverfahren 4.1 Einführung 4.2 Naive Sortierverfahren
Merge-Sort und Binäres Suchen /10D. Haehn Populäres algorithmisches Lösungsverfahren Populäres algorithmisches Lösungsverfahren Divide: Problem.
Algorithmen Gruppe 4.
Sortieralgorithmen Sortieren von Arrays.
Einführung in die Programmierung
Effiziente Algorithmen
Jeoparty UnterrichtGefühleZahlenUhrzeit ???
Computational Thinking Online Algorithmen [Was ist es wert, die Zukunft zu kennen?] Kurt Mehlhorn Konstantinos Panagiotou.
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Polynome und schnelle Fourier-Transformation
Mehrkriterielle Optimierung mit Metaheuristiken
Komplexität von Algorithmen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation III Vorlesung 1 WS 2001/02 Punkt-in-Landkarte I (Streifenkarte)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
Vom graphischen Differenzieren
Konvexe Hüllen (Convex Hulls)
Binärbäume.
Suchen und Sortieren.
Vorlesung AVL-Bäume/Algorithmen-
Vorlesung AVL-Bäume/Algorithmen-
Laufzeitverhalten beim Sortieren
TexPoint fonts used in EMF.
 Präsentation transkript:

Computational Thinking Suchen und Sortieren [Ordnung muss sein…] Kurt Mehlhorn Konstantinos Panagiotou

Suchen Welche Telefonnummer hat Kurt Mehlhorn? Wie schreibt man das Wort “Equivalenz”? Welche Webseiten enthalten die Woerter “Uni Saarland”? Welche ist die “wichtigste”?

Beispiele

Aha!

Noch eins

Aha! „Freibad heißt ja nicht, dass es jedem freisteht, einfach irgendwo rumzuliegen“ Ursus Wehrli, 2011

Konzepte Informatik = “Informationsverarbeitungstechnik” Ziel: Information ablegen und verarbeiten, hier: moeglichst schnell wiederfinden Was lernen wir aus den Beispielen?

Erste Überlegungen Daten können alles Mögliche sein: Zeichenketten, Zahlen, Bilder, … Hier: (Name + Telefonnummer) Annahme: Daten liegen ungeordnet vor

Problemgrösse und Aufwand Wir müssen schlimmstenfalls alle Elemente durchsuchen um sicher zu sein dass das gewünschte Element nicht da ist: Sei N die Anzahl Elemente Dann beträgt der Gesamtaufwand (schlimmstenfalls) N Vergleiche.

Ich finde Kurt’s Nummer nicht! Ein Beispiel Das Internet hat mehrere Billionen Webseiten 1 Billion = 1.000.000.000.000 Optimistisch: Pro Sekunde koennen wir 1.000.000.000 Seiten durchsuchen Dann brauchen wir 1.000 Sekunden! Ich finde Kurt’s Nummer nicht!

Wie machen wir das besser? Angenommen unsere Daten sind sortiert. Hier: (Name + Nummer), nach Name Abstrakt:

Konzept: Divide and Conquer Binärsuche Gegeben: Liste mit N Elementen Sortiert: der Nachfolger ist groesser als sein Vorgaenger. Frage: enthält die Liste ein Element x? Algorithmus: Konzept: Divide and Conquer

Der Algorithmus Sei L[i] das i-te Element der Liste L Suche(L[1], …, L[N], x) falls N = 0 dann fertig Sei m das mittlere Element in L, also m = L[N/2] falls x = m dann fertig falls x < m dann Suche(L[1], …, L[N/2-1], x) falls x > m dann Suche(L[N/2+1], …, L[N], x)

Komplexität n = 1: Kosten = 1 n = 2: Kosten = 2 n = 3: Kosten = 2

Komplexitaet Anzahl Vergleiche schlimmstenfalls N 1 2 3 4 5 6 7 8 9

Der Logarithmus Verbleibende Elemente im Allgemeinen: Komplexität: N -> N /2 -> N /(2 * 2) etc Komplexität: Die kleinste Zahl i so dass N / (2 * 2 * … * 2) < 1 (i mal) Diese Funktion heisst diskreter binärer Logarithmus N = 1000: Log(N) = 10 N = 1.000.000: Log(N) = 20 N = 1.000.000.000.000: Log(N) = 40 N = Atome im Universum: Log(N) = 240

Zusammenfassung Lineare Suche vs. Binärsuche Funktioniert wenn man die gegebenen Daten ordnen kann: (Name, Telefonnummer) Webseiten? N vs. Log(N)

Algorithmus ist nicht gleich Logarithmus

Wie sortiert man?

Erste Überlegungen In der sortierten Reihenfolge befindet sich das kleinste Element zuerst. Algorithmus: Bestimme das kleinste Element unter den verbleibenden Elementen Füge es an das Ende der bisher sortieren Elemente hinzu.

Beispiel

Ein Detail Wie bestimmt man das kleinste Element in einer Liste? Algorithmus: Gehe die Liste Element für Element durch Merke das bisher kleinste gesehene Element L[i]: das Element der Liste an i-ter Stelle N: die Länge der Liste Finde_min(L) Min = L[1] Für alle i zwischen 2 und N Min = das kleinere aus L[i] und Min

Komplexität der Sortieralgorithmus? Angenommen wir haben N Elemente Im ersten Durchlauf: N-1 Vergleiche um das kleinste zu bestimmen Im zweiten Durchlauf: N-2 Vergleiche …. Im i-ten Durchlauf: N-i Vergleiche Total:

Was heisst das? N N(N-1)/2 Laufzeit in sec 45 100 4950 1.000 499.500 100 4950 1.000 499.500 1.000.000

Mischen Einfacheres Problem: Gegeben zwei Listen A und B mit jeweils N Elementen. A und B sind bereits sortiert. Wie erzeugt man eine neue Liste, die sortiert ist, und alle Elemente aus A und B enthält?

Beispiel 1 4 5 9 10 2 3 6 12 15

Merge Sei A[i] das i-te Element von A, B[i] analog Merge(A,B) a = 1, b = 1, c = 1 solange a <= N und b <= M falls A[a] < B[b] dann C[c] = A[a], a = a+1, c=c+1 sonst C[c] = B[b], b = b+1, c=c+1 Komplexität?

Ein Beispiel 7 3 2 8 9 1 4 6 N = 8 7 3 2 8 9 1 4 6 7 3 2 8 9 1 4 6 7 3 2 8 9 1 4 6 3 7 2 8 1 9 4 6 2 3 7 8 1 4 6 9 1 2 3 4 6 7 8 9

Sortieren durch Mischen Falls die Liste nur ein Element hat, tue nichts. Ansonsten: Unsortierte Liste Teil 1 Teil 2 Teil 1, sortiert Teil 2, sortiert Sortierte Liste merge sortiere sortiere Konzept: Divide and Conquer

Warum so kompliziert? Weil es extrem schnell ist! Komplexität: wie viele Vergleiche sind notwendig?

Alle Kosten…

Was heisst das? N N(N-1)/2 N Log(N) Sekunden 45 33 100 4950 664 45 33 100 4950 664 1.000 499.500 9965 1.000.000 19.931.568 < 1

Aber… Manchmal sind Vergleiche sehr teuer Spezielle Sortierverfahren: DNA Sequenzen mit mehreren Tausend Einträgen Spezielle Sortierverfahren: Bucketsort Eingabe: Zeichenketten Idee: Telefonbuch

Laut vornamen.de: die beliebtesten Mädchennamen Eimer Amélie – Julia – Lena – Laura – Anna – Lea – Lina – Sarah – Elena – Nina – Selina – Vanessa – Alina – Jana –Emma – Hannah – Lisa – Sophie – Sandra – Leonie – Luisa – Nele – Franziska – Samira Idee: 26 Eimer, einen für jeden Buchstaben im Alphabet

Der L-Eimer Lena Laura Lina Lisa Leonie Luisa

Komplexität Jedes Zeichen wird genau einmal betrachtet. Falls die Eingabe insgesamt N Zeichen hat, so werden N Entscheidungen insgesamt getroffen. Der Algorithmus ist also linear.

Zusammenfassung Suchen: Sortieren: Binärsuche vs. Lineare Suche N^2 vs. N Log(N) Algorithmen Lineare Algorithmen für spezielle Fälle

Orga Übungen am Dienstag, 16-18 Uhr bei Cosmina fallen ab sofort aus! Bitte an alle Teilnehmer: weichen Sie auf andere Gruppen aus.