Hallo Welt für Fortgeschrittene



Ähnliche Dokumente
Hallo Welt für Fortgeschrittene

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

Gierige Algorithmen. Seminar Hallo Welt! für Fortgeschrittene. Daniel Danner. 11. Juni Daniel Danner Gierige Algorithmen

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

Grundlagen der Theoretischen Informatik, SoSe 2008

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

1 Vom Problem zum Programm

Leichte-Sprache-Bilder

Statuten in leichter Sprache

Informationsblatt Induktionsbeweis

Anleitung über den Umgang mit Schildern

Manager. von Peter Pfeifer, Waltraud Pfeifer, Burkhard Münchhagen. Spielanleitung

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?

ratgeber Urlaub - Dein gutes Recht

Korrigenda Handbuch der Bewertung

Informatik II Greedy-Algorithmen

1 topologisches Sortieren

Einführung in die Programmierung

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Algorithmen II Vorlesung am

Hilfedatei der Oden$-Börse Stand Juni 2014

Datenexport aus JS - Software

Professionelle Seminare im Bereich MS-Office

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Papa - was ist American Dream?

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Informatik Grundlagen, WS04, Seminar 13

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

6.2 Scan-Konvertierung (Scan Conversion)

Elternzeit Was ist das?

Das Briefträgerproblem

Wachstum 2. Michael Dröttboom 1 LernWerkstatt-Selm.de

Erstellen von x-y-diagrammen in OpenOffice.calc

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Übungen Programmieren 1 Felix Rohrer. Übungen

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

BERECHNUNG DER FRIST ZUR STELLUNGNAHME DES BETRIEBSRATES BEI KÜNDIGUNG

Die Größe von Flächen vergleichen

Geld Verdienen im Internet leicht gemacht

Primzahlen und RSA-Verschlüsselung

Datenbanken Kapitel 2

* Leichte Sprache * Leichte Sprache * Leichte Sprache *

Sortierverfahren. Sortierverfahren für eindimensionale Arrays

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

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

Objektorientierte Programmierung

Kapitel 5: Dynamisches Programmieren Gliederung

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Konzepte der Informatik

SHG INVEST DAS SOLLTEN SIE UNBEDINGT. lesen, bevor Sie selbst verkaufen...

Informationen zum Ambulant Betreuten Wohnen in leichter Sprache

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Inventur. Bemerkung. / Inventur

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

Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen

Kapitalerhöhung - Verbuchung

Catherina Lange, Heimbeiräte und Werkstatträte-Tagung, November

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

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Datenbanken Microsoft Access 2010

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

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.

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

einen Vibrator benutzt; wie man bei einem Kredithai einen Kredit zu 17 Prozent aufnimmt, der in 30 Tagen zur Rückzahlung fällig wird; wie man seinen

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

Das Leitbild vom Verein WIR

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

Beispiel(unten ist der Spielfeldrand):

Internet online Update (Mozilla Firefox)

Nicht kopieren. Der neue Report von: Stefan Ploberger. 1. Ausgabe 2003

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

Programmieren I. Kapitel 7. Sortieren und Suchen

Copyright Sophie Streit / Filzweiber / Fertigung eines Filzringes mit Perlen!

Prozentrechnung. Wir können nun eine Formel für die Berechnung des Prozentwertes aufstellen:

ONLINE-AKADEMIE. "Diplomierter NLP Anwender für Schule und Unterricht" Ziele

Anbindung des eibport an das Internet

sondern alle Werte gleich behandelt. Wir dürfen aber nicht vergessen, dass Ergebnisse, je länger sie in der Vergangenheit

LU-Zerlegung. Zusätze zum Gelben Rechenbuch. Peter Furlan. Verlag Martina Furlan. Inhaltsverzeichnis. 1 Definitionen.

Gantt-Diagramm - Diagramm zur Projektverfolgung

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

Feiertage in Marvin hinterlegen

Hinweise in Leichter Sprache zum Vertrag über das Betreute Wohnen

Frankfurt am Main. Dortmund. Stuttgart. Düsseldorf

Programmentwicklungen, Webseitenerstellung, Zeiterfassung, Zutrittskontrolle

Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6)

