4 Greedy-Algorithmen (gierige Algorithmen)



Ähnliche Dokumente
3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

Algorithmen II Vorlesung am

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Graphen: Datenstrukturen und Algorithmen

1 topologisches Sortieren

Kapiteltests zum Leitprogramm Binäre Suchbäume

WS 2009/10. Diskrete Strukturen

15 Optimales Kodieren

WS 2013/14. Diskrete Strukturen

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Das Briefträgerproblem

Anmerkungen zur Übergangsprüfung

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Konzepte der Informatik

8 Diskrete Optimierung

Seminarvortag zum Thema Virtual Private Network Design im Rahmen des Seminars Network Design an der Universität Paderborn

Algorithmentheorie Maximale Flüsse

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

2.11 Kontextfreie Grammatiken und Parsebäume

Datenstrukturen & Algorithmen

Professionelle Seminare im Bereich MS-Office

Lenstras Algorithmus für Faktorisierung

a n auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:

13. Binäre Suchbäume

Codierung, Codes (variabler Länge)

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Zeichen bei Zahlen entschlüsseln

Informationsblatt Induktionsbeweis

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Algorithmische Mathematik

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren.

Guten Morgen und Willkommen zur Saalübung!

7 Rechnen mit Polynomen

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

3. Zusammenhang. 22 Andreas Gathmann

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Erstellen von x-y-diagrammen in OpenOffice.calc

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Suchen und Sortieren Sortieren. Heaps

ERGÄNZUNGEN ZUR ANALYSIS II MITTELWERTSATZ UND ANWENDUNGEN

Programmierkurs Java

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema

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:

Primzahlen und RSA-Verschlüsselung

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

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

Algorithmen und Datenstrukturen 2

Kompetitive Analysen von Online-Algorithmen

Abschlussprüfung Realschule Bayern II / III: 2009 Haupttermin B 1.0 B 1.1

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

15.3 Bedingte Wahrscheinlichkeit und Unabhängigkeit

Anleitung: Einrichtung der Fritz!Box 7272 mit VoIP Telefonanschluss

1 Mathematische Grundlagen

Lineare Gleichungssysteme

Was meinen die Leute eigentlich mit: Grexit?

Kombinatorische Optimierung

WS 2008/09. Diskrete Strukturen

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Das Dilemma des Einbrechers Wer die Wahl hat, hat die Qual!

Rente = laufende Zahlungen, die in regelmäßigen Zeitabschnitten (periodisch) wiederkehren Rentenperiode = Zeitabstand zwischen zwei Rentenzahlungen

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Leichte-Sprache-Bilder

Vorkurs Informatik WiSe 15/16

Teil III: Routing - Inhalt I. Literatur. Geometric Routing. Voraussetzungen. Unit Disk Graph (UDG) Geometric Routing 29

Lineare Gleichungssysteme

Second Steps in eport 2.0 So ordern Sie Credits und Berichte

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

Algorithmen und Datenstrukturen Suchbaum

Abiturprüfung Mathematik 2008 (Baden-Württemberg) Berufliche Gymnasien ohne TG Analysis, Aufgabe 1

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Einführung in die Algebra

Theoretische Informatik SS 04 Übung 1

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen. Große Übung vom Nils Schweer

Data Mining: Einige Grundlagen aus der Stochastik

Leitfaden zur Einrichtung za-mail mit IMAP auf dem iphone

Die Komplexitätsklassen P und NP

Musterlösungen zur Linearen Algebra II Blatt 5

Information Systems Engineering Seminar

Grundbegriffe der Informatik

Text-Zahlen-Formatieren

Kapitalerhöhung - Verbuchung

Algorithmik. Andreas Jakoby WS 06/07. Sprechstunde: Dienstags 10:00-12:00. Algorithmik WS 06/07 1. Vorlesung,

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Satz. Für jede Herbrand-Struktur A für F und alle t D(F ) gilt offensichtlich

Abschnitt: Algorithmendesign und Laufzeitanalyse

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Theoretische Grundlagen der Informatik

Abituraufgabe zur Analysis, Hessen 2009, Grundkurs (TR)

Partnerportal Installateure Registrierung

Definition und Begriffe

