Datenstrukturen und Algorithmen SS07



Ähnliche Dokumente
Datenstrukturen und Algorithmen SS07

G. Zachmann Clausthal University, Germany Die wichtigsten Entwurfsverfahren für Algorithmen:

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Übungen zu Algorithmentechnik WS 09/10

Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen

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

Auswählen nach Rang (Selektion)

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

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

4 Effizienz und Komplexität 3.1 1

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Lineare Gleichungen mit 2 Variablen

5. Bäume und Minimalgerüste

Algorithmen und Datenstrukturen

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

Übung Algorithmen und Datenstrukturen

Sortierverfahren. Lernziele

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

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

Informatik I 4. Kapitel Suchen in sequentiellen Listen

Ein sortiertes Feld kann in O(log n) durchsucht werden, z.b. mit Binärsuche. Der Algorithmus 1 gibt den Pseudocode der binären Suche an.

Effizienz von Algorithmen

Übung Algorithmen und Datenstrukturen

Effiziente Algorithmen

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

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

Minimalpolynome und Implikanten

Sicherer MAC für Nachrichten beliebiger Länge

Algorithmen und Datenstrukturen

3.2. Divide-and-Conquer-Methoden

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Grundlagen: Algorithmen und Datenstrukturen

Wann sind Codes eindeutig entschlüsselbar?

Komplexität von Algorithmen:

Effiziente Algorithmen (SS2015)

Seminar. Algorithmische Geometrie

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen SS07

Wir wollen nun die Behauptung beweisen, dass die Laufzeit von SELECT linear ist, also dass T (n) = O(n) gilt.

4. Sortieren 4.1 Vorbemerkungen

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Übung Algorithmen und Datenstrukturen

(27 - Selbstanordnende lineare Listen)

Abschnitt 19: Sortierverfahren

Geradenarrangements und Dualität von Punkten und Geraden

Geradenarrangements und Dualität von Punkten und Geraden

Algorithmen und Datenstrukturen

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

Algorithmen & Komplexität

Suchen und Sortieren

Zentrale Aufnahmeprüfung 2015 für die Kurzgymnasien des Kantons Zürich

Einführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst.

Vorlesung Datenstrukturen

2.7 Der Shannon-Fano-Elias Code

Übung Algorithmen und Datenstrukturen

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Algorithmen & Datenstrukturen Blatt 4

Füllen von Primitiven

Die Lineare Algebra-Methode. Mahir Kilic

Amortisierte Analyse. C. Komusiewicz 6.1 Amortisierte Analyse: Motivation 105

Datenstrukturen und Algorithmen D-INFK

Vorlesung Diskrete Strukturen Die natürlichen Zahlen

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Prüfung Algorithmen und Datenstrukturen I

Datenstrukturen & Algorithmen

Lösungen zum Aufgabenblatt Nr. 1: Konstruktion der reellen Zahlen

Lineare Algebra II 5. Übungsblatt

2 Rationale und reelle Zahlen

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

Kürzeste-Wege-Algorithmen und Datenstrukturen

Übungsaufgaben zur Linearen Funktion

Vorlesung Datenstrukturen

Amortisierte Analysen

Transkript:

Datenstrukturen und Algorithmen SS07 Datum: 23.5.2007 Michael Belfrage mbe@student.ethz.ch belfrage.net/eth

Programm von Heute Nachbesprechung Serie 7 Aufgabe 2 (Triangulierung) Scanline Prinzip (revisited) Amortisierte Analyse Median bestimmen in O(n) Alte/Neue Challenge der Woche

Aufgabe 2 (Triangulierung) Gegeben: Menge von n Punkten Zu zeigen: Die Berechnung deren Triangulierung hat mind. Laufzeit von Θ(n log n) (im Einheitskostenmodell)

