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

Ähnliche Dokumente
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

Informatik II Greedy-Algorithmen

Hallo Welt für Fortgeschrittene

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

Dynamische Programmierung

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

4 Greedy-Algorithmen (gierige Algorithmen)

Informatik-Sommercamp Mastermind mit dem Android SDK

Sortierverfahren für Felder (Listen)

Approximationsalgorithmen

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

Anmerkungen zur Übergangsprüfung

Graphen: Datenstrukturen und Algorithmen

Approximationsalgorithmen: Klassiker I. Kombinatorische Optimierung Absolute Gütegarantie Graph-Coloring Clique Relative Gütegarantie Scheduling

Abschnitt: Algorithmendesign und Laufzeitanalyse

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

Programmieren I. Kapitel 7. Sortieren und Suchen

7. Übung zu Algorithmen und Datenstrukturen

Alignment-Verfahren zum Vergleich biologischer Sequenzen

Tutorium 5 - Programmieren

Datenstrukturen & Algorithmen

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15.

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

Algorithmen II Vorlesung am

Codierung, Codes (variabler Länge)

Methoden des Algorithmenentwurfs Kapitel 2.2: Randomisierte Online Algorithmen

Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou

Datenstrukturen und Algorithmen SS07

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

Monte Carlo Methoden

Michael Philippsen 1. Algorithmen und Datenstrukturen. 9. Algorithmenherleitung durch Induktion. 9. Algorithmenherleitung durch Induktion

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

ACS Data Systems AG. Bestellungen. (Version ) Buchhaltung für Schulen. ACS Data Systems AG. Bozen / Brixen / Trient. Tel

Prozesse und Scheduling

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

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

Heuristiken im Kontext von Scheduling

Tag 9: Datenstrukturen

Wissensbasierte Systeme

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

13. Binäre Suchbäume

Ein Algorithmus für die

16. All Pairs Shortest Path (ASPS)

Problem: Finde für Alphabet mit n Zeichen einen Binärcode, der die Gesamtlänge eines Textes (über diesem Alphabet) minimiert.

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

Vorkurs Informatik WiSe 15/16

4 Algorithmen und Datenstrukturen

22. Algorithmus der Woche Partnerschaftsvermittlung Drum prüfe, wer sich ewig bindet

Suchen und Sortieren Sortieren. Heaps

Programmierung 2. Dynamische Programmierung. Sebastian Hack. Klaas Boesche. Sommersemester

Wirtschaftsinformatik I

Anleitung v3.1. Übersicht zeigt Ihnen alle Seiten Ihres Albums Seite zeigt eine bestimmte Seite Ihres Albums

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

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen

Sortieren. Eine Testmenge erstellen

Informatik Biber. Lehrmittel für die informatische Bildung an der Sekundarstufe I. Kopiervorlagen. Informatik Biber

Kostenmaße. F3 03/04 p.188/395

Der naldo-offline-handyfahrplan

Approximationsalgorithmen

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Algorithmen mit Python

1.) Soll die gesamte Spalte oder Zeile ausgewählt werden, reicht es auf den Spalten-/Zeilenkopf (Ziffer bzw. Buchstabe) zu klicken

Lenstras Algorithmus für Faktorisierung

Schritt für Schritt Anleitung zum Erstellen einer Android-App zum Ein- und Ausschalten einer LED

Kapiteltests zum Leitprogramm Binäre Suchbäume

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 8, Donnerstag 11.

A) Einleitung. Kurzanleitung. Weebly ist ein Websitegenerator mit dem du einfach eine eigene Website zusammen- bauen

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Gezielt über Folien hinweg springen

Theoretische Informatik

Kodierungsalgorithmen

Programmentwicklungen, Webseitenerstellung, Zeiterfassung, Zutrittskontrolle

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

Undirected Single-Source Shortest Paths with Positive Integer Weights in Linear Time

Algorithmik - Kompaktkurs

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik

. TYPO3-Plug-in u:cris

1. Software installieren 2. Software starten. Hilfe zum Arbeiten mit der DÖHNERT FOTOBUCH Software

Sortierverfahren. Sortierverfahren für eindimensionale Arrays

Die Verbindung von Linearer Programmierung und Graphentheorie

1 Vom Problem zum Programm

Maximizing the Spread of Influence through a Social Network

Theoretische Grundlagen der Informatik

Technische Informatik I. Übung 3 Speicherhierarchie. v t d 0 d 1 d 2 d Technische Informatik I Übung 3. Technische Informatik I Übung 3

Punktbeschriftung in Dynamischen Karten

Nutzerhilfe Excel-Produkte

DEN COMPUTER AUFRÜSTEN

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

Über Arrays und verkettete Listen Listen in Delphi

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:

KOMPRIMIERUNGS & VERSCHLÜSSELUNGS- TOOL