Windows XP Jugendschutz einrichten. Monika Pross Molberger PC-Kurse

Künstliche Intelligenz Maschinelles Lernen

16. All Pairs Shortest Path (ASPS)

Algorithmen & Datenstrukturen 1. Klausur

Transkript:

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 Lösung Komponente für Komponente, wobei der Wert einer einmal gesetzten Komponente nie zurückgenommen wird. Beispiele: die Algorithmus von Kruskal, die Konstruktion eines Huffman-Codes und der Approximationsalgorithmus für das Binpacking Problem Best-Fit.

Philosophie von Greedy-Verfahren Iterative Konstruktion einer Lösung unter Verwendung lokaler Optimalitätskriterien. Hoffnung: Lokale Optimalität führt auch zur globalen Optimalität oder zumindest zu einer guten Approximation. Verschiedene lokale Kriterien führen zu verschiedenen Algorithmen. Analysemethoden für Greedy-Verfahren Um zu zeigen, dass ein Greedy-Verfahren eine optimale Lösung findet, werden im wesentlichen zwei Analysemethoden eingesetzt:. the greedy algorithm stays ahead: In jedem Schritt ist die gefundene partielle Lösung des Greedy-Verfahrens mindestens so gut wie jede andere partielle Lösung.. exchange argument: Jede Lösung kann Schrittweise in die Lösung des Greedy-Verfahrens transformiert werden, ohne dass hierbei die Güte der Lösung abnimmt. 5

. Minimale Spannbäume Gegeben ist ein ungerichteter, zusammenhängender, gewichteter Graph G = (V, E) mit einer positiven Kostenfunktion f : E R +. Wir nehmen an, dass für alle Kanten e E f (e) > 0 ist. Wir nennen T = (V, E ) einen Spannbaum von G, wenn V = V und T ein Baum ist. Gesucht ist ein Baum T = (V, E ) mit E E, so dass, e E f (e) minimal unter allen Spannbäumen von G ist. Ist f (e) konstant, so können wir dieses Problem wieder mit Hilfe der Breiten- oder Tiefensuche lösen. Wir werden im Folgenden das Verfahren von Kruskal vorstellen. 6

Zur effizienten Implementation benutzen wir die Datenstruktur der Priorityqueue und der Partition. Die letztere Datenstruktur ist auch unter dem Namen UNION/FIND-Datenstruktur bekannt. Wir starten mit V einelementigen Mengen, von denen jede einen anderen Knoten des Graphen enthält. Diese Mengen werden als Bäume mit jeweils einem Knoten interpretiert. Sukzessive verschmelzen wir diese Mengen durch Hinzunahme einer Kante mit minimalen Kosten: Finde die minimale Kante, die zwei Knoten aus unterschiedlichen Mengen verbindet und vereinige die beiden Mengen. 7

Was ist eine Priorityqueue? Wir betrachten eine Teilmenge M eines Universums U, wobei jedem Element m M eine Priorität p(m) (oder kurz p) zugeordnet wird. insert(m, p): fügt m U mit Priorität p in M ein. deletemin: gibt das Element aus M mit minimaler Priorität zurück und entfernt dieses aus M. readmin: gibt das Element aus M mit minimaler Priorität zurück ohne es zu entfernen. decpriority(m, d): die Priorität von m in M wird um d reduziert. Eine Priorityqueue kann mit Hilfe eines Heaps (Heapsort) so implementiert werden, dass die Laufzeiten der Initialisierung in O( M ), von readmin in O() und der drei verbleibenden Operationen in O(log M ) liegen. 8

9 Andreas Jakoby Was ist eine UNION/FIND-Datenstruktur bzw. eine Partition? Partitionen stellen eine eingeschränkte Form von Mengen dar. Der abstrakten Datentyp ist wie folgt definiert: U = {,..., n} sei ein Universum. P = {P,..., P k } sei eine Menge von disjunkten, nicht leeren Teilmengen von U mit U = S n i= P i. Wir nennen diese Teilmengen Partitionsblöcke oder kurz Blöcke. Jedem Partitionsblock Pi wird ein Element n i P i als Repräsentant (bzw. als Name) zugeordnet. Auf P sind die folgenden zwei Prozeduren definiert: Sei x U und n i, n j Repräsentanten zweier Partitionsblöcke P i und P j. find(x) liefert den Repräsentanten n i der Menge P i mit x P i. union(n i, n j ) vereinigt die Blöcke mit den Repräsentanten n i und n j. Diese Operation verändert die Menge P, d.h. P = (P \ {P i, P j }) {P i P j }. Der Repräsentant der neuen Menge ist entweder n i oder n j.