Tipps für die praktische Durchführung von Referaten Prof. Dr. Ellen Aschermann

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

Menü auf zwei Module verteilt (Joomla 3.4.0)

Kompetitive Analysen von Online-Algorithmen

Lineare Gleichungssysteme

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Dow Jones am im 1-min Chat

FAQ Spielvorbereitung Startspieler: Wer ist Startspieler?

Whitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager -rückläufer Script. combit GmbH Untere Laube Konstanz

Dann zahlt die Regierung einen Teil der Kosten oder alle Kosten für den Dolmetscher.

Transkript:

Hallo Welt für Fortgeschrittene Gierige Algorithmen Sarah Nuißl Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen

Gliederung Einführung Gierige Algorithmen vs. Dynamisches Programmieren Beispiele TopCoder Probleme Quellenangabe Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 2

Einführung Ansätze für Optimierungsprobleme Gehen Schrittweise durch ein Problem, und treffen bei jedem Schritt eine Auswahl Verwendung von Gierigen Algorithmen Lösung einiger Optimierungsprobleme Methode Zerlegung in mehrere Teilprobleme (Subprobleme) Finden des Lokalen Optimums Was ist jetzt die beste Lösung? Teilprobleme zur Gesamtlösung zusammensetzen Hoffen, dass dies ein globales Optimum ist Wenn nötig, beweisen! Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 3

Einführung Wann kann man ein Problem gierig lösen? 2 Eigenschaften wichtig: Optimale Substructure Wenn Problem optimal gelöst beinhaltet Teilproblem optimal gelöst Greedy choice property Teilproblem lösen ohne Beachtung der Zukunft (andere Subprobleme) Problem optimal gelöst Problem optimal gelöst Optimal Substructure Greedy choice property Teilproblem optimal gelöst Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 4

Einführung Vorteile Schnell Mit passender Vorsortierung meist O(n log n) Kein zusätzlicher Speicherbedarf nötig (vgl. DP) Oft intuitiv lösbar Nachteile Nicht alle lokalen Optima führen zu einer korrekten globalen Lösung Beweis der Korrektheit nötig (oft schwierig) Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 5

Gierige Algorithmen vs. Dynamisches Programmieren GA Schrittweise abarbeiten Schneller Lokales Optimum Intuitiver Ansatz Kein zusätzlicher Speicherbedarf DP Teilprobleme lösen, Zwischenergebnisse nutzen oft langsamer Globales Optimum Viele Überlegung notwendig oft viel zu viel Aufwand und Speicherbedarf ICPC Ziel: Finden des globalen Optimums Probleme mit lokales Optimum globales Optimum Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 6

Gierige Algorithmen vs. Dynamisches Programmieren Gieriger Ansatz: Teilproblem lösen, dann nächstes Teilproblem lösen Wahl des lokalen Optimums treffen, bevor andere Subprobleme gelöst werden Top-down Ansatz Eine gierige Wahl nach der anderen Jedes Problem wird zu einem kleineren reduziert DP-Ansatz: Aufteilung in Unterprobleme Lösen dieser inkl. Zwischenspeicherung alle Kombinationen ausprobieren Beste Lösung aussuchen Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 7

Fractional vs. 0/1 Knapsack Szenario: Diebe in einer Bank wollen Beute einpacken Beute hat Gewicht und Geldwert Diebe sind alt und können nur ein bestimmtes Gewicht tragen 2 Varianten: Fractional Knapsack: Bruchteile der Gegenstände wählbar 0/1 Knapsack: nur ganze Gegenstände wählbar Aufgabenstellung Wie kann man einen Maximalwert an Ausbeute machen, ohne dabei das Maximalgewicht zu überschreiten? Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 8

Fractional Knapsack Lösungsansatz Tabelle mit Verhältnis /kg aufstellen nach höchstem Verhältnis sortieren mit höchstem Verhältnis beginnend einpacken passt es nicht ganz rein Bruchteil nehmen 1kg 7kg 8kg 300 1400 8000 15kg Fassungsvermögen 1. Beispiel für gierigen Algorithmus Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 9

