Algorithmen und Datenstrukturen 2

Ähnliche Dokumente
ADS: Algorithmen und Datenstrukturen 2

4. Kreis- und Wegeprobleme Abstände in Graphen

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?

Durchschnitt von Matroiden

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

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Datenstrukturen & Algorithmen

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

Minimal spannender Baum

4 Greedy-Algorithmen (gierige Algorithmen)

Algorithmen und Datenstrukturen 2

Dynamisches Programmieren - Problemstruktur

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Aufgabe 4.2 Sei G = (V, E, l) ein ungerichteter, gewichteter und zusammenhängender Graph.

9. Heuristische Suche

3. Musterlösung. Problem 1: Boruvka MST

Vorlesung 4 BETWEENNESS CENTRALITY

Minimal spannende Bäume

Universität des Saarlandes

Das Briefträgerproblem

15. Algorithmus der Woche Das Rucksackproblem Die Qual der Wahl bei zu vielen Möglichkeiten

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 3: Minimal aufspannende Bäume und Matroide

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

Vorlesung Datenstrukturen

Routing Algorithmen. Begriffe, Definitionen

Minimal spannende Bäume

Algorithmen II Vorlesung am

ADS: Algorithmen und Datenstrukturen 2

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

Algorithmen & Programmierung. Rekursive Funktionen (1)

Algorithmen II Vorlesung am

Algorithmen und Datenstrukturen 2

Klausur Informatik B April Teil I: Informatik 3

f h c 7 a 1 b 1 g 2 2 d

Ausarbeitung zum Modulabschluss. Graphentheorie. spannende Bäume, bewertete Graphen, optimale Bäume, Verbindungsprobleme

Dank. Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I. Probleme über Sprachen. Teil II.

Überblick. TSP Vergleich der Lösungen. Das Travelling Salesman Problem. Nearest-Neighbor Heuristik für TSP

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

Kombinatorische Optimierung

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)

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Studiengang Informatik der FH Gießen-Friedberg. Sequenz-Alignment. Jan Schäfer. WS 2006/07 Betreuer: Prof. Dr. Klaus Quibeldey-Cirkel

Graph Paar (V,E) V: nichtleere Menge von Knoten (vertex) E: Menge von Kanten (edges): Relation (Verbindung) zwischen den Knoten

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

Theoretische Informatik SS 03 Übung 11

Algorithmische Bioinformatik 1

DIE SPRACHE DER WAHRSCHEINLICHKEITEN

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

Analysis I: Übungsblatt 1 Lösungen

1.2 Eigenschaften der ganzen Zahlen

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

14. Rot-Schwarz-Bäume

κ(k) k K S Algorithmus zur Bestimmung eines spannenden Baumes mit minimalen Kosten (Kruskal, 1965).

Felix Brandt, Jan Johannsen. Vorlesung im Wintersemester 2008/09

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 1 Kapitel 3

5.4 Das Rucksackproblem

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

Datenstrukturen & Algorithmen

Donnerstag, 11. Dezember 03 Satz 2.2 Der Name Unterraum ist gerechtfertigt, denn jeder Unterraum U von V ist bzgl.

Wiederholung zu Flüssen

Kapitel 5: Minimale spannende Bäume Gliederung der Vorlesung

Inhaltsverzeichnis. 4.1 Systemmodell und notwendige Bedingungen. 4.2 Gegenmaßnahmen

Westfählische Wilhelms-Universität. Eulersche Graphen. Autor: Jan-Hendrik Hoffeld

Kapitel 3: Untere Schranken für algorithmische Probleme Gliederung

σ-algebren, Definition des Maßraums

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 8. Zufallszahlen Generatoren Anwendungen

Vom Leichtesten zum Schwersten Sortieralgorithmen

MafI I: Logik & Diskrete Mathematik (F. Hoffmann)

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

Algorithmen und Datenstrukturen

Universität Karlsruhe Institut für Theoretische Informatik. Klausur: Informatik III

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

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

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

Algorithmen und Datenstrukturen 1

Dynamisches Huffman-Verfahren

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?

Uninformierte Suche in Java Informierte Suchverfahren

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

KAPITEL 2. Kombinatorik

Effiziente Algorithmen I

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.

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Permutationen und symmetrische Gruppe

Grundbegriffe der Wahrscheinlichkeitsrechnung

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Proseminar Online Algorithmen, Prof. Dr. Rolf Klein

(27 - Selbstanordnende lineare Listen)

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

Universität Karlsruhe Institut für Theoretische Informatik. Klausur: Informatik III

Klausur Grundlagen der Informatik Hochschule Ravensburg-Weingarten

Probeklausur zur Vorlesung Berechenbarkeit und Komplexität

Transkript:

Algorithmen und Datenstrukturen 2 Sommersemester 2007 11. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.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. P. Stadler 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? P. Stadler 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. P. Stadler 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. P. Stadler 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 ; } } } } P. Stadler 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 P. Stadler 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. P. Stadler 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. P. Stadler 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. P. Stadler Algorithmen und Datenstrukturen 2 10

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. P. Stadler Algorithmen und Datenstrukturen 2 11

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. P. Stadler Algorithmen und Datenstrukturen 2 12

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 P. Stadler Algorithmen und Datenstrukturen 2 13

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. P. Stadler Algorithmen und Datenstrukturen 2 14

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. P. Stadler Algorithmen und Datenstrukturen 2 15

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. P. Stadler Algorithmen und Datenstrukturen 2 16

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 P. Stadler Algorithmen und Datenstrukturen 2 17

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 }; } P. Stadler Algorithmen und Datenstrukturen 2 18

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.) P. Stadler Algorithmen und Datenstrukturen 2 19

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. P. Stadler Algorithmen und Datenstrukturen 2 20

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 P. Stadler Algorithmen und Datenstrukturen 2 21

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 P. Stadler Algorithmen und Datenstrukturen 2 22