Algorithmen und Datenstrukturen 2

Ähnliche Dokumente
Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

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

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

Dynamische Programmierung. Problemlösungsstrategie der Informatik

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

Dynamisches Programmieren - Problemstruktur

3. Musterlösung. Problem 1: Boruvka MST

Das Briefträgerproblem

4 Greedy-Algorithmen (gierige Algorithmen)

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

Algorithmen und Datenstrukturen 2

Routing Algorithmen. Begriffe, Definitionen

Vorlesung 4 BETWEENNESS CENTRALITY

Dynamische Optimierung. Kapitel 4. Dynamische Optimierung. Peter Becker (H-BRS) Operations Research II Wintersemester 2014/ / 206

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

ADS: Algorithmen und Datenstrukturen 2

Algorithmen II Vorlesung am

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

Algorithmen und Datenstrukturen 2

Theoretische Informatik SS 03 Übung 11

Statistische Untersuchungen zu endlichen Funktionsgraphen

Einstieg in die Informatik mit Java

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

Analysis I: Übungsblatt 1 Lösungen

14. Rot-Schwarz-Bäume

(27 - Selbstanordnende lineare Listen)

Wiederholung zu Flüssen

Algorithmen und Datenstrukturen 1 Kapitel 3

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

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort.

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Probeklausur zur Vorlesung Berechenbarkeit und Komplexität

Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13)

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Kapitel 10

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

Effiziente Algorithmen I

Zahlen und metrische Räume

Lineare Gleichungssysteme

Gruppenunterricht zum Thema: Sortierverfahren. Berufsschule / Gymnasium

Kapitel 4: Minimal spannende Bäume Gliederung der Vorlesung

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

Seminar über aktuelle Forschungsthemen in der Algorithmik, Dozent Prof. Dr. Alt;

Maximale s t-flüsse in Planaren Graphen

1 Vom Problem zum Programm

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

Programmieren, Algorithmen und Datenstrukturen II 8. Allgemeine Lösungsverfahren

Institut für Mathematik Geometrie und Lineare Algebra J. Schönenberger-Deuel. Aufgabe 1. Wir geben nur zwei von sehr vielen möglichen Strategien.

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Datenstrukturen & Algorithmen

Technische Universität München Zentrum Mathematik Propädeutikum Diskrete Mathematik. Weihnachtsblatt

Mathematik 1 für Informatik Inhalt Grundbegrie

Seminar Kompressionsalgorithmen Huffman-Codierung, arithmetische Codierung

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

3.2 Lineare Optimierung (Entscheidungen unter Sicherheit)

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

Scheduling-Theorie. Mathematische Modelle und Methoden für deterministische Scheduling-Probleme. LiSA - A Library of Scheduling Algorithms

Maximale s t-flüsse in Planaren Graphen

Anmerkungen zur Übergangsprüfung

Algorithmen und Datenstrukturen 2

Übungen zu Programmierung I - Blatt 8

Uninformierte Suche in Java Informierte Suchverfahren

Anhang 6. Eingangstest II. 1. Berechnen Sie den Durchschnitt von 6 + 3,9 + 12, 0 = 2. Berechnen Sie: : = 3. Berechnen Sie: = 3 und 6

Algorithmen zur Berechnung von Matchings

Algebra und Diskrete Mathematik, PS3. Sommersemester Prüfungsfragen

Datenstrukturen und Algorithmen

NP-Vollständigkeit. Krautgartner Martin ( ) Markgraf Waldomir ( ) Rattensberger Martin ( ) Rieder Caroline ( )

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

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

Anwendungen des Fréchet-Abstandes Das Constrained Free Space Diagram zur Analyse von Körperbewegungen

Kapitel 5: Dynamisches Programmieren Gliederung

Einführung in Heuristische Suche

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

Vorlesung. Einführung in die mathematische Sprache und naive Mengenlehre

3 Vom Zählen zur Induktion

1 Zahlentheorie. 1.1 Kongruenzen

Algorithmische Bioinformatik

9.2 Invertierbare Matrizen

Graphen: Datenstrukturen und Algorithmen

2 Euklidische Vektorräume