Fractional Knapsack Scheine Beutel Goldnuggets Gewicht und Wert 1kg auf 300 7kg auf 1400 8kg auf 800 Verhältnis 300 /kg 200 /kg 100 /kg 15kg Fassungsvermögen Geld Gewicht = 1*300 1 +1*1400 +7 +(7/8)*800 +(7/8)*8 = 2400 = 15kg Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 10

0/1 Knapsack Problem: ganz oder gar nicht Scheine Beutel Goldnuggets Gewicht und Wert 1kg auf 300 7kg auf 1400 8kg auf 800 15kg Verhältnis 300 /kg 200 /kg 100 /kg Greedy: = 1*300+1*1400 = 1700 DP: = 1*1400 + 1*800 = 2200 Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 11

Münzwechsel Szenario: Kassiererin an der Kasse soll Geld zurückgeben Gegeben: Währung: 1c, 2c, 5c, 10c, 20c, 50c, 1, 2, 5, 10 Rückgabebetrag Aufgabe So wenig Scheine und Münzen wie möglich herausgeben Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 12

Münzwechsel Lösungsansatz (gierig) 1. Wähle größtmögliche Münze/Schein 2. Füge diese der Endlösung hinzu und ziehe diese Münze vom Restbetrag ab 3. if (Restbetrag Münzwert) GOTO 2 4. if (Restbetrag 0) GOTO 1 Beispiel: 3,22 Restbetrag: 3,22 1,22 0,22 0,02 0,00 Auswahl: Beweis ob Münzsystem korrekt aufgebaut ist, ist schwierig. Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 13

Münzwechsel Gierig immer möglich? Leider nicht. Gegenbeispiel 1 U.S. Briefmarken: 1, 10, 21, 34, 70, 100, 350, 1225, 1500 GA: 140 = 100 + 34 + 1 + 1 + 1 + 1 + 1 + 1 Optimal/DP: 140 = 70 + 70 Gegenbeispiel 2 Fiktive Währung: 1Krone, 7Kronen, 10Kronen GA: 15 Kronen = 10 + 1 + 1 + 1 + 1 + 1 Optimal/DP: 15 Kronen = 7 + 7 + 1 GA kann auch keine Lösung finden. greedy Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 14

LKW-Fahrerproblem Szenario: Auf dem Weg zum ICPC mit einer Horde ungeduldiger Informatiker Gegeben: Route Reichweite mit vollem Tank Liste der Tankstellen auf der Route Aufgabe Minimale Anzahl an Tankstops Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 15

LKW-Fahrerproblem Gieriger Ansatz solange Ziel nicht erreicht Tanke bei der am weitesten entfernt liegenden Tankstelle, welche noch erreicht werden kann Wenn Liste der Tankstellen bereits sortiert: Aufwand O(n) Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 16

Datensicherung auf Band Szenario Die Sicherungsdateien einer Firma werden alle auf Band gespeichert. Leider ist das System noch so veraltet, dass wir nur durch vorwärts- und rückwärtsspulen an die Dateien kommen. Gegeben n Dateien Array mit der Länge jeder Datei: L[1 n] Datei i hat die Länge L[i] Aufgabe Der Chef möchte einen minimalen Aufwand für das lesen der Dateien vom Band haben Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 17

Datensicherung auf Band Frage: Nach welcher Methode sollte man die Dateien auf Band speichern um ein bestmögliches Ergebnis zu bekommen? Annahme: Speicherung von 1 bis n Kosten Zugriff auf k-te Datei Grund: vorher muss durch alle anderen Dateien gespult werden Annahme: Zugriff auf alle Dateien gleich wahrscheinlich Erwartete Kosten Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 18

Datensicherung auf Band Aus Änderung der Sortierung folgt Änderung der Kosten Lesen einiger Dateien wird teurer und dafür andere günstiger π(i) ist Index einer Datei, gespeichert an der Stelle i Kosten Permutation π: Frage: Welche Sortierung bringt minimale Kosten? Antwort: Sortierung nach aufsteigender Größe Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 19

