Informatik II Greedy-Algorithmen

Ähnliche Dokumente
Informatik II Greedy-Algorithmen

Erinnerung: das Knapsack-Problem

Übersicht. Aktivitäten-Auswahl-Problem. Greedy Algorithmen. Aktivitäten-Auswahl-Problem. Aktivitäten-Auswahl-Problem. Datenstrukturen & Algorithmen

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

Greedy Algorithms - Gierige Algorithmen

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

Ein Dieb raubt einen Laden aus; um möglichst flexibel zu sein, hat er für die Beute nur einen Rucksack dabei

Algorithmen und Datenstrukturen

Theoretische Informatik. Exkurs: Komplexität von Optimierungsproblemen. Optimierungsprobleme. Optimierungsprobleme. Exkurs Optimierungsprobleme

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Gierige Algorithmen. Seminar Hallo Welt! für Fortgeschrittene. Daniel Ziegler Daniel Ziegler Gierige Algorithmen

Datenstrukturen & Algorithmen

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

Informatik II Dynamische Programmierung

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Gierige Algorithmen. Seminar Hallo Welt! für Fortgeschrittene. Jennifer Naumann. 11.Juni 2013

Abschnitt 19: Sortierverfahren

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1

Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele.

Algorithmen und Datenstrukturen

Wann sind Codes eindeutig entschlüsselbar?

Approximationsalgorithmen. 19. Dezember / 28

ADS: Algorithmen und Datenstrukturen 2

Gierige Algorithmen Interval Scheduling

Informatik II Skip-Lists & selbstorganisierende Listen (als Bsp. für randomisierte Algos und selbstorganisierende Datenstrukturen)

Algorithmen I. Tutorium Sitzung. Dennis Felsing

Vorlesung Datenstrukturen

4 Greedy-Algorithmen (gierige Algorithmen)

Bucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt.

Algorithmentheorie. 10 Greedy Verfahren

Algorithmen und Datenstrukturen 2

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

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Algorithmen & Komplexität

Top-down Bottom-up Divide & Conquer Dynamisches Programmieren Caching (Memoization) Branch-and-Bound Greedy

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

Algorithmen und Datenstrukturen 2

Softwareprojektpraktikum Maschinelle Übersetzung

Algorithmen und Datenstrukturen

19. Dynamic Programming I

Algorithmen und Datenstrukturen

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

Gierige Algorithmen Marcel Henninger. Hallo Welt -Seminar - LS 2 Gierige Algorithmen

Vorlesung Algorithmische Geometrie Konvexe Hülle im R 3

Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren

Probleme aus NP und die polynomielle Reduktion

Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren

Algorithmen II Vorlesung am

Algorithmen und Datenstrukturen

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

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

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

Informatik I. Informatik I Iteration vs. Rekursion. Iteration vs. Rekursion Iteration vs. Rekursion. 20. Iteration vs.

2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017

Die Klasse NP und die polynomielle Reduktion

Maximale s t-flüsse in Planaren Graphen

Algorithmen und Datenstrukturen

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik

Gierige Algorithmen. Tilman Adler Tilman Adler Gierige Algorithmen / 46

Einführung in die Informatik 2

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Theoretische Informatik SS 03 Übung 3

Kürzeste-Wege-Algorithmen und Datenstrukturen

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind.

11. Elementare Datenstrukturen

2 Sortieren durch Vergleichen Eingabefolge a 1, a 2,..., a n 2, 1, 3 Sortieralg. Für festes n ist ein vergleichsbasierter Sortieralg. charakterisiert

Vorlesung Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen

Polygontriangulierung

1. Übung Algorithmen I

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

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt:

19. Dynamic Programming I

Greedy Algorithmen. Grundlegendes. Organisatorisches. VL-21: Greedy Algorithmen. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger

Abschnitt: Algorithmendesign und Laufzeitanalyse

Einführung - Parser. Was ist ein Parser?

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

Datenstrukturen und Algorithmen D-INFK

Informatik II, SS 2014