Branch-and-Bound. Wir betrachten allgemein Probleme, deren Suchraum durch Bäume dargestellt werden kann. Innerhalb des Suchraums suchen wir

Vodafone TV Manager. Benutzerhandbuch Stand Juni 2015

Installationsanleitung für den Online-Backup Client

6. Algorithmen der Computer-Geometrie

Statistische Untersuchungen zu endlichen Funktionsgraphen

Parallele Programmierung

Transkript:

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

Übersicht 1 Einführung Definition Wann darf man gierige Algorithmen anwenden? Abgrenzung zu dynamischer Programmierung 2 Beispiele Fractional Knapsack Scheduling-Probleme Münzwechselproblem Topcoder-Probleme 3 Zusammenfassung Jennifer Naumann Gierige Algorithmen 11.Juni 2013 2 / 44

Bekannte gierige Algorithmen Diese Algorithmen solltet ihr schon einmal gesehen haben: Algorithmus von Prim Algorithmus von Kruskal Algorithmus von Dijkstra Jennifer Naumann Gierige Algorithmen 11.Juni 2013 3 / 44

Übersicht 1 Einführung Definition Wann darf man gierige Algorithmen anwenden? Abgrenzung zu dynamischer Programmierung 2 Beispiele Fractional Knapsack Scheduling-Probleme Münzwechselproblem Topcoder-Probleme 3 Zusammenfassung Jennifer Naumann Gierige Algorithmen 11.Juni 2013 4 / 44

Definition Gieriger Algorithmus (greedy algorithm) Ein Algorithmus ist gierig, wenn er den Folgezustand auswählt, der zum Zeitpunkt der Wahl das beste Ergebnis verspricht. Er wird verwendet, um Optimierungsprobleme zu lösen. Aber: Nicht jedes Optimierungsproblem ist gierig lösbar! Auch Probleme, die gierig lösbar sind, führen nicht unbedingt zum globalen Optimum Jennifer Naumann Gierige Algorithmen 11.Juni 2013 5 / 44

Übersicht 1 Einführung Definition Wann darf man gierige Algorithmen anwenden? Abgrenzung zu dynamischer Programmierung 2 Beispiele Fractional Knapsack Scheduling-Probleme Münzwechselproblem Topcoder-Probleme 3 Zusammenfassung Jennifer Naumann Gierige Algorithmen 11.Juni 2013 6 / 44

Wichtige Eigenschaften Gierige-Wahl-Eigenschaft Globales Optimum kann schrittweise durch die Wahl eines lokalen Optimums erreicht werden Durch die gierige Wahl entstehen nicht mehrere Teilprobleme, sondern ein einziges, kleineres Teilproblem Iterative Implementierung möglich Durch Vorbereiten der Eingabedaten (z.b. Sortieren) kann effiziente Auswahl ermöglicht werden (meist O(n)) Optimale Substruktur Optimale Lösung des Gesamtproblems setzt sich aus optimalen Lösungen der Teilprobleme zusammen Jennifer Naumann Gierige Algorithmen 11.Juni 2013 7 / 44

Übersicht 1 Einführung Definition Wann darf man gierige Algorithmen anwenden? Abgrenzung zu dynamischer Programmierung 2 Beispiele Fractional Knapsack Scheduling-Probleme Münzwechselproblem Topcoder-Probleme 3 Zusammenfassung Jennifer Naumann Gierige Algorithmen 11.Juni 2013 8 / 44

Abgrenzung zu dynamischer Programmierung Dynamische Programmierung findet globales Optimum meist höhere Laufzeit erfordert komplexe Überlegungen benötigt zusätzlichen Speicherplatz Lösung der Teilprobleme vor der Wahl eines nächsten Schrittes Gierige Algorithmen findet lokales Optimum meist schneller (O(n log n)) Lösung oft intuitiv wenig zusätzlicher Speicherbedarf Wahl des nächsten Schrittes bevor Teilprobleme gelöst werden Jennifer Naumann Gierige Algorithmen 11.Juni 2013 9 / 44

Übersicht 1 Einführung Definition Wann darf man gierige Algorithmen anwenden? Abgrenzung zu dynamischer Programmierung 2 Beispiele Fractional Knapsack Scheduling-Probleme Münzwechselproblem Topcoder-Probleme 3 Zusammenfassung Jennifer Naumann Gierige Algorithmen 11.Juni 2013 10 / 44

Gegeben Fractional Knapsack Rucksack mit Angabe, wie schwer sein Inhalt maximal sein darf Mehrere Gegenstände, die in den Rucksack gepackt werden sollen; jeweils mit Gewicht und Wert Gesucht Gegenstände mit maximalen Gesamtwert, die in den Rucksack passen ohne das Maximalgewicht zu überschreiten Jennifer Naumann Gierige Algorithmen 11.Juni 2013 11 / 44