Aufgabe 2 (Triangulierung) Lösungsansatz: Reduzierung auf ein anderes Problem, dessen mind. Komplexität wir schon kennen In unserem Fall: das Sortieren (vergleichsbasiert) Es gibt nur eine mögliche Triangulierung in der oben dargestellten Situation. Somit haben wir ein Verfahren um eine Liste S={s 1,...,s n } zu sortieren: Ordne die s i zu (x i,y i ) := (s i,0), setze noch einen weiteren Punkt oberhalb z.b. (s 1,1) und mache die Triangulierung. Nun suchen wir die kleinste Koordinate, und können danach alle s i nacheinander durchgehen.

Scanline Prinzip Algorithmus: Q:= Haltepunkte; -- Meist nach x-koord. sortiert (Min-/Maxheap) L:= Void; -- Menge der aktiven Objekte -- Meist nach y-koord. sortiert (AVL-Baum) while Q /= {} do begin Gehe zum nächsten Haltepunkt in Q; aktualisiere(l); Gebe Teillösungen aus; --falls vorhanden end

Scanline Prinzip Wasser-Installation (Aufgabe 8.3)

Scanline Prinzip Flächenberechnung (Aufgabe 8.4)

Amortisierte Analyse Was ist Amortisierte Analyse? Wieso A.A.? Wann A.A.? Let s start with an example...

Amortisierte Analyse Es hat einen Drucker, welcher genug Toner hat für 1 000 Druckaufträge. Kosten für einen Ausdruck: 0.10 Fr. falls es noch genug Toner hat 0.10 Fr. + 100Fr. falls es keinen Toner mehr hat. (da man eine neue Tonerkartusche kaufen muss)

Amortisierte Analyse Was sind nun die Kosten im Worst-Case? Antwort: 100.10 Fr. Da diese Abschätzung sehr pessimistisch ist obwohl korrekt braucht man ein neues Mass: Amortisierten Kosten Von franz. amortir, tilgen Idee: Lasse die billigeren Operationen für die teure(n) bezahlen

Amortisierte Analyse Konkret im Beispiel: Neue amortisierten Kosten für einen Ausdruck: 0.10 Fr. + 0.10 Fr. = 0.20 Fr. falls es noch genug Toner hat Spendenbox Die zusätzlichen 10 Rappen, werden zu Spendezwecken aufbewahrt

Amortisierte Analyse Nachdem nun 1 000 Personen gedruckt haben, wird der Toner leer sein, jedoch wird auch 1 000. 0.10Fr. = 100Fr. in der Spendenbox liegen. Somit kann die 1 001-te Person einen neue Tonerkartusche aus dem Spendengeld kaufen und kann für 0.10Fr. drucken (+ wiederum 0.10Fr. in die nun leere Spendenbox hineintun)

Amortisierte Analyse Fazit: Amort. Kosten für einen Ausdruck: 0.20 Fr. falls es noch genug Toner hat 0.20 Fr. falls es keinen Toner mehr hat. Somit in allen Fällen 0.20Fr. bzw. amortisierte Kosten von 0.20Fr.

Amortisierte Analyse Verallgemeinert: Es hat einen Drucker, welcher genug Toner hat für n Druckaufträge. Eine neue Tonerkartusche kostet n 0.10Fr. Kosten für einen Ausdruck: 0.10 Fr. falls es noch genug Toner hat 0.10 Fr. + n 0.10Fr. falls es keinen Toner mehr hat. Somit amortisierte Kosten von: 0.10Fr. + 0.10Fr. = O(1) (Da unabhängig von n)

Amortisierte Analyse Amortisierte Kosten heisst also: Die Kosten die entstehen, wenn die billigeren Operationen für die teureren bezahlen, sodass die Kosten sich ausgleichen Oft ist dieses Geld hinterlegen von vorher nicht so einfach, denn es hat vielleicht mehrere Spezialfälle, und es ist nicht sofort ersichtlich wieviel Geld man nun hinterlegen soll, je nach Operation.

Amortisierte Analyse Deshalb wird zur Verallgemeinerung eine Balancefunktion Bal l benutzt (auch Potenzialfunktion genannt), um die amort. Kosten zu berechnen Betrachten wir nun alle Operationen zeitlich nacheinander: t l, seien jeweils die tatsächlichen Kosten der l-ten Operation a l, seien die amortisierten Kosten der l-ten Operation