Datensicherung auf Band Lemma: Beweis: Annahme für ein beliebiges i: L[π(i)] > L [π(i+1)] a = π(i) und b = π(i+1) Datei a und b vertauschen Kosten um auf a zuzugreifen erhöht sich um L[b] Kosten um auf b zuzugreifen reduzieren sich um L[a] Gesamtveränderung: (L[b]-L[a])/n Verbesserung, da L[b] < L[a] Vertauschung von ungeordneten benachbarten Paaren bringt eine Verbesserung der Kosten Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 20

Datensicherung auf Band Minimierung der totalen erwarteten Kosten Günstigste Datei an den Anfang und dann rekursiv alle anderen schreiben lassen Einfach die beste lokale Wahl treffen Kein DP oder Backtracking nötig Mit gutem Sortieralgorithmus ist der Aufwand O(n log n) + die Zeit zum Schreiben der Dateien Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 21

Datensicherung auf Band mit Zugriffshäufigkeiten Annahme: Dateigröße L[i] gleich groß für alle i Nutzung der Dateien unterschiedlich oft Array F[1..n] mit Zugriffshäufigkeiten für jede Datei auf Datei i wird genau F[i]-mal zugegriffen Gesamtkosten um auf alle Dateien zuzugreifen Welche Sortierung ist nötig um die Kosten zu minimieren? Vom Häufigsten zum Seltensten Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 22

Datensicherung auf Band mit Zugriffshäufigkeiten Annahme: Dateigröße und Nutzung unterschiedlich Frage: Welche Sortierung? Antwort: Nach Quotient L/F sortieren Lemma: Beweis: Annahme: L[π(i)]/F[π(i)] > L [π(i+1)]/f[π(i+1)] a = π(i) und b = π(i+1) Datei a und b vertauschen Kosten um auf a zuzugreifen erhöht sich um L[b] Kosten um auf b zuzugreifen reduzieren sich um L[a] Gesamtveränderung: L[b]F[a]-L[a]F[b] Verbesserung, da Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 23

Scheduling Probleme (1) Problem: Urlaubsplanung mit zu vielen Aktivitäten, die sich überschneiden. Man möchte aber soviele Aktivitäten machen, wie möglich ist. Frage: Wie finde ich das Maximum an Aktivitäten? Vorschläge Sortieren nach Frühester Startzeit Frühester Endzeit Kürzeste Dauer Wenigsten Konflikten Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 24

Scheduling Probleme (1) Problem: Urlaubsplanung mit zu vielen Aktivitäten, die sich überschneiden. Man möchte aber soviele Aktivitäten machen, wie möglich ist. Frage: Wie finde ich das Maximum an Aktivitäten? Vorschläge Sortieren nach Frühester Startzeit Frühester Endzeit Kürzeste Dauer Wenigsten Konflikten Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 25

Scheduling Probleme (1) Problem: Urlaubsplanung mit zu vielen Aktivitäten, die sich überschneiden. Man möchte aber soviele Aktivitäten machen, wie möglich ist. Frage: Wie finde ich das Maximum an Aktivitäten? Vorschläge Sortieren nach Frühester Startzeit Frühester Endzeit Kürzeste Dauer Wenigsten Konflikten Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 26

Scheduling Probleme (1) Problem: Urlaubsplanung mit zu vielen Aktivitäten, die sich überschneiden. Man möchte aber soviele Aktivitäten machen, wie möglich ist. Frage: Wie finde ich das Maximum an Aktivitäten? Vorschläge Sortieren nach Frühester Startzeit Frühester Endzeit Kürzeste Dauer Wenigsten Konflikten Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 27

Scheduling Probleme (1) Problem: Urlaubsplanung mit zu vielen Aktivitäten, die sich überschneiden. Man möchte aber soviele Aktivitäten machen, wie möglich ist. Frage: Wie finde ich das Maximum an Aktivitäten? Vorschläge Sortieren nach Frühester Startzeit Frühester Endzeit Kürzeste Dauer Wenigsten Konflikten Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 28

Scheduling Probleme (1) Pseudocode: 1. Sortiere nach aufsteigenden Endzeitpunkten 2. Wähle einen Termin nach dem anderen, wenn er kompatibel ist mit dem bereits ausgewählten 3. GOTO 2 bis Listenende erreicht ist Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 29