Fractional Knapsack - Algorithmus Annahme: Gegenstände sind teilbar! Gieriger Algorithmus 1 Sortiere alle Gegenstände absteigend nach Wert pro Gewicht 2 Lege Gegenstände so lange in den Rucksack, bis ein Gegenstand nicht mehr hineinpasst 3 Teile diesen Gegenstand so auf, dass ein Teilstück genau in den Rucksack passt 4 Gebe die Menge der eingepackten Teile zurück Laufzeit: O(n log n) (Ohne Sortierung: O(n)) Jennifer Naumann Gierige Algorithmen 11.Juni 2013 12 / 44

Fractional Knapsack - Beispiel Beispiel: 50kg 25kg 10kg 30kg 20kg 75$ 60$ 150$ 80$ 0$ Rucksack Jennifer Naumann Gierige Algorithmen 11.Juni 2013 13 / 44

Fractional Knapsack - Beispiel 1. Sortiere alle Gegenstände absteigend nach Wert/Gewicht 50kg 10kg 30kg 20kg 25kg 60$ 150$ 80$ 75$ 0$ 6 $ kg 5 $ kg 4 $ kg 3 $ kg Jennifer Naumann Gierige Algorithmen 11.Juni 2013 13 / 44

Fractional Knapsack - Beispiel 2. Lege Gegenstände so lange in den Rucksack, bis ein Gegenstand nicht mehr hineinpasst 40kg 30kg 20kg 25kg 10kg 150$ 80$ 75$ 60$ 5 $ kg 4 $ kg 3 $ kg Jennifer Naumann Gierige Algorithmen 11.Juni 2013 13 / 44

Fractional Knapsack - Beispiel 2. Lege Gegenstände so lange in den Rucksack, bis ein Gegenstand nicht mehr hineinpasst 10 30 20 25 10 80$ 75$ 60$ + 150$ 4 $ kg 3 $ kg Jennifer Naumann Gierige Algorithmen 11.Juni 2013 13 / 44

Fractional Knapsack - Beispiel 3. Teile diesen Gegenstand so auf, dass ein Teilstück genau in den Rucksack passt 20 2 30 25 20 2 10 80 2 $ 75$ 60$ + 150$ + 40$ = 250$ Jennifer Naumann Gierige Algorithmen 11.Juni 2013 13 / 44

Fractional Knapsack Warum nicht mit unteilbaren Gegenständen? Mit gierigem Algorithmus kann hier nicht immer der optimale Wert gefunden werden Beispiel von gerade eben: 10 20 210$ 30 statt 230$ 30 10 muss also für ein optimales Ergebnis mit DP gelöst werden Jennifer Naumann Gierige Algorithmen 11.Juni 2013 14 / 44

Übersicht 1 Einführung Definition Wann darf man gierige Algorithmen anwenden? Abgrenzung zu dynamischer Programmierung 2 Beispiele Fractional Knapsack Scheduling-Probleme Münzwechselproblem Topcoder-Probleme 3 Zusammenfassung Jennifer Naumann Gierige Algorithmen 11.Juni 2013 15 / 44

Scheduling-Probleme Prinzip Erzeugen eines optimalen Ablaufplans aus mehreren, sich zeitlich überschneidenden Aktivitäten vorgestellte Verfahren Intervall Scheduling Scheduling mit Fristen Offline Caching Jennifer Naumann Gierige Algorithmen 11.Juni 2013 16 / 44

Allgemeines Intervall Scheduling Gegeben ist eine Menge von Aufgaben Jede Aufgabe hat einen Start- und einen Endzeitpunkt Aufgaben sind miteinander kompatibel, wenn sie nicht überlappen Ziel: Auffinden einer möglichst großen Teilmenge von miteinander kompatiblen Aufgaben a b c d e f g -1 0 1 2 3 4 5 6 7 8 9 10 11 t Jennifer Naumann Gierige Algorithmen 11.Juni 2013 17 / 44

Intervall Scheduling Wonach soll sortiert werden? nach Startzeitpunkt? Jennifer Naumann Gierige Algorithmen 11.Juni 2013 18 / 44

Intervall Scheduling Wonach soll sortiert werden? nach Startzeitpunkt? nach Kürze der Intervalle? Jennifer Naumann Gierige Algorithmen 11.Juni 2013 18 / 44

Intervall Scheduling Wonach soll sortiert werden? nach Startzeitpunkt? nach Kürze der Intervalle? nach den wenigsten Konflikten? Jennifer Naumann Gierige Algorithmen 11.Juni 2013 18 / 44

Intervall Scheduling Wonach soll sortiert werden? nach Startzeitpunkt? nach Kürze der Intervalle? nach den wenigsten Konflikten? nach Endzeitpunkt? Jennifer Naumann Gierige Algorithmen 11.Juni 2013 18 / 44