Amortisierte Analyse Die Idee ist schlussendlich dass: tl a l In Worten: Die Summe der tatsächlichen Kosten nach allen Operationen soll nicht grösser sein als die der amortisierten. (Sonst wäre unserer Beweis sinnlos)

Amortisierte Analyse Wir definieren die amortisierten Kosten im l-ten Schritt nun folgendermassen: a l =t l +Bal l Bal l 1 Erklärung: Wir führen die (schon erwähnte) Balance-Funktion ein, welche zusehen soll, dass die Kosten in jedem Schritt amortisiert etwa gleich bleiben soll. (Balance-Funktion ist also sowas wie Geld-Hinterlegen ). Die amortisierten Kosten sind somit jeweils die tatsächlichen Kosten + die Differenz von nacheinanderfolgenden Balance-Funktionen.

Amortisierte Analyse Die Balance-Funktion kann man nun beliebig nach Lust und Laune definieren, mit irgendeiner Eigenschaft vom Problem, welche sich mit der Zeit verändert. Das ist die Stärke der Balance-Funktion, dass sie völlig unabhängig sein kann, da folgendes gilt: al = (t l +Bal l Bal l 1 )=( t l )+Bal n Bal 0 Wir müssen also nur sicherstellen, dass der Wert der Balance-Funktion am Ende minus dem Wert am Anfang nicht negativ ist, dann haben wir schon alles gezeigt.

Amortisierte Analyse Nun ein Beispiel um das ganze zu Illustrieren: Nehmen wir einfachheitshalber wieder das Druckerproblem.

Amortisierte Analyse Es hat einen Drucker, welcher genug Toner hat für n Druckaufträge. t l Tatsächliche Kosten für einen Ausdruck bei der l-ten Operation (bzw. Person): 0.10 Fr. falls es noch genug Toner hat 0.10 Fr. + n 0.10Fr. O(1) O(n) falls es keinen Toner mehr hat. (da man einen neue Tonerkartusche kaufen muss)

Amortisierte Analyse Wir definieren die amortisierten Kosten im l-ten Schritt nun wie erwähnt: a l =t l +Bal l Bal l 1 Als Balance-Funktion wählen wir was kreatives, vielleicht z.b. den Tonerstand in [ml]

Amortisierte Analyse l Bal l Bal l Bal l 1 0 n - 1 n 1-1 2 n 2-1 3 n 3-1......... n 1 1-1 n 0-1 n + 1 n + n n + 2 n 1-1 n + 3 n 2-1.........

Amortisierte Analyse al = (t l +Bal l Bal l 1 )=( t l )+Bal n+1 Bal 0 = 0 =n 0.10Fr.+n 0.10Fr.+0=2n 0.10Fr. (t 0 +...+t n ) t n+1 tl a l = al n+1 2 0.10Fr.=0.20Fr. O(1)

Median in O(n) Der Algorithmus heisst Korrekterweise: Blum-Floyd-Pratt-Rivest-Tarjan (BFPRT) Selektionsalgorithmus [1973]

BFPRT Algorithmus Gegeben: Menge S mit n Elementen Gesucht: Der Median von S, d.h. das (n/2) kleinste Element (abgerundet) Gezeigt wird: (Verallgemeinerung) Das i-kleinste Element von S bestimmen n/2 ist ein Spezialfall davon

BFPRT Algorithmus Vorgehen: Wähleeinkleinesungeradesk 5 Algorithmus: (1) S:={a 1,a 2,a 3,...,a n } z.b. k=5 TeiledasS instückedergrössek, bis auf eines, welches kleiner sein kann. Wirhabentotalalso n k solchegruppen.

BFPRT Algorithmus Algorithmus:... (2) Sortiere jedes der Blöcke (der Grösse k) (3) Bestimme den Median von jedem Block (4) Bestimme den Median dieser Mediane (rekursiv) S:={a 1,a 2,a 3,...,a n }