Scheduling Probleme (1) Beispiel in Bildern Unsortiert und dann nach Endzeit sortiert Warum richtiger Ansatz? Frühestes Ende: lässt am meisten Platz übrig für andere Aktivitäten a1 auswählen Nächstes Subproblem: Aktivität finden, die nach a1 startet und frühest möglich endet Nicht immer Beweis nötig Beweisskizze/Intuition hilft a1 a1 Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 30

Scheduling Probleme (2) Problem: Schulstunden in unterschiedlichen Räumen müssen geplant werden. Gegeben: Start- und Endzeitpunkt der Stunde Jede Stunde muss in einem Raum sein Zwei Schulstunden können nicht gleichzeitig im gleichen Raum stattfinden Gesucht: Minimale Anzahl an Räumen, damit alle Schulstunden stattfinden können Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 31

Scheduling Probleme (2) Vorschläge Sortieren nach Frühester Endzeit Kürzeste Dauer Wenigsten Konflikten Frühester Startzeit Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 32

Scheduling Probleme (2) Pseudocode: 1. Sortiere nach aufsteigenden Startpunkt 2. if(schulstunde kompatibel mit einem Raum) buche Schulstunde für diesen Raum else: reserviere neuen Raum und buche Schulstunde 3. GOTO 2 bis Listenende erreicht ist Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 33

Scheduling Problem (3) Minimize Lateness Gegeben: Liste von Jobs; hier a-f Dauer für jeden Job Frist der Jobs Gesucht: Scheduling-Strategie, bei der die maximale Fristüberschreitung minimal gehalten wird Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 34

Scheduling Problem (3) Minimize Lateness Lösung: Sortierung nach aufsteigendem Fristende Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 35

TopCoder Problem (1) - GoldMine Problem: Der Chef mehrerer Goldminen möchte den größten Profit aus den Mine schlagen Alle Minenarbeiter sollen so auf die Minen aufgeteilt werden, dass der Gesamtprofit maximiert wird. Gegeben Für jede Mine max. 6 Minenarbeiter Tabelle mit dem absoluten Profit für zwei Minen, je nach Anzahl der Arbeiter: 0 Arbeiter 1 Arbeiter 2 Arbeiter 3 Arbeiter 4 Arbeiter 5 Arbeiter 6 Arbeiter Mine 1 Mine 2 0 57 87 87 67 47 27 0 52 66 75 75 66 48 Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 36

TopCoder Problem (1) - GoldMine Vorgehen: Herausfinden, wie viel ein Arbeiter in einer Mine an Mehrwert bringt Differenz aus Gewinn auf der Mine mit dem Arbeiter und ohne Mine 1 Mine 2 Start Arbeiter 1 Arbeiter 2 Arbeiter 3 Arbeiter 4 Arbeiter 5 Arbeiter 6-57 Mit nur 1 Arbeiter Optimale Wahl: zur Mine schicken wo er am meisten Profit bringt Mehr als 1 Arbeiter 87-57= 30 87-87= 0 87-67= -20 Frage: Bringt Optimale Wahl für 1 Arbeiter den besten globalen Profit? Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 37 67-47= -20 47-27= -20-52 14 9 0-9 -20

TopCoder Problem (1) - GoldMine Beispiel: 4 verfügbare Arbeiter Tabelle mit Profit den jeder einzelne Arbeiter bringt Start Arbeiter 1 Arbeiter 2 Arbeiter 3 Arbeiter 4 Arbeiter 5 Arbeiter 6 Mine 1-57 30 0-20 -20-20 Mine 2-52 14 9 0-9 -20 Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 38

TopCoder Problem (1) - GoldMine Beispiel: 4 verfügbare Arbeiter Tabelle mit Profit den jeder einzelne Arbeiter bringt Start Arbeiter 1 Arbeiter 2 Arbeiter 3 Arbeiter 4 Arbeiter 5 Arbeiter 6 Mine 1-57 30 0-20 -20-20 Mine 2-52 14 9 0-9 -20 Arbeiter 1 in Mine 1 Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 39