JAVA - Suchen - Sortieren

Im gesamten Kapitel sei Ω eine nichtleere Menge. Wir bezeichnen die Potenzmenge

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Unter dem Symbol n! (gelesen n Fakultät) versteht man das Produkt der natürlichen Zahlen von 1 bis n.

Informatik II Greedy-Algorithmen

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

(Man sagt dafür auch, dass die Teilmenge U bezüglich der Gruppenoperationen abgeschlossen sein muss.)

Mathematische Grundlagen der Computerlinguistik

Codierung, Codes (variabler Länge)

DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2)

Vorlesung 1: Einleitung

2. Lernen von Entscheidungsbäumen

Bestimmung einer ersten

Mengen und Abbildungen

Einführung in die Informatik 2

1. Einleitung wichtige Begriffe

2 Rationale und reelle Zahlen

C++, LEDA und STL Visualisierung minimal/maximal aufspannender Bäume

Transkript:

Algorithmen und Datenstrukturen 2 Sommersemester 2009 11. Vorlesung Uwe Quasthoff Universität Leipzig Institut für Informatik quasthoff@informatik.uni-leipzig.de

Das Rucksack-Problem Ein Dieb, der einen Safe ausraubt, findet in ihm N Typen von Gegenständen unterschiedlicher Größe und unterschiedlichen Werts, hat aber nur einen kleinen Rucksack der Größe M zur Verfügung, um die Gegenstände zu tragen. Das Rucksack-Problem besteht darin, diejenige Kombination von Gegenständen zu finden, die der Dieb für seinen Rucksack auswählen sollte, so dass der Gesamtwert der von ihm geraubten Gegenstände maximal wird. Beispiel: Der Rucksack besitzt ein Fassungsvermögen von 17, der Safe enthält viele Gegenstände mit unterschiedlichen Größen und den angegebenen Werten. U. Quasthoff Algorithmen und Datenstrukturen 2 2

Abbildung zum Rucksack-Problem Größe 3 4 7 8 9 Wert 4 5 10 11 13 Bezeichnung A B C D E Der Dieb kann dann 5 Gegenstände A ( jedoch nicht 6) mitnehmen, so dass die gesamte Beute den Wert 20 hat, oder er kann seinen Rucksack mit einem D und einem E füllen, was einen Gesamtwert von 24 ergibt, oder er kann andere Kombinationen ausprobieren. Doch für welche Kombination wird der Gesamtwert maximal? U. Quasthoff Algorithmen und Datenstrukturen 2 3

Bedeutung des Rucksack-Problems auch im kommerziellen Bereich: Z. B. ist es für eine Reederei von Interesse, die beste Möglichkeit zu kennen, wie ein Lastkraftwagen oder ein Transportflugzeug mit Gütern für die Verschiffung beladen werden kann. Bei solchen Anwendungsfällen können auch andere Varianten des Problems auftreten: Es könnte z. B. sein, dass von jedem Gegenstand nur eine begrenzte Anzahl vorhanden ist. Für viele solche Varianten ist der gleiche Ansatz geeignet. Zur Lösung des Rucksack-Problems mit Hilfe der dynamischen Programmierung berechnet man die beste Kombination für alle Größen eines Rucksacks bis M. U. Quasthoff Algorithmen und Datenstrukturen 2 4

Algorithmus cost [i]: der größte Wert, der mit einem Rucksack mit dem Fassungsvermögen i erzielt werden kann best [i]: das letzte Element, das hinzugefügt wurde, um das Maximum zu realisieren - Zuerst berechnet man für alle Größen des Rucksacks den maximalen Wert, wenn nur Elemente vom Typ A verwendet werden. - Danach berechnet man den maximalen Wert, wenn nur Elemente A und B verwendet werden. - usw. Die Lösung reduziert sich auf eine einfache Berechnung von cost [i]. Annahme: Auswahl des Elements j für den Rucksack, dann wäre der beste Gesamtwert, der erzielt werden könnte val [j] (für das Element) + cost [i - size [j]] (um den Rest des Rucksacks aufzufüllen). Wenn dieser Wert den besten Wert übersteigt, der ohne ein Element j erreicht werden kann, aktualisiert man cost [i] und best [i]; andernfalls lässt man diese Größen unverändert. U. Quasthoff Algorithmen und Datenstrukturen 2 5