Die UNION/FIND-Datenstruktur kann recht einfach so implementiert werden, dass die Initialisierung in Zeit O( U ), jede union-operation in konstanter Zeit und jede find-operation in Zeit O(log U ) ausgeführt werden kann. Einige aufwendigere Implementierungen erlauben es die Laufzeit der find-operation erheblich zu reduzieren. 0

Algorithmus MST-Kruskal() Eingabe: global gegebener Graph G Ergebnis: minimaler Spannbaum T = (V, E ) : Bilde die Priorityqueue Q aller e E mit Prioritäten f (e). : Initialisiere die Partitionen {v} für alle v V. : E :=, k = V : while k > do 5: {v, w} := deletemin(q); v 0 := find(v); w 0 := find(w); 6: if v 0 w 0 then 7: union(v 0, w 0 ); E := E {{v, w}}; k := k ; 8: end if 9: end while 0: Return(T = (V, E ))

Andreas Jakoby Beispiel 5 6 6 5 6 7 9 0. Initialisierung. deletemin= {, 6} find() find(6). deletemin= {, } find() find() 5 5 5 6 6 6

Andreas Jakoby. deletemin= {5, } find(5) find() 6 5 6. deletemin= {, 6} find() = find(6) 6 5. deletemin= {5, 6} find(5) find(6) 6 5 7. deletemin= {, } find() = find() 6 5 5. deletemin= {, 6} find() = find(6) 6 5 8. deletemin= {, } find() find() 6 5 9

Korrektheit Lemma Sei G = (V, E) ein ungerichteter Graph, T = (V, E T ) ein minimaler Spannbaum für G, W = (V, E W ) ein Wald der in T enthalten ist, d.h. E W E T und S V eine Knotenmenge, so dass keine Kante aus E W zwischen den Mengen S und V \ S verläuft. Wir nennen eine Kante aus E kreuzend, wenn sie einen Knoten aus S mit einem Knoten aus V \ S verbindet. Ist e E eine kreuzende Kante, die minimale Kosten unter allen kreuzenden Kanten besitzt, dann ist auch W := (V, E W {e}) in einem minimalen Spannbaum enthalten.

5 Andreas Jakoby S Beweis von Lemma : Angenommen, T enthält W aber nicht W. e V \ S Dann gilt e E T. T ist ein Spannbaum, somit gibt es von jedem Knoten in V einen Weg zu jedem anderen Knoten in V. Addieren wir e zu T, so schließen wir einen Kreis C. C besitzt neben e noch eine kreuzende Kante e. Sei T := (V, (E T {e}) \ {e }). T ist ein Spannbaum von G, da T wieder zyklenfrei ist und V Kanten hat. Da f (e) minimal unter allen kreuzenden Kanten ist, gilt f (e) f (e ).

6 Andreas Jakoby Beweis von Lemma (Teil ) Ist f (e) < f (e ), so gilt w E f (w) < T w E T f (w) für E T = (E T {e}) \ {e }. Dieses widerspricht der Annahme, dass T ein minimaler Spannbaum ist. Wir können somit ausschließen, dass f (e) < f (e ) ist. Ist f (e) = f (e ), so haben T und T die gleichen Kosten. Da T ein minimaler Spannbaum ist, muss auch T ein minimaler Spannbaum sein. Wir haben somit gezeigt, dass W in einem minimalen Spannbaum enthalten ist.