BFPRT Algorithmus Algorithmus:... (5) Teile das S auf in: S l :={x S:x<s}undS r :={x S:x>s} (6.1) Falls S l i, bestimme das i-kleinste Element von S l rekursiv (6.2) Falls S l =i 1, ist s die Lösung (6.3) Sonst ist S l <i 1, bestimme das (i S l 1) -kleinste Element von S r

BFPRT Algorithmus Berechnung der Laufzeit: Wir bestimmen nun das T(n), die Anzahl der Vergleiche im worst-case. n sind die Anzahl Elemente von S Sehen wir uns die Schritte also nochmals an... Beweis weicht leicht vom Buch/ML ab Ich finde es so einfacher/klarer...

BFPRT Algorithmus Vorgehen: Wähleeinkleinesungeradesk 5 Algorithmus: (1) S:={a 1,a 2,a 3,...,a n } z.b. k=5 TeiledasS instückedergrössek, bis auf eines, welches kleiner sein kann. Wirhabentotalalso n k solchegruppen. in grün jeweils Anzahl Vergleiche (1): gratis

BFPRT Algorithmus Algorithmus:... (2) Sortiere jedes der Blöcke (der Grösse k) (3) Bestimme den Median von jedem Block (4) Bestimme den Median dieser Mediane (rekursiv) S:={a 1,a 2,a 3,...,a n } Anzahl Vergleiche um k Elemente zu sortieren (2): C k. n k (3): gratis n k (4): T( )

BFPRT Algorithmus Algorithmus:... (5) Teile das S auf in: (5): (6): T( n ) S l :={x S:x<s}undS r :={x S:x>s} (6.1) Falls S l i, bestimme das i-kleinste Element von S l rekursiv (6.2) Falls S l =i 1, ist s die Lösung (6.3) Sonst ist S l <i 1, bestimme das (i S l 1) -kleinste Element von n 2 3 4 S r

BFPRT Algorithmus 3 4 Wieso T( n ) bei (6)? Man kann jeweils immer mind. 1/4 ausschliessen, siehe Skizze (das ist auch der eigentliche Clou vom ganzen Algo) S:={a 1,a 2,a 3,...,a n } S r ={x S:x>s} S l ={x S:x<s} s

BFPRT Algorithmus Zusammenfassend haben wir also: (4) (6) (2) (5) T(n) T( n k )+T( 3 4 n )+ n C k k+ n 2 Und wir wollen zeigen, dass: T(n) c n,(c=konst.)

BFPRT Algorithmus Induktionsbeweis: Verankerung: wähle ein genug grosses n 0, s.d. Ind.Schritt: T(n) T( n k )+T( 3 4 n )+ n C k k+ n 2 c ( n k )+c ( 3 4 n )+ n C k k+ n 2 c ( n k )+c (3n)+ nc 4 k k+ n 2 =( c+c 3+ 1C k 4 k k+ 1) n 2! c n - Eine notwendige Bedingung an das c ist somit: T(n 0 ) c n 0 c 1 k C k+ 1 2 1 1 k 3 4 - Für k=5,7,9,... findet man entsprechende c (ausser für k=3)

Andere Selektionsalgorithmen Es gibt eine Reihe weiterer Algos: Bester (im Moment): (2+ε) n+o(n) [Dor/Zwick 2001] Beste bekannte untere Schranke: 2 n o(n) [Bent/John 1985] f(x) f o(g)heisstlim x g(x) =0

Alte Challenge der Woche Gegeben: Eine Menge S bestehend aus n Tupel der Form (x 1,x 2,...,x d ), wobei x i R (d steht also für die Dimension der Tupel) Gesucht: Algorithmus/Datenstruktur welche möglichst Effizient bestimmt ob ein beliebiges Tupel t S ist. Geforderte Laufzeit: O(d + log(n)) (d.h. die Laufzeit für das suchen nach irgendeinem Element, nachdem eine Datenstruktur aufgebaut ist.)

Museumsproblem [Klee 1973]

The Challenge

The Challenge

The Challenge 1 2 3 n

The Challenge Zu zeigen: Wenn n die Anzahl Wände sind im Museum, dann braucht es höchstens n/3 [abgerundet] Wachen.

Ende der Stunde. Questions?