ACM ICPC Praktikum Kapitel 4: Sortieren.

Slides:



Advertisements
Ähnliche Präsentationen
Abschlussprüfung an Realschulen
Advertisements

Grundlagen des A*-Algorithmus und Anwendung in der Routenplanung
Sortieren I - Bubblesort -
Kapitel 6: Kombinatorik
ACM ICPC Praktikum Kapitel 8: Backtracking. Übersicht Backtracking Aufzählung aller Teilmengen Aufzählung aller Permutationen n-Königinnen-Problem.
WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Abschlussprüfung an Realschulen
Abschlussprüfung an Realschulen
Kapitel 6: Klassifizierung von Sortiertechniken
3. Kapitel: Komplexität und Komplexitätsklassen
Kapitel 7. Sortier-Algorithmen
5. Sortier-Algorithmen Vorbemerkungen:
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Das Maßproblem von Klee
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (11-1 –Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27-Selbstanordnende lineare Listen) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Geometrisches Divide and Conquer
Computerkurs: Quantitative Auswertung biochemischer Experimente Tag 8 Einführung in die numerische Integration Aufgabe 18: Simulation einer Assoziationskinetik.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 11 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Christian Schindelhauer
Vortrag: Ingo Gensch, Mathias Reich am:
Gaußscher Algorithmus
Prof. Dr. Christian Scheideler TU München
Kapitel 2: Datenstrukturen
Rechnen im Binärsystem
4 Sortierverfahren 4.1 Einführung 4.2 Naive Sortierverfahren
Algorithmen Gruppe 4.
Einführung in die Programmierung
Sortieren und Suchen IFB 2002 Daniel Jonietz.
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Institut für Theoretische Informatik
1 Nutzen Sie diese Powerpoint-Präsentation beim Selbstlernen oder in Veranstaltungen zur Einführung in das jeweilige Thema. Einführung Lernmodul Nutzungsbedingungen:
? Laufzeit Speicherbedarf Bubblesort Quicksort Selectionsort Radixsort
Mergesort.
Grundlegende Sortieralgorithmen
Kapitel 6: Suchbäume und weitere Sortierverfahren
Die Computertradition. Die ersten Anfänge von Informationsorganisation liegen bereits Jahrhunderte zurück: Philosophie: Übersicht über das Weltwissen.
Mechanik II Lösungen. 1.6 Aufgaben 3)Die Kugel eines Gewehrs soll im Lauf gleichmäßig beschleunigt werden.
Algorithmen für das Erfüllbarkeitsproblem SAT
Elektrizitätslehre Lösungen.
Mechanik II Lösungen.
Elektrizitätslehre Lösungen.
Im ersten Kapitel werden Ihnen als Einleitung gezeigt, welche Akteure im Prozess eingebunden sind.
Elektrizitätslehre Lösungen. 10 Aufgaben 3) An einem elektrischen Gerät steht angeschrieben: 250  ; 0,50 A. Darf es an 220 Volt angeschlossen werden?
M a r c – o l i v e r p a h l Informatik II – Kapitel 12 „Sortier-Algorithmen“ Zusammenfassung des Kapitel 12 Küchlin, Weber, Einführung in die Informatik,
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen
Mergesort.
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Tanya Braun (Übungen) sowie viele Tutoren.
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen
gesucht ist die Geradengleichung
Sortieren interaktiv.
Sortieren interaktiv.
Algorithmen und Datenstrukturen
Viele Menschen – viel Licht: Besiedlungsdichte
Wärmelehre Lösungen.
Algorithmen und Datenstrukturen
Elektrizitätslehre Lösungen.
Algorithmen und Datenstrukturen
Elektrizitätslehre Lösungen.
Herleitung der Formel zur Berechnung von Winkeln zwischen 2 Vektoren
 Präsentation transkript:

ACM ICPC Praktikum Kapitel 4: Sortieren

Übersicht Problem und Anwendungen Bubblesort Bucketsort Mergesort Topologisches Sortieren

Problem Sortierproblem: Gegeben: Folge x1,x2,…,xn Gesucht: Sortierung :{1,…,n} ! {1,…,n}, so dass x(1) <= x(2) <= … <= x(n) 2 5 1 7 8 4  1 2 4 5 7 8

Anwendungen Eindeutigkeitstest: Wie können wir testen, dass alle Werte in einer Folge verschieden sind? Duplikatentfernung: Wie können wir alle bis auf ein Duplikat für jedes Element entfernen? Scheduling: Eine optimale Regel zum Scheduling von uniformen Jobs mit Deadlines ist “Earliest Deadline First (EDF)”, was eine Sortierung benötigt. Median: Wir wollen das k-tgrößte Element einer Folge finden. Häufigkeitszählung: Was ist das am häufigsten vorkommende Element in einer Folge? Vereinigung oder Schnitt: Ist einfach, wenn die beiden Teilmengen in sortierte Folge gegeben sind. Gibt es x und y mit x+y=z? Sortiere die Folge S. Laufe mit i aufwärts beginnend mit 1 und mit j abwärts beginnend mit n. Prüfe, ob S[i]+S[j]=z. Falls <, dann erhöhe i, und sonst erniedrige j.