TopCoder Problem (1) - GoldMine Beispiel: 4 verfügbare Arbeiter Tabelle mit Profit den jeder einzelne Arbeiter bringt Start Arbeiter 1 Arbeiter 2 Arbeiter 3 Arbeiter 4 Arbeiter 5 Arbeiter 6 Mine 1-57 30 0-20 -20-20 Mine 2-52 14 9 0-9 -20 Arbeiter 1 in Mine 1 Arbeiter 2 in Mine 2 Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 40

TopCoder Problem (1) - GoldMine Beispiel: 4 verfügbare Arbeiter Tabelle mit Profit den jeder einzelne Arbeiter bringt Start Arbeiter 1 Arbeiter 2 Arbeiter 3 Arbeiter 4 Arbeiter 5 Arbeiter 6 Mine 1-57 30 0-20 -20-20 Mine 2-52 14 9 0-9 -20 Arbeiter 1 in Mine 1 Arbeiter 2 in Mine 2 Arbeiter 3 in Mine 1 Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 41

TopCoder Problem (1) - GoldMine Beispiel: 4 verfügbare Arbeiter Tabelle mit Profit den jeder einzelne Arbeiter bringt Start Arbeiter 1 Arbeiter 2 Arbeiter 3 Arbeiter 4 Arbeiter 5 Arbeiter 6 Mine 1-57 30 0-20 -20-20 Mine 2-52 14 9 0-9 -20 Arbeiter 1 in Mine 1 Arbeiter 2 in Mine 2 Arbeiter 3 in Mine 1 Arbeiter 4 in Mine 2 Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 42

TopCoder Problem (2) - JingleRingle Aufgabenstellung: 2 Währungen in einem Onlinegame: Jingles und Ringles Spieler können diese untereinander tauschen Jeder Handel beinhaltet folgendes: Allg: Abmachung zwischen 2 Spielern einem Verkäufer, der 1 Jingle verkaufen möchte & ein Käufer der für einen Preis von X (integer) Ringles diesen kaufen möchte Ablauf 1. Käufer zahlt X Ringles an den Verkäufer 2. Verkäufer zahlt 1 Jingle an den Käufer 3. Verkäufer muss eine Gebühr von ((X*tax)/100) an die Bank zahlen Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 43

TopCoder Problem (2) - JingleRingle Aufgabe Man hat viele Ringles aber keine Jingles Man möchte Handel betreiben um Profit zu machen Angebote von potentiellen Käufern: Int[] buyoffers Jedes Element repräsentiert ein Angebot eines Spielers Angebote von Verkäufern: Int[] selloffers Jedes Element repräsentiert den Betrag den ein Verkäufer will Frage: Wie bekommt man das Maximum an Profit? Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 44

TopCoder Problem (2) - JingleRingle Angebote in Paaren akzeptieren: 1 Jingle kaufen, dann verkaufen Reihenfolge irrelevant Relevant: welche und wie viele Paare wählen? Gieriger Ansatz: In jedem Schritt Aus den bisher nicht angenommenen Angeboten: Akzeptiere Verkaufsangebot s i mit niedrigstem Preis und das Ankaufsangebot b j mit höchsten Preis bis b j s i floor(b j *tax/100) annähernd Null ist oder es keine weiteren Angebote gibt Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 45

TopCoder Problem (2) - JingleRingle #include <vector> #include <cmath> #include <algorithm> using namespace std; int f(int b, int t) { return b-b*t/100; } class JingleRingle { public: int profit (vector<int> b, vector<int> s, int t) { int ans=0; sort (b.begin(), b.end()); reverse (b.begin(), b.end()); sort (s.begin(), s.end()); int i; for (i=0; i<b.size() && i<s.size(); ++i) { if (f(b[i],t)-s[i]>0) ans+=f(b[i],t)-s[i]; } return ans; } }; Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 46