Intervall Scheduling Wonach soll sortiert werden? nach Startzeitpunkt? nach Kürze der Intervalle? nach den wenigsten Konflikten? nach Endzeitpunkt? - Ja! Jennifer Naumann Gierige Algorithmen 11.Juni 2013 18 / 44

Intervall Scheduling - Algorithmus Gieriger Algorithmus 1 Sortiere die Aufgaben aufsteigend nach Endzeitpunkt 2 Führe Folgendes für alle Aufgaben der Reihe nach aus: 3 Wenn die aktuelle Aufgabe mit der Ergebnismenge kompatibel ist, füge sie zur Ergebnismenge hinzu 4 Gebe die Ergebnismenge (= die optimale Lösung) zurück Laufzeit: O(n log n) (Ohne Sortierung: O(n)) Jennifer Naumann Gierige Algorithmen 11.Juni 2013 19 / 44

Intervall Scheduling - Beispiel a b c d e f g -1 0 1 2 3 4 5 6 7 8 9 10 11 t Jennifer Naumann Gierige Algorithmen 11.Juni 2013 20 / 44

Intervall Scheduling - Beispiel 1. Sortiere die Aufgaben aufsteigend nach Endzeitpunkt b a c e d f g -1 0 1 2 3 4 5 6 7 8 9 10 11 t Jennifer Naumann Gierige Algorithmen 11.Juni 2013 20 / 44

Intervall Scheduling - Beispiel 2. Nimm die aktuelle Aufgabe b a c e d f g -1 0 1 2 3 4 5 6 7 8 9 10 11 t Jennifer Naumann Gierige Algorithmen 11.Juni 2013 20 / 44

Intervall Scheduling - Beispiel 3. Ist die aktuelle Aufgabe mit der Ergebnismenge kompatibel, füge sie der Ergebnismenge hinzu b a c e d f g -1 0 1 2 3 4 5 6 7 8 9 10 11 t Jennifer Naumann Gierige Algorithmen 11.Juni 2013 20 / 44

Intervall Scheduling - Beispiel 3. Ist die aktuelle Aufgabe mit der Ergebnismenge kompatibel, füge sie der Ergebnismenge hinzu b a c e d f g -1 0 1 2 3 4 5 6 7 8 9 10 11 t Jennifer Naumann Gierige Algorithmen 11.Juni 2013 20 / 44

Intervall Scheduling - Beispiel 3. Ist die aktuelle Aufgabe mit der Ergebnismenge kompatibel, füge sie der Ergebnismenge hinzu b a c e d f g -1 0 1 2 3 4 5 6 7 8 9 10 11 t Jennifer Naumann Gierige Algorithmen 11.Juni 2013 20 / 44

Scheduling mit Fristen Gegeben n Aufträge, die jeweils in genau einer Zeiteinheit erledigt werden können Jeder Auftrag hat einen Schlusstermin und eine Strafe (für den Fall, dass Frist nicht eingehalten wird) Gesucht Ablaufplan für alle gegebenen Aufträge finden, der die maximale Fristüberschreitung möglichst gering hält Jennifer Naumann Gierige Algorithmen 11.Juni 2013 21 / 44

Scheduling nach Fristen - Algorithmus Algorithmus 1 Sortiere alle Aufträge absteigend nach Strafe 2 Wiederhole, solange es noch Aufträge gibt: 1 Nimm den ersten Auftrag 2 Kann dieser Auftrag noch vor Ablauf der Frist erledigt werden? Ja: Schiebe den Auftrag in die leere Zeitscheibe, mit der die Frist gerade so eingehalten werden kann Nein: Schiebe den Auftrag in die letzte leere Zeitscheibe 3 Gib die fertige Tabelle zurück Laufzeit: O(n log n) Jennifer Naumann Gierige Algorithmen 11.Juni 2013 22 / 44

Scheduling mit Fristen - Beispiel Auftrag a b c d e f Frist 4 2 1 3 1 1 Strafe 50 60 30 10 20 40 Jennifer Naumann Gierige Algorithmen 11.Juni 2013 23 / 44

Aufträge, absteigend nach Strafe sortiert: Aufgabe b a f c e d Frist 2 4 1 1 1 2 Strafe 60 50 40 30 20 10 Gesuchter Ablaufplan: Zeiteinheit 0 1 2 3 4 5 Auftrag Frist Strafe Jennifer Naumann Gierige Algorithmen 11.Juni 2013 24 / 44

Aufträge, absteigend nach Strafe sortiert: Aufgabe b a f c e d Frist 2 4 1 1 1 2 Strafe 60 50 40 30 20 10 Gesuchter Ablaufplan: Zeiteinheit 0 1 2 3 4 5 Auftrag b Frist 2 Strafe 0 Jennifer Naumann Gierige Algorithmen 11.Juni 2013 24 / 44