2. Hausübung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7.

Algorithmen und Datenstrukturen 1

7. Sortieren Lernziele. 7. Sortieren

Algorithmen und Datenstrukturen (für ET/IT)

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

Algorithmen und Datenstrukturen

Transkript:

lausthal Informatik II reedy-algorithmen. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Erinnerung: Dynamische Programmierung Zusammenfassung der grundlegenden Idee: Optimale Sub-Struktur: optimale Lösung des Problems besteht aus optimalen Lösungen der Unterprobleme Sich überschneidende Unterprobleme: insgesamt wenige Unterprobleme, viele wiederkehrende Instanzen dieser Unterprobleme Löse bottom-up, erstelle Tabelle mit gelösten Unterproblemen, die zur Lösung größerer benötigt werden Variationen: Tabelle kann -dimensional, dreieckig, ein Baum usw. sein Bottom-Up oder Top-Down. Zachmann Informatik - SS 06 reedy-algorithmen

reedy-algorithmen greedy gierig rundidee: konstruiere Lösung schrittweise (iterativ) wähle in jedem Schritt die am besten erscheinende Alternative eine Entscheidung wird nie revidiert ("blicke nicht zurück") Hoffnung: eine lokal optimale Lösung führt zu einer global optimalen Lösung Dynamische Programmierung kann "Overkill" sein, reedy- Algorithmen sind oft einfacher zu implementieren reedy-algorithmen sind nicht immer korrekt/optimal/gut. Zachmann Informatik - SS 06 reedy-algorithmen Activity-Selection-Problem Beispiel: in einem Vergnügungspark das "Meiste mitnehmen" Eine Karte ermöglicht das Benutzen aller Attraktionen Attraktionen starten und enden zu unterschiedlichen Zeiten Ziel: so viele Attraktionen wie möglich besuchen (eine anderes Ziel wäre, so viel Zeit wie möglich in Attraktionen zu verbringen) Activity-Selection-Problem Formal: sei S = { (s i,f i ) i = n } eine Menge von n Aktivitäten s i / f i = Startzeit / Endzeit von Aktivität i Aufgabe: finde größte Menge A S mit kompatiblen Aktivitäten obda sei f f f n - Falls nicht: sortiere Aktivitäten in O(n log n) oder O(n) gemäß f i 5 4 6 t. Zachmann Informatik - SS 06 reedy-algorithmen 4

Beispiel 0 4 5 6 7 8 9 0 4 Wieviel Aktivitäten können ausgeführt werden? 0 4 5 6 7 8 9 0 4 Wie lässt sich Korrektheit beweisen?. Zachmann Informatik - SS 06 reedy-algorithmen 5 Optimale Unterstruktur Sei A eine optimale Lösung Behauptung: Sei k die minimale Aktivität in A (d.h. genau die, die die früheste Endzeit hat), dann ist A \ {k} eine maximale Lösung für S'= {i S : s i f k } in Worten: wenn Aktivität a =(s k,f k ) S (richtig) gewählt ist, reduziert sich das Problem darauf, die maximale Lösung für diejenigen Aktivitäten S' S zu finden, die zu Aktivität a S "passen" Beweis: Ann.: wir finden B = maximale Lösung zu S' mit B > A \ {k} dann ist B {k} passend und eine maximale Lösung zu S B {k} > A A war nicht maximale Lösung. Zachmann Informatik - SS 06 reedy-algorithmen 6

Wiederkehrende Unterprobleme Betrachte rekursiven Algorithmus, der alle verträglichen Untermengen untersucht, um die maximale Menge zu finden Beachte die sich wiederholenden Unterprobleme: S A? S A? S - {} A? S S - {} S S - {,} Dynamische Programmierung? Memoisierung? Ja, aber. Zachmann Informatik - SS 06 reedy-algorithmen 7 reedy-hoice-eigenschaft Actitity-Selection-Problem zeigt auch die reedy-hoice- Eigenschaft: lokal optimale Auswahl global optimale Lösung Lemma: wenn S ein, nach der Endzeit sortiertes, Activity-Selection-Problem ist, dann ex. eine optimale Lösung A S, so daß { (s,f ) } A Beweisskizze: wenn eine optimale Lösung B existiert, die { (s,f ) } nicht enthält, kann die erste Aktivität in B ( z.b. (s,f ) ) immer durch (s,f ) ersetzt werden gleiche Anzahl an Aktivitäten, also optimal. Zachmann Informatik - SS 06 reedy-algorithmen 8 4