Berechnung Diese Berechnung kann in sehr effizienter Weise realisiert werden, indem die Operationen in einer zweckmäßigen Reihenfolge ausgeführt werden: for ( j = 1 ; j <= N ; j ++ ) { Schleife über die Objekttypen for ( i = 1 ; i <= M ; i++ ) { Schleife über die Größe des Rucksacks if ( i >= size[j] ) { if ( cost[i] < cost[i - size[j]] + val[j] ) { cost[i] = cost[i - size[j]] + val[j] ; best[i] = j ; } } } } U. Quasthoff Algorithmen und Datenstrukturen 2 6

Lösung des Rucksack-Beispiels k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 j = 1 cost [k] 0 0 4 4 4 8 8 8 12 12 12 16 16 16 20 20 20 best [k] - - A A A A A A A A A A A A A A A j = 2 cost [k] 0 0 4 5 5 8 9 10 12 13 14 16 17 18 20 21 22 best [k] - - A B B A B B A B B A B B A B B j = 3 cost [k] 0 0 4 5 5 8 10 10 12 14 15 16 18 20 20 22 24 best [k] - - A B B A C B A C C A C C A C C j = 4 cost [k] 0 0 4 5 5 8 10 11 12 14 15 16 18 20 21 22 24 best [k] - - A B B A C D A C C A C C D C C j = 5 cost [k] 0 0 4 5 5 8 10 11 13 14 15 17 18 20 21 23 24 best [k] - - A B B A C D E C C E C C D E C U. Quasthoff Algorithmen und Datenstrukturen 2 7

Erklärung zur Lösung des Beispiels Das erste Zeilenpaar zeigt den maximalen Wert (den Inhalt der Felder cost und best), wenn nur Elemente A benutzt werden; das zweite Zeilenpaar zeigt den maximalen Wert, wenn nur Elemente A und B verwendet werden, usw. Der höchste Wert, der mit einem Rucksack der Größe 17 erreicht werden kann, ist 24. Im Verlaufe der Berechnung dieses Ergebnisses hat man auch viele Teilprobleme gelöst, z. B. ist der größte Wert, der mit einem Rucksack der Größe 16 erreicht werden kann, 22, wenn nur Elemente A, B und C verwendet werden. Der tatsächliche Inhalt des optimalen Rucksacks kann mit Hilfe des Feldes best berechnet werden. Per Definition ist best[m] in ihm enthalten, und der restliche Inhalt ist der gleiche wie im optimalen Rucksack der Größe M - size [best [M]] usw. U. Quasthoff Algorithmen und Datenstrukturen 2 8

Eigenschaften Für die Lösung des Rucksack-Problems mit Hilfe der dynamischen Programmierung wird eine zu N M proportionale Zeit benötigt. Somit kann das Rucksack-Problem leicht gelöst werden, wenn M nicht groß ist; für große Fassungsvermögen kann die Laufzeit jedoch unvertretbar groß werden. Eine grundlegende Schwierigkeit ist es, dass das Verfahren nicht anwendbar ist, wenn M und die Größen oder Werte z. B. reelle Zahlen anstatt ganzer Zahlen sind. Wenn jedoch die Fassungsvermögen sowie die Größen und Werte der Gegenstände ganze Zahlen sind, so gilt das grundlegende Prinzip, dass optimale Entscheidungen nicht geändert werden müssen, nachdem sie einmal getroffen wurden. Jedesmal, wenn dieses allgemeine Prinzip zur Anwendung gebracht werden kann, ist die dynamische Programmierung anwendbar. U. Quasthoff Algorithmen und Datenstrukturen 2 9