Aufträge, absteigend nach Strafe sortiert: Aufgabe b a f c e d Frist 2 4 1 1 1 2 Strafe 60 50 40 30 20 10 Gesuchter Ablaufplan: Zeiteinheit 0 1 2 3 4 5 Auftrag b a Frist 2 4 Strafe 0 0 Jennifer Naumann Gierige Algorithmen 11.Juni 2013 24 / 44

Aufträge, absteigend nach Strafe sortiert: Aufgabe b a f c e d Frist 2 4 1 1 1 2 Strafe 60 50 40 30 20 10 Gesuchter Ablaufplan: Zeiteinheit 0 1 2 3 4 5 Auftrag f b a Frist 1 2 4 Strafe 0 0 0 Jennifer Naumann Gierige Algorithmen 11.Juni 2013 24 / 44

Aufträge, absteigend nach Strafe sortiert: Aufgabe b a f c e d Frist 2 4 1 1 1 2 Strafe 60 50 40 30 20 10 Gesuchter Ablaufplan: Zeiteinheit 0 1 2 3 4 5 Auftrag c f b a Frist 1 1 2 4 Strafe 0 0 0 0 Jennifer Naumann Gierige Algorithmen 11.Juni 2013 24 / 44

Aufträge, absteigend nach Strafe sortiert: Aufgabe b a f c e d Frist 2 4 1 1 1 2 Strafe 60 50 40 30 20 10 Gesuchter Ablaufplan: Zeiteinheit 0 1 2 3 4 5 Auftrag c f b a e Frist 1 1 2 4 1 Strafe 0 0 0 0 20 Jennifer Naumann Gierige Algorithmen 11.Juni 2013 24 / 44

Aufträge, absteigend nach Strafe sortiert: Aufgabe b a f c e d Frist 2 4 1 1 1 2 Strafe 60 50 40 30 20 10 Gesuchter Ablaufplan: Zeiteinheit 0 1 2 3 4 5 Auftrag c f b d a e Frist 1 1 2 2 4 1 Strafe 0 0 0 10 0 20 Jennifer Naumann Gierige Algorithmen 11.Juni 2013 24 / 44

Aufträge, absteigend nach Strafe sortiert: Aufgabe b a f c e d Frist 2 4 1 1 1 2 Strafe 60 50 40 30 20 10 Gesuchter Ablaufplan: Zeiteinheit 0 1 2 3 4 5 Auftrag c f b d a e Frist 1 1 2 2 4 1 Strafe 0 0 0 10 0 20 Strafe: 10 + 20 = 30 Jennifer Naumann Gierige Algorithmen 11.Juni 2013 24 / 44

Offline Caching Gegeben Cache, der maximal k Einträge speichern kann Sequenz von Objekten Wenn sich das Objekt schon im Cache befindet, wird es von dort geladen (Cache Hit) Wenn es sich noch nicht im Cache befindet, muss es in den Cache geladen werden und dabei eventuell andere Objekte verdrängen (Cache Miss) Gesucht Ablaufplan, der Cache-Misses auf ein Minimum reduziert Jennifer Naumann Gierige Algorithmen 11.Juni 2013 25 / 44

Offline Caching Lösung Farthest-in-future = Verdränge den Eintrag, dessen nächster Zugriff am Weitesten in der Zukunft liegt Vorsicht Hier nur Betrachtung der Offline -Version, bei der die Sequenz von Objekten schon vorher bekannt ist In der Praxis eher schlecht umsetzbar, weil die zukünftigen Einträge nicht bekannt sind Jennifer Naumann Gierige Algorithmen 11.Juni 2013 26 / 44

Beispiel: Cache, der maximal 2 Einträge speichern kann Künftige Zugriffe: a, b, c, b, c, a, b a b aktueller Cache Jennifer Naumann Gierige Algorithmen 11.Juni 2013 27 / 44

Beispiel: Cache, der maximal 2 Einträge speichern kann Künftige Zugriffe: b, c, b, c, a, b a b aktueller Cache Jennifer Naumann Gierige Algorithmen 11.Juni 2013 27 / 44

Beispiel: Cache, der maximal 2 Einträge speichern kann Künftige Zugriffe: c, b, c, a, b a b aktueller Cache Jennifer Naumann Gierige Algorithmen 11.Juni 2013 27 / 44

Beispiel: Cache, der maximal 2 Einträge speichern kann Künftige Zugriffe: b, c, a, b c b aktueller Cache Jennifer Naumann Gierige Algorithmen 11.Juni 2013 27 / 44