reedy-algorithmus für das ASP Eigentlicher Algorithmus ist einfach:. sortiere Aktivitäten nach Endzeit. lege die erste Aktivität fest (also (s,f ), d.h. diejenige, die am frühesten wieder endet). entferne alle Aktivitäten aus der sortierten Liste, die vor der Endzeit von f starten (also nicht kompatibel sind) wiederhole, bis keine Aktivitäten mehr übrig sind Intuition ist noch einfacher: nimm immer die Aktivität mit der geringsten Dauer, die gerade als nächstes beginnt Implementierung: sortiere s & f bzgl f[*] A = [] # solution array i = 0 # last finished a. for k in range(, n ): if s[k] >= f[i]: # "exec" this a. next A.append( (s[k],f[k]) ) i = k return A. Zachmann Informatik - SS 06 reedy-algorithmen 9 Erinnerung: Knapsack-Problem 0--Knapsack-Problem: ein Dieb muß aus n egenständen wählen, wobei der i-te egenstand den Wert v i und das ewicht w i besitzt maximiere den esamtwert bei vorgegebenem Höchstgewicht W - w i und W sind anzzahlen - "0-": jeder egenstand muß komplett genommen oder dagelassen werden Abwandlung: fraktionales KP (fractional KP) Dieb kann Teile von egenständen nehmen Z.B.: oldbarren beim 0--Problem und oldstaub beim fraktionalen Problem. Zachmann Informatik - SS 06 reedy-algorithmen 0 5

Fraktionales Rucksack-Problem egeben: n egenstände, i-ter egenstand hat ewicht w i und Wert v i, ewichtsschranke W esucht: # Ann.: Array enthält Instanzen der Klasse Item # Jedes Item [i] hat Instanz-Var.s [i].w und [i].v def fract_knapsack(, w_max ): sortiere absteigend nach [i].v/[i].w w = 0 # bislang "belegtes" esamtgewicht for i in range( 0, len() ): if [i].w <= w_max - w: q[i] = w += [i].w else: q[i] = (w_max w) / [i].w w = w_max return q. Zachmann Informatik - SS 06 reedy-algorithmen Korrektheit Hier nur Beweisidee reedy-algorithmus erzeugt Lösungen der Form (,,, q *, 0,, 0) Ann.: es ex. bessere Lösung (q',, q' m ); diese hat die Form (,,, q' *,, q' *, 0,, 0) Zeige, daß man aus dieser Lösung eine andere Lösung (q'',, q'' m ) konstruieren kann, die dasselbe ewicht hat, aber größeren Wert, und mehr -en oder mehr 0-en. Zachmann Informatik - SS 06 reedy-algorithmen 6

Achtung: Der reedy-algorithmus funktioniert nicht für das 0--Rucksack-Problem egenbeispiel: W = 50 egenstand ewicht Wert v i / w i 0 60 6 0 00 5 0 0 4 reedy: + optimal: +. Zachmann Informatik - SS 06 reedy-algorithmen Elemente der reedy-strategie reedy-hoice-eigenschaft: global optimale Lösung kann durch lokal optimale (greedy) Auswahl erreichet werden Optimale (reedy-)unterstruktur: Eine optimale Lösung eines Problems enthält eine optimale Lösung eines Unterproblems M.a.W.: es ist möglich zu zeigen: wenn eine optimale Lösung A Element s i enthält, dann ist A' = A \ {s i } eine optimale Lösung eines kleineren Problems (ohne s i und evtl. ohne einige weitere Elemente) - Bsp. ASP: A \ {k} ist optimale Lösung für S'. Zachmann Informatik - SS 06 reedy-algorithmen 4 7