Bubblesort Idee: Vergleich benachbarter Einträge. bubblesort(int s[1..n], int n) { for i=1 to n-1 do { for j=1 to i do if (s[j+1]<s[j]) then swap(s[j],s[j+1]) } }

Bucketsort Idee: falls Werte in ganze Zahlen in [a,b], allokiere Array dafür bucketsort(int s[1..n], int n) { // allocate array num[a..b] for i=a to b do num[i]=0; for i=1 to n do num[s[i]]++; i=1; j=a; while i<=n do { while num[j]=0 do j=j+1; for k=0 to num[j]-1 do s[i+k]=j; i = i+num[j]; } }

Mergesort Idee: verschmelze Teillisten in größer werdende Listen mergesort(int s[1..n], int n) { // n: power of 2, otherwise filled with (MAXINT-1)’s for size=1 to n/2 do { a[size+1] = MAXINT; // a[1..size+1] for one list b[size+1] = MAXINT; // b[1..size+1] for other list for i=1 to n/(2*size) do { // prepare for merging for j=1 to size do a[j] = s[2*(i-1)*size+j]; for j=1 to size do b[j] = s[(2*i-1)*size+j]; k = 1; l=1; // merge for j=2*(i-1)*size+1 to 2*i*size do if a[k]<b[l] then { s[j]=a[k]; k=k+1; } else { s[j]=b[l]; l=l+1; } } } }

Suchen in sortierter Folge Binäre Suche O(log n) Zeit

Topologisches Sortieren Eingabe: azyklischer gerichteter Graph G=(V,E), V={1,…,n} Ausgabe: Ordnung :{1,…,n} ! {1,…,n} auf Knoten, so dass für alle Kanten (i,j) 2 E gilt (i)<(j). Algorithmus: Breitensuche, angefangen mit Knoten ohne eingehende Kante.

Topologisches Sortieren Datenstrukturen: class edge { node *dest; edge *next; }; class node { int indeg; // # incoming edges edge *out; // link to outg. edges }; toposort(node v[1..n], int s[1..n], int n) { i=1; for j=1 to n do if v[j].indeg=0 then { s[i]=j; i=i+1; } b=1; e=i; // begin and end in s[] while b<e do { for j=b to e-1 do { l = v[s[j]].out; while l<>NULL do { l->dest->indeg--; if l->dest->indeg=0 then { s[i]=l->dest; i=i+1; } l = l->next; } } b = e; e=i; } } }

2-dimensionales Sortieren Welche Struktur erlaubt schnelle Suche? Delaunay Triangulierung. Wird noch in Geometrie behandelt…

Problem I Vito’s Familie: Eingabe: ganze Zahlen s1,…,sr, 0<r<500, 0<si<30000 Ausgabe: Position p, die Summe der paarweisen Distanzen zu allen si minimiert.

Problem II Stacks of Pancakes: Eingabe: Mehrere Stapel von Pfannkuchen, jeder bestehend aus 1-30 Pfannkuchen. Jeder Pfannkuchen hat ganzzahligen Durchmesser zwischen 1 und 100. Ausgabe: Sortiere jeden Stapel durch Flip-Operationen, wobei Flip(i) alle Pfannkuchen von Position i aufwärts einmal umdreht.

Problem III Bridge: Eingabe: n Personen mit ganzahligen Geschwindigkeiten, um den Fluss zu überqueren. Ausgabe: Plan mit minimaler Zeit, um alle Personen über den Fluss zu bringen. Die Beschränkung ist, dass es nur ein Boot gibt und höchstens zwei darin sitzen können. Der langsamste bestimmt die Geschwindigkeit des Bootes.

Problem III Longest Nap: Eingabe: Ein Tag mit Terminen, gegeben durch „Zeit1 Zeit2 Termin“. Ausgabe: Finde längste Pause zwischen den Terminen.

Problem IV Shoemaker’s Problem: Eingabe: N Schuhaufträge, Schuhauftrag i benötigt Ti Tage und für jede Verzögerung um einen Tag muss eine Strafe von Si Cents bezahlt werden. Der Schuhmacher kann nur an einem Schuh pro Tag arbeiten. Ausgabe: Reihenfolge der Schuhaufträge, die die geringste Strafe verursacht.

Problem V CDVII: Eingabe: Gebührentabelle mit einem Eintrag pro Stunde des Tages und eine Reihe von Enter und Exit Ereignissen, bestehend aus „Nummernschild Monat:Tag:Stunde:Minute“ und der Entfernung zum Ende der Autobahn. Die Rechnung multipliziert die Gebühren mit den gefahrenen Kilometern, enthält einen Dollar pro Fahrt und zwei Dollar als Grundgebühr. Ausgabe: Gib die Rechungen für die Nummernschilder aus.