Beispiel: Cache, der maximal 2 Einträge speichern kann Künftige Zugriffe: c, a, b c b aktueller Cache Jennifer Naumann Gierige Algorithmen 11.Juni 2013 27 / 44

Beispiel: Cache, der maximal 2 Einträge speichern kann Künftige Zugriffe: a, b c b aktueller Cache Jennifer Naumann Gierige Algorithmen 11.Juni 2013 27 / 44

Beispiel: Cache, der maximal 2 Einträge speichern kann Künftige Zugriffe: b a b aktueller Cache Jennifer Naumann Gierige Algorithmen 11.Juni 2013 27 / 44

Beispiel: Cache, der maximal 2 Einträge speichern kann Künftige Zugriffe: a b aktueller Cache Jennifer Naumann Gierige Algorithmen 11.Juni 2013 27 / 44

Übersicht 1 Einführung Definition Wann darf man gierige Algorithmen anwenden? Abgrenzung zu dynamischer Programmierung 2 Beispiele Fractional Knapsack Scheduling-Probleme Münzwechselproblem Topcoder-Probleme 3 Zusammenfassung Jennifer Naumann Gierige Algorithmen 11.Juni 2013 28 / 44

Mu nzwechselproblem Gegeben Verschiedene Mu nzen: zum Beispiel 2 Euro, 1 Euro, 50 cent, 20 cent, 10 cent, 5 cent, 2 cent, 1 cent Betrag, der herausgegeben werden soll Gesucht Zusammenstellung von Mu nzen, deren Summe der angegebene Betrag ist und deren Anzahl minimal ist Jennifer Naumann Gierige Algorithmen 11.Juni 2013 29 / 44

Mu nzwechselproblem - Algorithmus Gieriger Algorithmus 1 n := gegebener Betrag 2 Sortiere die Mu nzen absteigend nach ihrem Wert Solange n > 0: 3 Nimm die Mu nze mit dem ho chsten Betrag, der in n passt und fu ge sie der Lo sungsmenge hinzu Ziehe den Wert der Mu nze von n ab 4 Gib die Lo sungsmenge zuru ck Beispiel: gegebener Betrag: 78ct, Restbetrag: 78ct Jennifer Naumann Gierige Algorithmen 11.Juni 2013 30 / 44

Mu nzwechselproblem - Algorithmus Gieriger Algorithmus 1 n := gegebener Betrag 2 Sortiere die Mu nzen absteigend nach ihrem Wert Solange n > 0: 3 Nimm die Mu nze mit dem ho chsten Betrag, der in n passt und fu ge sie der Lo sungsmenge hinzu Ziehe den Wert der Mu nze von n ab 4 Gib die Lo sungsmenge zuru ck Beispiel: gegebener Betrag: 78ct, Restbetrag: 28ct Jennifer Naumann Gierige Algorithmen 11.Juni 2013 30 / 44

Mu nzwechselproblem - Algorithmus Gieriger Algorithmus 1 n := gegebener Betrag 2 Sortiere die Mu nzen absteigend nach ihrem Wert Solange n > 0: 3 Nimm die Mu nze mit dem ho chsten Betrag, der in n passt und fu ge sie der Lo sungsmenge hinzu Ziehe den Wert der Mu nze von n ab 4 Gib die Lo sungsmenge zuru ck Beispiel: gegebener Betrag: 78ct, Restbetrag: 8ct Jennifer Naumann Gierige Algorithmen 11.Juni 2013 30 / 44

Mu nzwechselproblem - Algorithmus Gieriger Algorithmus 1 n := gegebener Betrag 2 Sortiere die Mu nzen absteigend nach ihrem Wert Solange n > 0: 3 Nimm die Mu nze mit dem ho chsten Betrag, der in n passt und fu ge sie der Lo sungsmenge hinzu Ziehe den Wert der Mu nze von n ab 4 Gib die Lo sungsmenge zuru ck Beispiel: gegebener Betrag: 78ct, Restbetrag: 3ct Jennifer Naumann Gierige Algorithmen 11.Juni 2013 30 / 44

Mu nzwechselproblem - Algorithmus Gieriger Algorithmus 1 n := gegebener Betrag 2 Sortiere die Mu nzen absteigend nach ihrem Wert Solange n > 0: 3 Nimm die Mu nze mit dem ho chsten Betrag, der in n passt und fu ge sie der Lo sungsmenge hinzu Ziehe den Wert der Mu nze von n ab 4 Gib die Lo sungsmenge zuru ck Beispiel: gegebener Betrag: 78ct, Restbetrag: 1ct Jennifer Naumann Gierige Algorithmen 11.Juni 2013 30 / 44