Optimale (reedy-)unterstruktur (Forts.): Man muß nicht alle möglichen Unterprobleme durchprobieren (wie bei Dyn.Progr.) es genügt, das "nächstbeste" Element in die Lösung aufzunehmen, wenn man nur das richtige lokale(!) Kriterium hat - Bsp. ASP: wähle "vorderstes" f i Möglicherweise ist eine Vorbehandlung der Eingabe nötig, um die lokale Auswahlfunktion effizient zu machen - Bsp. ASP: sortiere Aktivitäten nach Endzeit. Zachmann Informatik - SS 06 reedy-algorithmen 5 Abstrakte Formulierung des Algos Die Auswahl-Funktion basiert für gewöhnlich auf der Zielfunktion, sie können identisch sein, oft gibt es unterschiedliche plausible Bsp. ASP: - Zielfunktion = Anzahl Aktivitäten (Max gesucht) - Auswahl-Funktion = kleinstes f i S' # = Menge aller Kandidaten # select = Auswahlfunktion S = [] # Menge mit Lösung while not solution(s) and!= []: x = Element aus, das select(x) maximiert = \ x if feasible(s,x): # is x compatible with S? S += x if solution(s): return S else: return keine Lösung. Zachmann Informatik - SS 06 reedy-algorithmen 6 8

Scheduling in (Betriebs-) Systemen Ein einzelner Dienstleister (ein Prozessor, eine aspumpe, ein Kassierer in einer Bank, usw.) hat n Kunden zu bedienen Die Zeit, die für jeden Kunden benötigt wird, ist vorab bekannt: Kunde i benötigt die Zeit t i, i n Ziel: esamtverweildauer aller Kunden im System minimieren M.a.W.: Minimierung der Funktion. Zachmann Informatik - SS 06 reedy-algorithmen 7 Beispiel Es gibt Kunden mit t = 5, t = 0, t = Reihenfolge T 5 + (5 + 0) + (5 + 0 + ) = 8 5 + (5 + ) + (5 + + 0) = 0 + (0 + 5) + (0 + 5 + ) = 4 0 + (0 + ) + (0 + + 5) = 4 + ( + 5) + ( + 5 + 0) = 9 optimal + ( + 0) + ( + 0 + 5) = 4. Zachmann Informatik - SS 06 reedy-algorithmen 8 9

Algorithmenentwurf Betrachte einen Algorithmus, der den optimalen Schedule Schritt für Schritt erstellt Angenommen, nach der Bedienung der Kunden i,, i m ist Kunde j an der Reihe; die Zunahme von T auf dieser Stufe ist Um diese Zunahme zu minimieren, muß nur t j minimiert werden Das legt einen einfachen reedy-algorithmus nahe: füge bei jedem Schritt denjenigen Kunden, der die geringste Zeit benötigt, dem Schedule hinzu "shortest job first" Behauptung: Dieser Algorithmus ist immer optimal. Zachmann Informatik - SS 06 reedy-algorithmen 9 Optimalitätsbeweis Sei I = (i,, i n ) eine Permutation von {,,, n} Werden die Kunden in der Reigenfolge I bedient, dann ist die esamtverweildauer für alle Kunden zusammen. Zachmann Informatik - SS 06 reedy-algorithmen 0 0

Jetzt wird angenommen, daß in I zwei Zahlen a, b gefunden werden können, mit a < b und t ia > t ib Durch Vertauschung dieser beiden Kunden ergibt sich eine neue Bedienungsreigenfolge I', die besser ist, weil. Zachmann Informatik - SS 06 reedy-algorithmen Bedienreihenfolge a b n bedienter Kunde i i a i b i n Bedienzeit t i t ia t ib t in nach Austausch und von t ia und t ib Bedienzeit t i t ib t ia t in bedienter Kunde i i b i a i n. Zachmann Informatik - SS 06 reedy-algorithmen