TopCoder Problem (3) - FuzzyLife Aufgabenstellung: Das Game of Life ist ein Simulationsspiel, in dem man von einer Startpunkt aus dessen Evolution über die Zeit beobachten kann. Infinites 2-dim. Gitter aus Zellen Jede Zelle ist entweder Tod oder Lebendig Jede Zelle hat 8 Nachbarn (2 horizontal, 2 vertikal, 4 diagonal) Wenn die Anfangsbelegung des Gitters bekannt ist, beginnt die Veränderung wie folgt Jede lebende Zelle mit weniger als 2 oder mehr als 3 lebenden Nachbarn stirbt Jede tote Zelle mit genau 3 lebenden Nachbarn wird lebendig Alle anderen Zellen bleiben wie sie sind Alle Veränderungen erfolgen gleichzeitig Berechnungen werden vorher gemacht Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 47

TopCoder Problem (3) - FuzzyLife Gegeben: Anfangsbelegung des rechteckigen Gitters: String[] grid 3 Typen möglich: lebend 1 (one), tod 0 (zero), unbekannt -? j-ter char des i-ten Elements beschreibt die Zelle in Zeile i und Spalte j Keine Zelle hat mehr als einen Nachbarn vom Typ? Alle Zellen außerhalb von grid zählen als tod Aufgabe: Ersetze die unbekannten Zellen so, dass nach einem Schritt die Anzahl an lebenden Zellen maximiert wird Gebe diesen Wert zurück Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 48

TopCoder Problem (3) - FuzzyLife Gieriger Ansatz Jede Zelle mit? genau betrachten Direkte Umgebung von? ansehen Entscheidung treffen 0 1 1 0 1 1 0 0 1 0 0 1 3 lebende Zellen 0 1 1 0 1 0 0 0 0 0 0? 1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 1 1 1 0 1 0 1 0 5 lebende Zellen Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 49

TopCoder Problem (3) - FuzzyLife? 1 1? 0 1 1 0 1 0 0 1? 1 1? 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 0 1 0 0 0 1 In beiden Fällen führt die 1 zu mehr lebenden Zellen. 1 1 0 1 1 1 0 1 1 Clou: die Zellen außerhalb des Gitter können auch lebendig werden Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 50

TopCoder Problem (3) - FuzzyLife Ergebnis: 12 lebende Zellen? 1 1? 0 1 1 0 1 0 0 1? 1 1? 1 1 1 1 0 1 1 0 1 0 0 1 1 1 1 1 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 0 0 0 1 1 0 0 Warum sind die Entscheidungen unabhängig? alles wird in einem Schritt berechnet nur direkte Nachbarn sind relevant? auf lebend oder tod setzen ist für alle anderen Zellen erst im nächsten Schritt relevant Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 51

The E.N.D. The point is, ladies and gentleman, greed is good. Greed works, greed is right. Greed clarifies, cuts through, and captures the essence of the evolutionary spirit. Greed in all its forms, greed for life, money, love, knowledge has marked the upward surge in mankind. And greed mark my words will save not only Teldar Paper but the other malfunctioning corporation called the USA. Gordon Gekko [Michael Douglas], Wall Street (1987) There is always an easy solution to every human problem neat, plausible, and wrong. H. L. Mencken, The Divine Afflatus, New York Evening Mail (November 16, 1917) Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 52

Quellenangabe 01 Introduction to Algorithms, T. H. Cormen, C. E. Leiserson, R. L. Rivest und C. Stein 02 http://www.cs.princeton.edu/courses/archive/spring13/cos423/lectures/04greedyalgorithmsi -2x2.pdf 03 http://apps.topcoder.com/forums/?module=thread&threadid=698567&start=0&mc=2 JingleRingle: http://community.topcoder.com/stat?c=problem_statement&pm=10896 FuzzyLife: http://community.topcoder.com/stat?c=problem_statement&pm=10911 04 http://web.engr.illinois.edu/~jeffe/teaching/algorithms/notes/07-greedy.pdf 05 Seminarvortrag 2010 von Daniel Danner 06 Seminarvortrag 2014 von Alexander Dietsch 07 Topcoder: http://www.topcoder.com/tc?module=static&d1=tutorials&d2=greedyalg 08 http://www.cis.upenn.edu/~matuszek/cit594-2007/lectures/39-greedy.ppt Bilder US Briefmarken: 02 LKW-Fahrer-Problem: 05 Scheduling-Problem (1&2): 02 Scheduling-Problem (3): 05 Gierige Algorithmen Sarah Nuißl 27.05.2015 Folie 53