Greedy-Algorithmus I Greedy-Algorithmen sind mit dem dynamischen Programmieren verwandt, jedoch einfacher. Die Grundsituation ist dieselbe: Es geht um ein Optimierungsproblem; es soll sukzessiv eine optimale Lösung - in Bezug auf eine gegebene Bewertungsfunktion - konstruiert werden. Während man beim dynamischen Programmieren solche optimale Lösung für alle kleineren Teilprobleme konstruiert und mit Hilfe dieser in einer Tabelle eingetragenen Daten die nächst größere optimale Lösung konstruiert, verzichtet man bei Greedy auf die Buchführung mittels einer Tabelle. Stattdessen wird der nächste Erweiterungsschritt zu einer (hoffentlich) optimalen Lösung lediglich auf Grund der lokal verfügbaren Informationen getätigt. U. Quasthoff Algorithmen und Datenstrukturen 2 10

Greedy-Algorithmus II Annahme: Es gibt eine Gewichtsfunktion w, die die Güte einer Lösung (auch einer Teillösung) misst. Es soll eine Lösung mit maximalen w-wert konstruiert werden. 1. Starte mit der leeren Lösung. 2. Erweitere die bisher konstruierte Teillösung wie folgt: Wenn zur Erweiterung dieser Teillösung k Erweiterungsmöglichkeiten zur Verfügung stehen, die auf die vergrößerten Teillösungen l 1,..., l k führen, wähle diejenige Teillösung l i mit w(l i ) maximal. Der Name Greedy = gefräßig erklärt sich dadurch, dass ein Greedy-Algorithmus nach der Methode Nimm immer das größte Stück vorgeht. Dieses Greedy-Prinzip kann in vielen Fällen funktionieren und tatsächlich auf eine optimale Lösung führen - ohne den Aufwand, der bei dynamischem Programmieren betrieben werden muss. U. Quasthoff Algorithmen und Datenstrukturen 2 11

Teilmengensystem Sei E eine endliche Menge, U eine Menge von Teilmengen von E. (E,U) heißt Teilmengensystem, falls gilt: 1. {} U; 2. A B, B U => A U Das zu (E, U) gehörige Optimierungsproblem besteht darin, für eine beliebige Gewichtsfunktion w : E Z eine in U maximale Menge T ( bzgl. ) zu finden, deren Gesamtgewicht maximal ist. w (T) = w ( e ) e T U. Quasthoff Algorithmen und Datenstrukturen 2 12

Kanonischer Greedy-Algorithmus Der einem Teilmengensystem (E, U) und Gewichtsfunktion w : E Z zugeordnete kanonische Greedy-Algorithmus für diese Aufgabe arbeitet wie folgt: Ordne alle Elemente in E nach absteigendem Gewicht: w ( e 1 )... w (e n ) T = ; for ( k = 1; k <= n; k++) if ( T {e k } U ) T = T {e k }; Ausgabe der Lösung T; (Soll alternativ eine maximale Menge in U mit minimalem Gewicht gefunden werden, so ordne man zu Beginn die Elemente von E nach aufsteigendem Gewicht). Dieser Algorithmus liefert allerdings nicht immer die optimale Lösung. U. Quasthoff Algorithmen und Datenstrukturen 2 13

Beispiel Sei E = { e 1, e 2, e 3 } U = {, {e 1 }, {e 2 }, {e 3 }, {e 2,e 3 } } mit w(e 1 ) = 3 w(e 2 ) = w(e 3 ) = 2 Dann liefert der kanonische Greedy-Algorithmus die Lösung T = {e 1 } mit w(t) = 3, während die optimale Lösung dagegen T = {e 2,e 3 } mit w(t ) = 4 ist. U. Quasthoff Algorithmen und Datenstrukturen 2 14

Austauscheigenschaft Satz: Sei (E,U) ein Teilmengensystem. Der kanonische Greedy-Algorithmus liefert für das zugehörige Optimierungsproblem (in Bezug auf jede beliebige Gewichtsfunktion w : E Z) die optimale Lösung, genau dann wenn (E,U) ein Matroid ist. Diese algebraische Struktur verlangt ein zusätzliches Axiom die Austauscheigenschaft: A, B U, A < B x B - A : A { x } U Das obige Beispiel stellt kein Matroid dar, denn die Austauscheigenschaft ist bei A = { e 1 } und B = { e 2, e 3 } verletzt. U. Quasthoff Algorithmen und Datenstrukturen 2 15

