Informatik II Greedy-Algorithmen

Ähnliche Dokumente
Informatik II Greedy-Algorithmen

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

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

Erinnerung: das Knapsack-Problem

1 topologisches Sortieren

Professionelle Seminare im Bereich MS-Office

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!.

ecaros2 - Accountmanager

Informationsblatt Induktionsbeweis

Primzahlen und RSA-Verschlüsselung

Erstellen von x-y-diagrammen in OpenOffice.calc

Grundbegriffe der Informatik

Neuanlage des Bankzugangs ohne das bestehende Konto zu löschen

Programmierkurs Java

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

15 Optimales Kodieren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Theoretische Grundlagen der Informatik

Anwendungsbeispiele Buchhaltung

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

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

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

Zeichen bei Zahlen entschlüsseln

Objektorientierte Programmierung für Anfänger am Beispiel PHP

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

Was meinen die Leute eigentlich mit: Grexit?

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

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

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software

Leichte-Sprache-Bilder

Anlegen eines DLRG Accounts

Künstliches binäres Neuron

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Grundlagen der Theoretischen Informatik, SoSe 2008

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:

Die Post hat eine Umfrage gemacht

Grundlagen der Künstlichen Intelligenz

Alle Schlüssel-Karten (blaue Rückseite) werden den Schlüssel-Farben nach sortiert und in vier getrennte Stapel mit der Bildseite nach oben gelegt.

Kapiteltests zum Leitprogramm Binäre Suchbäume

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

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

Anwendungsbeispiele Buchhaltung

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

Programmentwicklungen, Webseitenerstellung, Zeiterfassung, Zutrittskontrolle

7 Rechnen mit Polynomen

Wir machen neue Politik für Baden-Württemberg

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1

Eine Logikschaltung zur Addition zweier Zahlen

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

Lernmaterial für die Fernuni Hagen effizient und prüfungsnah

Benutzerkonto unter Windows 2000

Kompetitive Analysen von Online-Algorithmen

HIER GEHT ES UM IHR GUTES GELD ZINSRECHNUNG IM UNTERNEHMEN

Grundlagen der Informatik

Hilfe zur Urlaubsplanung und Zeiterfassung

Übungsaufgaben Tilgungsrechnung

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

Programmieren I. Kapitel 7. Sortieren und Suchen

Tangentengleichung. Wie lautet die Geradengleichung für die Tangente, y T =? Antwort:

Grundbegriffe der Informatik

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

11. Das RSA Verfahren und andere Verfahren

Windows Verbindung mit WLAN BZPflege trennen Verbindung mit WLAN EDU-BZPflege automatisch erstellen... 30

Technische Universität München SS 2006 Fakultät für Informatik 12. Oktober 2006 Prof. Dr. A. Knoll. Aufgabe 1 Transferfragen (Lösungsvorschlag)

4 Greedy-Algorithmen (gierige Algorithmen)

Lehrer: Einschreibemethoden

Step by Step Webserver unter Windows Server von Christian Bartl

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

Software Engineering Klassendiagramme Assoziationen

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

Einlesen einer neuen Chipkarte in der VR-NetWorld Software Seccos 6 gültig bis 2013

ANLEITUNG - WIE UNTERSTÜTZE ICH AUF STARTNEXT?

Datenexport aus JS - Software

Die neue Aufgabe von der Monitoring-Stelle. Das ist die Monitoring-Stelle:

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

WS 2013/14. Diskrete Strukturen

Navigieren auf dem Desktop

Lineare Gleichungssysteme

Kurzanleitung für die Abgabe der Abrechnung über das Mitgliederportal der KV Sachsen

Warum. Natural AnalyticsTM. wichtig ist

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Algorithmen II Vorlesung am

Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen

Vergleich: Positionen der Word 2003-Befehle in Word

Meinungen zur Altersvorsorge