Mu nzwechselproblem - Algorithmus Gieriger Algorithmus 1 n := gegebener Betrag 2 Sortiere die Mu nzen absteigend nach ihrem Wert Solange n > 0: 3 Nimm die Mu nze mit dem ho chsten Betrag, der in n passt und fu ge sie der Lo sungsmenge hinzu Ziehe den Wert der Mu nze von n ab 4 Gib die Lo sungsmenge zuru ck Beispiel: gegebener Betrag: 78ct, Restbetrag: 0ct Jennifer Naumann Gierige Algorithmen 11.Juni 2013 30 / 44

Beispiel Münzwechselproblem - immer greedy? Problem: bei bestimmten Zusammenstellungen von Münzwerten wird mit diesem Algorithmus nicht die optimale Lösung geliefert Münzen mit den Werten 11, 5 und 1 Ziel: Wert 15 Mit Greedy: 11 1 1 1 1 Aber optimale Lösung wäre: 5 5 5 Jennifer Naumann Gierige Algorithmen 11.Juni 2013 31 / 44

Übersicht 1 Einführung Definition Wann darf man gierige Algorithmen anwenden? Abgrenzung zu dynamischer Programmierung 2 Beispiele Fractional Knapsack Scheduling-Probleme Münzwechselproblem Topcoder-Probleme 3 Zusammenfassung Jennifer Naumann Gierige Algorithmen 11.Juni 2013 32 / 44

JingleRingle Aufgabenstellung In einem Online-Spiel gibt es zwei Währungen: jingles und ringles Diese kann man folgendermaßen untereinander austauschen: 1. Der Käufer zahlt dem Verkäufer n ringles 2. Der Verkäufer gibt ihm dafür 1 jingle 3. Der Verkäufer zahlt eine bestimmte Steuer Man besitzt keine jingles, dafür aber beliebig viele ringles Ziel: so viel Gewinn an ringles wie möglich machen Jennifer Naumann Gierige Algorithmen 11.Juni 2013 33 / 44

JingleRingle - Lösungsansatz Allgemeines Gegeben: Angebote für den Kauf von jingles Angebote für den Verkauf von ringles Höhe der Steuer Ziel: maximaler Gewinn an ringles Gieriger Algorithmus 1 Sortiere Kaufangebotsliste absteigend 2 Sortiere Verkaufsangebotsliste aufsteigend 3 for i=0 to min{k.length, V.length} do falls (K[i] tax) > V [i] : Gewinn + = K[i] tax V [i] 4 Gib den Gewinn zurück Jennifer Naumann Gierige Algorithmen 11.Juni 2013 34 / 44

JingleRingle Beispiel Input Kauf jingles {100, 541, 243, 601} Verkauf ringles {603, 142, 25, 338} Steuer 10% Jennifer Naumann Gierige Algorithmen 11.Juni 2013 35 / 44

JingleRingle Beispiel Input Kauf jingles {100, 541, 243, 601} Verkauf ringles {603, 142, 25, 338} Steuer 10% Sortiert rev(sort(kauf jingles)) 601 541 243 100 sort(verkauf ringles) 25 142 338 603 Jennifer Naumann Gierige Algorithmen 11.Juni 2013 35 / 44

JingleRingle Beispiel Input Kauf jingles {100, 541, 243, 601} Verkauf ringles {603, 142, 25, 338} Steuer 10% Sortiert rev(sort(kauf jingles)) 601 541 243 100 sort(verkauf ringles) 25 142 338 603 gewinn - steuer 516 345-119 -513 Jennifer Naumann Gierige Algorithmen 11.Juni 2013 35 / 44

EllysPairs Aufgabenstellung Es sollen für ein Projekt an der Uni Zweiergruppen gebildet werden Gegeben ist ein int-array, das angibt, wie viel der jeweilige Student im Verhältnis weiß und kann Ziel: Bildung von Gruppen, die ungefähr den gleichen Wissensstand haben Jennifer Naumann Gierige Algorithmen 11.Juni 2013 36 / 44

EllysPairs - Lösungsansatz Gieriger Algorithmus 1 Sortiere das Array absteigend 2 Setze i auf den Anfang und j auf das Ende des Arrays 3 Füge die Summe aus array[i] und array[j] dem Ergebnis-Array hinzu 4 Setze i um eine Stelle nach rechts, j um eine Stelle nach links weiter 5 Wiederhole die Schritte 3 und 4 so lange, bis die Mitte des Arrays erreicht ist 6 Gib die Lösungsmenge zurück Jennifer Naumann Gierige Algorithmen 11.Juni 2013 37 / 44

EllysPairs - Beispiel 6 2 8 5 1 3 Jennifer Naumann Gierige Algorithmen 11.Juni 2013 38 / 44

EllysPairs - Beispiel Absteigend nach Wissensstand sortieren: 8 i 6 5 3 2 1 j Jennifer Naumann Gierige Algorithmen 11.Juni 2013 38 / 44