Dijkstra-Algorithmus I Berechnung des kürzesten Weges. Beweis der Optimalität der Lösung: a) zugrundeliegende matroide Struktur zeigen b) zeigen, dass kanonischer Greedy, angesetzt auf die matroide Struktur und eine Gewichtsfunktion w, die gleichen Lösungen berechnet, wie der Dijkstra- Algorithmus a) matroide Struktur i) Teilmengensystem (E,U) - Grundmenge E: Menge aller Pfade (zyklenfrei) vom Startknoten s ausgehend - Menge der Lösungen U: Menge von Pfadmengen über E, wobei für jede einzelne Pfadmenge gilt, dass die enthaltenen Pfade auf verschiedene Endknoten führen. Es gilt: U sowie A B, B U A U also (E,U) ist Teilmengensystem U. Quasthoff Algorithmen und Datenstrukturen 2 16

Dijkstra-Algorithmus II ii) Austauscheigenschaft Seien A, B U zwei Pfadmengen mit A < B. Dann gibt es genau A verschiedene Endknoten in A und in B befindet sich mindestens ein Pfad mit einem weiteren Endknoten, der nicht in A vorkommt. Dieser Pfad kann zu A hinzugefügt werden und das Resultat liegt immer noch in der Menge U. (E,U) ist Matroid b) kanonischer Greedy hat gleiche Lösungen wie Dijkstra kanonischer Greedy: Ordne die Elemente nach aufsteigendem (bzw. absteigenden) Gewicht: w(e 1 )... w(e n ) T = ; for (k = 1; k <= n; k++) if (T {e k } U) { T = T {e k }; } U. Quasthoff Algorithmen und Datenstrukturen 2 17

Dijkstra-Algorithmus III Liege dem kanonischen Greedy-Algorithmus das dargestellte Teilmengensystem (E,U) zugrunde. Die Gewichtsfunktion auf der Grundmenge, also auf den von Startknoten s ausgehenden Pfaden, sei die Summe der Längen der Kanten, die auf dem Pfad liegen: w'(p) = Σ k liegt auf p w(k) Der kanonische Greedy-Algorithmus für dieses Matroid und diese Gewichtsfunktion w' erzeugt in seinem Ablauf exakt die gleichen Ergebnisse wie der Dijkstra-Algorithmus. (Der Dijkstra-Algorithmus ist nur effizienter, da man nicht alle von s ausgehenden Pfade erzeugen und anschließend nach aufsteigenden w -Werten sortieren muss.) U. Quasthoff Algorithmen und Datenstrukturen 2 18

Auftragsplanung Gegeben: Menge A von n "Aufträgen", jeweils in einer Zeiteinheit zu bewältigen, zu jedem Auftrag i gibt es Gewinn p i und Termin d i, an dem er abgeschlossen sein muss (sonst kein Gewinn) Gesucht: Menge M von Aufträgen, so dass a) M sich so sortieren lässt, dass jeder Auftrag vor seinem Abschlusstermin erledigt wird und b) der Gesamtgewinn maximal ist. U. Quasthoff Algorithmen und Datenstrukturen 2 19

Beispiel Auftragsmenge E = {a, b, c, d, e} Wert Termin pa = 13, da = 2 pb = 7, db = 1 pc = 9, dc = 1 pd = 3, dd = 2 pe = 5, de = 1 Lösung Gewinn 0 a 13 b 7 c 9 d 3 e 5 a,b 20 a,c 22 a,d 16 a,e 18 b,d 10 c,d 12 d,e 8 U. Quasthoff Algorithmen und Datenstrukturen 2 20

Greedy Lösung Ordne Aufträge e k absteigend nach Gewinn: p 1... p n T = ; for (k = 1; k <= n; k++) if ( T {e k } ist eine zulässige Lösung ) T = T {e k }; Ausgabe der Lösung T; In T={e 1,e 2,...,e i } seien die Aufträge nach ihrem Abschlusstermin geordnet: d 1 d 2... d i Lösung T ist genau dann zulässig, wenn gilt: d 1 1, d 2 2,..., d i i U. Quasthoff Algorithmen und Datenstrukturen 2 21