Guide DynDNS und Portforwarding

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Charakteristikum des Gutachtenstils: Es wird mit einer Frage begonnen, sodann werden die Voraussetzungen Schritt für Schritt aufgezeigt und erörtert.

Der Zwei-Quadrate-Satz von Fermat

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

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

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

Anmerkungen zur Übergangsprüfung

Windows XP maßgeschneidert

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

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

Transkript:

7/7/06 lausthal Erinnerung: Dynamische Programmierung Informatik II reedy-algorithmen. Zachmann lausthal University, ermany zach@in.tu-clausthal.de 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 Activity-Selection-Problem greedy gierig Beispiel: in einem Vergnügungspark das "Meiste mitnehmen" rundidee: Eine Karte ermöglicht das Benutzen aller Attraktionen konstruiere Lösung schrittweise (iterativ) Attraktionen starten und enden zu unterschiedlichen Zeiten 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 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. Zachmann Informatik - SS 06 reedy-algorithmen 4

7/7/06 Beispiel Optimale Unterstruktur Sei A eine optimale Lösung 0 4 5 6 7 8 9 0 4 Wieviel Aktivitäten können ausgeführt werden? 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} 0 4 5 6 7 8 9 0 4 dann ist B {k} passend und eine maximale Lösung zu S Wie lässt sich Korrektheit beweisen? B {k} > A A war nicht maximale Lösung. Zachmann Informatik - SS 06 reedy-algorithmen 5. Zachmann Informatik - SS 06 reedy-algorithmen 6 Wiederkehrende Unterprobleme reedy-hoice-eigenschaft Betrachte rekursiven Algorithmus, der alle verträglichen Untermengen untersucht, um die maximale Menge zu finden Actitity-Selection-Problem zeigt auch die reedy-hoice- Eigenschaft: Beachte die sich wiederholenden Unterprobleme: lokal optimale Auswahl global optimale Lösung S A? 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 S A? S - {} 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 S S - {} S S - {,} gleiche Anzahl an Aktivitäten, also optimal Dynamische Programmierung? Memoisierung? Ja, aber. Zachmann Informatik - SS 06 reedy-algorithmen 7. Zachmann Informatik - SS 06 reedy-algorithmen 8

7/7/06 reedy-algorithmus für das ASP Erinnerung: Knapsack-Problem 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 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 9. Zachmann Informatik - SS 06 reedy-algorithmen 0 Fraktionales Rucksack-Problem Korrektheit egeben: n egenstände, i-ter egenstand hat ewicht w i und Wert v i, ewichtsschranke W esucht: Hier nur Beweisidee reedy-algorithmus erzeugt Lösungen der Form (,,, q *, 0,, 0) # 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 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. Zachmann Informatik - SS 06 reedy-algorithmen

7/7/06 Elemente der reedy-strategie Achtung: Der reedy-algorithmus funktioniert nicht für das 0--Rucksack-Problem egenbeispiel: W = 50 egenstand ewicht 0 0 0 Wert 60 00 0 v i / w i 6 5 4 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' reedy: + optimal: +. Zachmann Informatik - SS 06 reedy-algorithmen. Zachmann Informatik - SS 06 reedy-algorithmen 4 Abstrakte Formulierung des Algos 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 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 4

7/7/06 Scheduling in (Betriebs-) Systemen Beispiel 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 Es gibt Kunden mit t = 5, t = 0, t = Reihenfolge T 5 + (5 + 0) + (5 + 0 + ) 5 + (5 + ) + (5 + + 0) 0 + (0 + 5) + (0 + 5 + ) = 8 = = 4 0 + (0 + ) + (0 + + 5) = 4 + ( + 5) + ( + 5 + 0) = 9 optimal + ( + 0) + ( + 0 + 5) = 4. Zachmann Informatik - SS 06 reedy-algorithmen 7. Zachmann Informatik - SS 06 reedy-algorithmen 8 Algorithmenentwurf Optimalitätsbeweis 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 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 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. Zachmann Informatik - SS 06 reedy-algorithmen 0 5

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