7 Andreas Jakoby Korrektheit vom Kruskals Algorithmus Der MST-Algorithmus nimmt immer eine minimale kreuzende Kante in den bereits konstruierten Wald W auf. Sei e = {u, v} = deletemin(q). Über die Abfrage find(u) = find(v) wird überprüft, ob u und v bereits in einer Komponente von W liegen. Beachte: Mit jeder eingefügten Kante {u, v } vereinigen wir die entsprechenden Mengen find(u ) und find(v ). Somit repräsentiert jede Menge der Partition einen Baum des konstruierten Walds. Ist find(u) = find(v), so verwerfen wir die Kante. Ist find(u) find(v), so stellt S die Knotenmenge des Teilbaums dar, in dem u liegt. Somit ist e eine minimale kreuzende Kante. Aus Lemma können wir nun schließen, dass W = (V, E W {e}) in einem minimalen Spannbaum enthalten ist, wenn auch W = (V, E W ) in einem minimalen Spannbaum enthalten ist.

Laufzeit von Kruskals Algorithmus Die Initialisierung der Priorityqueue gelingt in Zeit O( E ). Die Initialisierung der Partitionen gelingt in Zeit O( V ). Die While-Schleife muss im Worst-Case E mal durchlaufen werden. Bei jedem Durchlauf werden einmal die Operationen deletemin und zweimal die Operation find aufgerufen. Nach unseren Annahmen über die Priorityqueue und der UNION/FIND-Datenstruktur können wir diese Operationen in Zeit O( E log E ) ausführen. In V Durchläufen der While-Schleife wird jeweils einmal eine union-operation aufgerufen. Zusammen erhalten wir eine Laufzeit von O( E log E ). 8

Satz Sei G = (V, E) ein zusammenhängender, ungerichteter, gewichteter Graph. Dann berechnet Kruskals Algorithmus einen minimalen Spannbaum für G in Zeit O( E log E ). Beobachtung Betrachten wir die Aussage von Lemma und den Korrektheitsbeweis von Kruskals Algorithmus, so erkennen wir, dass wir hierbei ein exchange argument angewendet haben. 9

. Intervall-Scheduling Definition [Intervall-Scheduling Problem] Gegeben sei eine Menge R = {,..., n} von n Jobs und zwei Funktionen s, f : R N. Hierbei gilt für alle Jobs i s(i) f (i) s(i) nennen wir die Startzeit von Job i und f (i) nennen wir die Endzeit von Job i. Job i steht im Konflikt mit Job j, wenn i j und die Intervalle [s(i), f (i)[ und [s(j), f (j)[ sich überlappen. Mit [s(i), f (i)[ bezeichnen wir das nach rechts offene reelle Intervall. 0

Definition (Teil ) Eine Teilmenge S R ist eine zulässige Schedule, wenn S konfliktfrei ist, d.h. für alle i, j S steht i nicht im Konflikt zu j. Eine Teilmenge S R ist eine optimale Schedule, wenn S eine zulässige Schedule maximaler Kardinalität ist, d.h. S ist maximal. Aufgabe: Bestimme eine optimale Schedule!

Wir starten mit einem Grundgerüst für einen Greedy-Algorithmus für das Intervall-Scheduling Problem: Algorithmus Greedy-Intervall-Schedule(R) Eingabe: Menge R Ergebnis: optimale Schedule S : S := : while R do : wähle ein eine Job i R : S := S {i}; 5: entferne alle Jobs aus R, die zu i im Konflikt stehen 6: R := R \ {i} 7: end while 8: Return(S) Unsere Aufgabe besteht jetzt darin, den Auswahlmechanismus in Zeile näher zu beschreiben.

Wir starten mit einer einfachen Beobachtung: Beobachtung Für alle Auswahlmechanismen ist das Ergebnis S eine zulässige Schedule. Diese Beobachtung folgt unmittelbar daraus, dass wir in Zeile 5 alle Jobs löschen, die zu einem einmal in die Schedule aufgenommenen Job im Konflikt stehen.

Einfache Auswahlmechanismen:. wähle i mit s(i) = min j R s(j). wähle i mit f (i) s(i) = min j R f (j) s(j). wähle das i, welches mit den wenigsten Jobs in R im Konflikt steht. wähle i mit f (i) = min j R f (j)

Anhand der nachfolgenden Graphik können wir leicht erkennen, dass die ersten drei Auswahlmechanismen auf Folie keine optimale Schedule liefern.... Behauptung Benutzen wir jedoch den vierten Mechanismus in Zeile von Algorithmus Greedy-Intervall-Schedule, so erhalten wir eine optimale Schedule. Dieses muss aber noch bewiesen werden! 5