EllysPairs - Beispiel i und j zur Ergebnismenge hinzufügen und beide um eine Stelle weitersetzen 8 6 5 3 2 1 i j Ergebnismenge: 8 1 Jennifer Naumann Gierige Algorithmen 11.Juni 2013 38 / 44

EllysPairs - Beispiel i und j zur Ergebnismenge hinzufügen und beide um eine Stelle weitersetzen 8 6 5 3 2 1 i j Ergebnismenge: 8 1 6 2 Jennifer Naumann Gierige Algorithmen 11.Juni 2013 38 / 44

EllysPairs - Beispiel fertig 8 6 5 3 2 1 i j Ergebnismenge: 8 1 6 2 5 3 Jennifer Naumann Gierige Algorithmen 11.Juni 2013 38 / 44

EllysPairs - Beweisidee Ist das Ergebnis wirklich immer optimal? 1 Aufsteigend sortierte Zahlen: a b c d e f g h i j 2 Paare nach greedy-vorschrift: {a, j}, {b, i}, {c, h}, {d, g}, {e, f } 3 Annahme: {b, i} größtes, {d, g} kleinstes Paar 4 Es gibt beliebig viele weitere Paare zwischen den gezeigten Um das größte Paar zu verkleinern, kann man b durch a oder i durch a, c, d, e, f, g, h ersetzen Fall 1: Ersetze b Neue Paare: {b, j}, {a, i} aber b + j b + i, da j i Fall 2: Ersetze i Neue Paare: {d, i}, {b, g} aber d + i b + i, da h b Andere Richtung (kleinstes Paar vergrößern) analog Jennifer Naumann Gierige Algorithmen 11.Juni 2013 39 / 44

TomekPhone Aufgabenstellung Tomek ist mit den neuen Handytastaturen unzufrieden und hat sich überlegt, ein Handy mit alter Tastatur herauszubringen Er möchte aber eine Tastatur erstellen, die für eine Sprache mit N verschiedenen Buchstaben gilt Es ist schon vorher geplant, wie viele Tasten die Tastatur haben wird und auch, wie viele Buchstaben höchstens eine Taste belegen dürfen Ziel ist, sich eine Tastatur zu überlegen, mit der man so wenig wie möglich Tasten drücken muss Jennifer Naumann Gierige Algorithmen 11.Juni 2013 40 / 44

TomekPhone Beispiel: 7 Zeichen, 3 Tasten, max. 3 Zeichen/Taste s n t h d i u 3 1 5 8 4 3 1 Jennifer Naumann Gierige Algorithmen 11.Juni 2013 41 / 44

TomekPhone Beispiel: 7 Zeichen, 3 Tasten, max. 3 Zeichen/Taste s n t h d i u 3 1 5 8 4 3 1 Zeichen sortiert h t d s i n u 8 5 4 3 3 1 1 Jennifer Naumann Gierige Algorithmen 11.Juni 2013 41 / 44

TomekPhone Beispiel: 7 Zeichen, 3 Tasten, max. 3 Zeichen/Taste s n t h d i u 3 1 5 8 4 3 1 Zeichen sortiert h t d s i n u 8 5 4 3 3 1 1 fertige Tastatur h,s,u d,n t,i Jennifer Naumann Gierige Algorithmen 11.Juni 2013 41 / 44

Zusammenfassung Vor- und Nachteile Laufzeit fast immer O(nlogn) Meist einfach und intuitiv zu entwickeln Aber findet nicht immer optimales Ergebnis Allgemeines Vorgehen zum Lösen gieriger Problemstellungen 1 Sortiere die gegebenen Elemente nach einem passenden Kriterium 2 Solange die Menge der Elemente noch nicht leer: Wähle lokales Optimum und füge es der Lösungsmenge hinzu Entferne das Element aus der Menge 3 Gib Lösungsmenge zurück Das funktioniert zwar nicht immer, aber viele Probleme lassen sich nach diesem Schema lösen. Jennifer Naumann Gierige Algorithmen 11.Juni 2013 42 / 44

Fragen Fragen? Jennifer Naumann Gierige Algorithmen 11.Juni 2013 43 / 44

Quellen Cormen: Introduction to algorithms, Chapter 16 Uwe Schöning: Algorithmik, Kapitel 5 HalloWelt-Vortragsfolien von früheren Semestern http://de.wikipedia.org/wiki/greedy-algorithmus http://www.cs.princeton.edu/ wayne/kleinberg-tardos/ 04GreedyAlgorithms.pdf http://programmingwiki.de/auk/greedy-algorithmen SS10 http://de.wikipedia.org/wiki/euromünzen Bild auf Folie 1: http://wemeantwell.com/blog/wp-content/uploads/2011/04/ ScroogeMcDuck.jpg Jennifer Naumann Gierige Algorithmen 11.Juni 2013 44 / 44