Hallo Welt für Fortgeschrittene

Größe: px
Ab Seite anzeigen:

Download "Hallo Welt für Fortgeschrittene"

Transkript

1 Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Informatik 2 Programmiersysteme Martensstraße Erlangen

2 Gliederung Einführung - Ein simples Beispiel - Definition - Abgrenzung zu DP - Code-Template Beispiele - Scheduling-Algorithmen - Fractional-Knapsack - Münzwechsel - Huffman-Kodierung - JingleRingle - FuzzyLife Zusammenfassung & Quellen Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 2

3 Einführung Ein simples Beispiel Tankstellenproblem: Gegeben sind eine Menge von Tankstellen mit ihrem Abstand zum Startpunkt, unser Zielpunkt, und die Reichweite unseres Autos mit einer Tankfüllung Gesucht ist die minimale Anzahl der Tankstopps Wie machen wir das schnell und einfach? Gierig! Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 3

4 Einführung Ein simples Beispiel Gierige Lösung: 1. Wir sortieren die Tankstellen absteigend nach ihrer Entfernung zum Startpunkt 2. Wiederhole, solange das Ziel nicht in Reichweite ist: 1. Durchsuche Tankstellenliste, bis erste erreichbare Tankstelle gefunden 2. Erhöhe Tankstoppzähler um 1 3. Falls Tankstelle vor dem Ziel liegt, setze Position auf gewählte Tankstelle Sonst: Setze Position auf Ziel, terminiere Wichtige Frage: Wie muss ein Problem beschaffen sein, um durch ein solches intuitives, gieriges Verfahren eine korrekte und optimale Lösung gestatten? Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 4

5 Einführung - Definiton Definition: Ein gieriger Algorithmus (greedy algorithm) löst ein Optimierungsproblem durch eine sukzessive Auswahl des lokalen Optimums der aktuellen Teillösung. Nota bene: Nicht jedes Optimierungsproblem ist gierig lösbar (Überraschung!) Manche Probleme sind gierig lösbar, liefern aber für manche Eingaben kein globales Optimum Formulieren wir die erforderlichen Eigenschaften eines gierig lösbaren Problems: Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 5

6 Einführung wichtige Eigenschaften Optimal substructure (aka optimale Substruktur): Die Lösung des Gesamtproblems ist zusammengesetzt aus optimalen Lösungen der Teilprobleme Das genügt offensichtlich nicht! Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 6

7 Einführung wichtige Eigenschaften Optimal substructure (aka optimale Substruktur): Die Lösung des Gesamtproblems ist zusammengesetzt aus optimalen Lösungen der Teilprobleme Das genügt offensichtlich nicht! Greedy-choice-property: Es ist möglich, in einem iterativen Verfahren durch schrittweise Auswahl der lokal optimalen Teillösung das globale Optimum zu erreichen. Durch die gierige Wahl entsteht immer höchstens ein kleineres Teilproblem. Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 7

8 Einführung wichtige Eigenschaften Optimal substructure (aka optimale Substruktur): Die Lösung des Gesamtproblems ist zusammengesetzt aus optimalen Lösungen der Teilprobleme Das genügt offensichtlich nicht! Greedy-choice-property: Es ist möglich, in einem iterativen Verfahren durch schrittweise Auswahl der lokal optiḿalen Teillösung das globale Optimum zu erreichen. Durch die gierige Wahl entsteht immer höchstens ein kleineres Teilproblem. Mit dieser letzten Eigenschaft wird bereits ein Unterschied zu DP deutlich. Die Unterscheidung im Allgemeinen: Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 8

9 Einführung greedy choice vs. DP Dynamische Programmierung - Lösung wird aus bereits gewonnen Teillösungen zusammengestzt Gierige Wahl - Lösung wird sukzessive gierige Wahl gewonnen - Im allgemeinen rekursiv - im Allgemeinen iterativ - erfordert komplexe Überlegungen - intuitiv - benötigt zusätzlichen Speicher - kein inhärenter zusätzlicher Speicherbedarf Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 9

10 Einführung - Code-Template Ein grobes Muster für die Implementierung einer gierigen Lösung: 1. Sortiere Grundmenge nach einem passenden Kriterium (Wird zum Teil auch in 2. miterledigt, siehe wiki-dijkstra) 2. Solange Lösung nicht vollständig 1. Wähle lokales Optimum und füge es der Lösung hinzu 2. Entferne gegebenfalls gewähltes Element 3. Gebe Lösungsmenge zurück Das funktioniert nicht immer, es gibt aber eine Menge Probleme, die man mit dem Muster beherrschen kann. Dabei gibt es einige Dinge zu beachten... Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 10

11 Einführung Einige Hinweise Die Auswahl des passenden Sortierkriteriums kann einigermaßen knifflig werden siehe Interval Scheduling Die eigentliche gierige Wahl, also das Befüllen der Lösungsmenge, kann in vielen Fällen in O(n) durchgeführt werden, und wird damit von der Komplexität des Sortierens meist O(n*logn) dominiert Manche Probleme erfordern das Entfernen des in jedem Schritt gewählten Elements aus der Grundmenge nicht, manche verbieten es sogar; also Problemstellung beachten Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 11

12 Einführung Einige Hinweise Die Auswahl des passenden Sortierkriteriums kann einigermaßen knifflig werden siehe Interval Scheduling Die eigentliche gierige Wahl, also das Befüllen der Lösungsmenge, kann in vielen Fällen in O(n) durchgeführt werden, und wird damit von der Komplexität des Sortierens meist O(n*logn) dominiert Manche Probleme erfordern das entfernen des in jedem Schritt gewählten Elements aus der Grundmenge nicht, manche verbieten es sogar; also Problemstellung beachten Grundlegend ist allerdings vor allem die Frage, ob es für ein bestimmtes Problem überhaupt eine optimale gierige Lösung gibt! Also: Beispiele, Beispiele, Beispiele! Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 12

13 Beispiele Scheduling Algorithmen (1): Raumplanung Problemstellung: Gegeben: Eine Menge von Lehrveranstaltungen mit ihren Zeitfenstern als offene Intervalle Gesucht; Minimale Anzahl von Räumen, so dass alle Veranstaltungen stattfinden können Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 13

14 Beispiele Scheduling Algorithmen (1) Raumplanung Algorithmus in Pseudocode: d: Anzahl der benötigten Räume n: Anzahl der Lehrveranstaltungen 1. Sortiere Lehrveranstaltungen nach Beginn ihres Zeitfensters; d := 0 2. for i = 1 to n Falls i-te Veranstaltung kompatibel mit einem vorhandenen Raum: Plane diese Veranstaltung in den passenden Raum Sonst: d := d+1, Plane Veranstaltung in den neu allokierten Raum 3. Fertig, d ist die minimal benötigte Anzahl der Räume Implementierungshinweise: Speichere für jeden Klassenraum das Ende des letzten eingeplanten Zeitfensters, halte Räume in PriorityQueue Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 14

15 Beispiele Scheduling Algorithmen (1) Raumplanung Intuitiv sieht diese Lösung richtig aus, es werden offensichtlich keine zwei Lehrveranstaltungen zur selben Zeit in denselben Raum geplant; aber ist sie optimal? Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 15

16 Beispiele Scheduling Algorithmen (1) Raumplanung Intuitiv sieht diese Lösung richtig aus, es werden offensichtlich keine zwei Lehrveranstaltungen zur selben Zeit in denselben Raum geplant; aber ist sie optimal? Ja! Beweis: Sei d die Anzahl der Räume, die der gierige Algorithmus bestimmt Raum d wurde allokiert, weil eine Veranstaltung j in keinen der d-1 anderen Räume geplant werden konnte Da wir nach Anfangszeitpunkt sortiert haben, startet keine der konfligierenden Veranstaltungen nach start(j) Also gibt es d konfligierende Veranstaltungen zum Zeitpunkt start(j) + eps, wobei eps sehr klein und positiv Also werden mindestens d Räume benötigt Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 16

17 Beispiele Scheduling Algorithmen (2) Interval Scheduling Problemstellung: Gegeben: Eine Menge von jobs gegeben durch ihren jeweiligen Start und Endzeitpunkt Gesucht: Maximale Menge paarweise kompatibler, d. h. Überschneidungsfreier jobs Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 17

18 Beispiele Scheduling Algorithmen (2) Interval Scheduling Problemstellung: Gegeben: Eine Menge von jobs gegeben durch ihren jeweiligen Start und Endzeitpunkt Gesucht: Maximale Menge paarweise kompatibler, d. h. Überschneidungsfreier jobs Entscheidend ist hier das Sortierkriterium! Welche Möglichkeiten gibt es? Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 18

19 Beispiele Scheduling Algorithmen (2) Interval Scheduling 1. Möglichkeit: jobs sortieren nach Dauer. Gegenbeispiel: Zeit Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 19

20 Beispiele Scheduling Algorithmen (2) Interval Scheduling 2. Möglichkeit: jobs sortieren nach frühestem Beginn. Gegenbeispiel: Zeit Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 20

21 Beispiele Scheduling Algorithmen (2) Interval Scheduling 3. Möglichkeit: jobs sortieren nach Anzahl der Konflikte. Gegenbeispiel: Zeit Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 21

22 Beispiele Scheduling Algorithmen (2) Interval Scheduling 4. Sortiere jobs aufsteigend nach Endzeitpunkt das ist korrekt! Codeskizze: 1. Sortiere Jobliste aufsteigend nach Endzeitpunkt 2. Solange Jobliste nicht leer a. Entnehme Jobs aus der Liste, bis einer kompatibel oder die Liste leer ist b. Füge gefundenen Job in Ablaufplan ein c. Gehe zu 2. 3.Ablaufplan korrekt und optimal Beweisidee: Zeige, dass Annahme, dass gefundener Ablaufplan nicht optimal ist, zum Widerspruch führt siehe Quelle Kleinberg/Tardos Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 22

23 Beispiele Scheduling Algorithmen (2) Interval Scheduling Beispielablaufplan: Zeit Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 23

24 Beispiele Scheduling Algorithmen (2) Interval Scheduling Beispielablaufplan: Zeit Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 24

25 Beispiele Scheduling Algorithmen (2) Interval Scheduling Beispielablaufplan: Zeit Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 25

26 Beispiele Scheduling Algorithmen (2) Interval Scheduling Beispielablaufplan: Zeit Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 26

27 Beispiele Scheduling Algorithmen (2) Interval Scheduling Beispielablaufplan: Zeit Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 27

28 Beispiele Scheduling Algorithmen (3) Offline-Caching Problemstellung: Gegeben: Ein vollständiger Ablaufplan, d. h. unter anderem alle Seiten, die während des Ablaufes in den Cache geladen werden müssen Gesucht: Seite, die ersetzt werden sollte, falls wir in einen vollen Cache weitere Seiten laden müssen Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 28

29 Beispiele Scheduling Algorithmen (3) Offline-Caching Lösung: Farthest in the future 1. Sortiere die Seiten im Cache aufsteigend nach dem nächsten Termin, zu dem sie angesprochen werden 2. Ersetze letzte Seite in der Liste durch zu ladende neue Seite Entscheidend ist hier, dass es offline einen fertigen Ablaufplan gibt. Wird dieser online erstellt, ist nicht bekannt, welche Seite am weitesten in der Zukunft erst wieder gebraucht wird. In dem Fall gibt es Alternativen wie LFU, LRU, MFU,... Diese Verfahren führen nicht zwangsläufig zu optimalen Ergebnissen! Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 29

30 Beispiele Fractional Knapsack Das Rucksackproblem ist aus DP bekannt: Dieses Problem ist NP-vollständig, einen intuitiven GreedyAlgorithmus finden wir also nicht. Dasselbe gilt bekanntlich auch für das 0-1-KnapsackProblem... Es gibt aber eine vereinfachte Variante des Problems, die sich bequem gierig lösen lässt! Fractional Knapsack Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 30

31 Beispiele Fractional Knapsack Problemstellung: Gegeben: Ein Behälter mit einer Größe G. Eine Menge von Gegenständen mit einer Größe g und einem Wert w Gesucht: Eine maximal wertvolle Auswahl aus den gegeben Gegenständen, wobei die Gegenstände teilbar sind! Zum Beispiel: Welche Speisen muss ich am Büffet auswählen, damit meine Mahlzeit am wertvollsten wird, ohne, dass mir die Sachen vom Teller fallen? Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 31

32 Beispiele Fractional Knapsack Pseudocode nach unserem Muster: 1. Sortiere die Liste S der Gegenstände absteigend nach Wert 2. Solange G > 0: 1. Entnehme erstes Element aus S. 2. Ist seine Größe kleiner G, so füge es der Lösung hinzu, verringere G um diese Größe. 3. Ist die Größe des Gegenstandes > G, füge soviel wie möglich davon dem Ergebnis hinzu, setze G := Fertig; die Lösungsmenge ist die optimale Auswahl Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 32

33 Beispiele Fractional Knapsack Ein kleines Beispiel: Der Teller fasst 12 Nahrungsvolumeneinheiten. Auf dem Büffet liegen: Hühnchen, Größe 13, Wert 2 Euro/Einheit Wachteleier, Größe 2, Wert 6 Euro/Einheit Brot, Größe 20, Wert 1 Euro/Einheit Kaviar, Größe 4, Wert 10 Euro/Einheit Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 33

34 Beispiele Fractional Knapsack 1. Sortieren nach Wert: Wachteleier, Größe 2, Wert 6 Euro/Einheit Kaviar, Größe 4, Wert 10 Euro/Einheit Hühnchen, Größe 13, Wert 2 Euro/Einheit Brot, Größe 20, Wert 1 Euro/Einheit Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 34

35 Beispiele Fractional Knapsack 1. Sortieren nach Wert: Kaviar, Größe 4, Wert 10 Euro/Einheit Wachteleier, Größe 2, Wert 6 Euro/Einheit Hühnchen, Größe 13, Wert 2 Euro/Einheit Brot, Größe 20, Wert 1 Euro/Einheit 2. G = 12 > 0: Nehme Kaviar; g(kaviar) = 4 < G, also: packe Kaviar auf den Teller, reduziere G um 4, gehe zu 2. Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 35

36 Beispiele Fractional Knapsack 1. Sortieren nach Wert: Kaviar, Größe 4, Wert 10 Euro/Einheit Wachteleier, Größe 2, Wert 6 Euro/Einheit Hühnchen, Größe 13, Wert 2 Euro/Einheit Brot, Größe 20, Wert 1 Euro/Einheit 2. G = 8 > 0: Nehme Wachteleier; g(wachteleier) = 2 < G, also: packe Wachteleier auf den Teller, reduziere G um 2, gehe zu 2. Lösung: 4 Einheiten Kaviar Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 36

37 Beispiele Fractional Knapsack 1. Sortieren nach Wert: Kaviar, Größe 4, Wert 10 Euro/Einheit Wachteleier, Größe 2, Wert 6 Euro/Einheit Hühnchen, Größe 13, Wert 2 Euro/Einheit Brot, Größe 20, Wert 1 Euro/Einheit 2. G = 6 > 0: Nehme Hühnchen; g(hühnchen) = 13 > G, also: packe G Einheiten Hünchen auf den Teller, reduziere G auf 0 Lösung: 4 Einheiten Kaviar, 2 Einheiten Wachteleier Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 37

38 Beispiele Fractional Knapsack 1. Sortieren nach Wert: Kaviar, Größe 4, Wert 10 Euro/Einheit Wachteleier, Größe 2, Wert 6 Euro/Einheit Hühnchen, Größe 13, Wert 2 Euro/Einheit Brot, Größe 20, Wert 1 Euro/Einheit 2. G = 6 > 0: Nehme Hühnchen; g(hühnchen) = 13 > G, also: packe G Einheiten Hünchen auf den Teller, reduziere G auf 0 3. Fertig: Lösung ist optimal Lösung: 4 Einheiten Kaviar, 2 Einheiten Wachteleier, 6 Einheiten Hühnchen Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 38

39 Beispiele - Münzwechsel Problemstellung: Gegeben: - Geldbetrag G - Eine Währung W, gegeben als eine Menge von Münzwerten Gesucht: - Geringste Anzahl an Münzen, um den Betrag auszuzahlen Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 39

40 Beispiele - Münzwechsel Gegebene Währung: Euromünzen Gesucht: kleinste Menge von Münzen um 0,97 Euro herauszugeben Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 40

41 Beispiele - Münzwechsel Wir bauen den Algorithmus mit dem Template Wir sortieren die Euromünzen absteigend nach ihrem Betrag 2. Solange Betrag > 0 1. Wähle größte Münze, deren Wert kleiner als der Betrag ist, und füge sie der Lösung hinzu 2. Reduziere den Betrag um den Wert der gewählten Münze 3. Gib Lösungsmenge zurück Restbetrag 97 Cent Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 41

42 Beispiele - Münzwechsel Wir bauen den Algorithmus mit dem Template Wir sortieren die Euromünzen absteigend nach ihrem Betrag 2. Solange Betrag > 0 1. Wähle größte Münze, deren Wert kleiner als der Betrag ist, und füge sie der Lösung hinzu 2. Reduziere den Betrag um den Wert der gewählten Münze 3. Gib Lösungsmenge zurück Restbetrag 47 Cent Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 42

43 Wir bauen den Algorithmus mit dem Template Wir sortieren die Euromünzen absteigend nach ihrem Betrag 2. Solange Betrag > 0 1. Wähle größte Münze, deren Wert kleiner als der Betrag ist, und füge sie der Lösung hinzu 2. Reduziere den Betrag um den Wert der gewählten Münze 3. Gib Lösungsmenge zurück Restbetrag 27 Cent Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 43

44 Beispiele - Münzwechsel Wir bauen den Algorithmus mit dem Template Wir sortieren die Euromünzen absteigend nach ihrem Betrag 2. Solange Betrag > 0 1. Wähle größte Münze, deren Wert kleiner als der Betrag ist, und füge sie der Lösung hinzu 2. Reduziere den Betrag um den Wert der gewählten Münze 3. Gib Lösungsmenge zurück Restbetrag 7 Cent Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 44

45 Beispiele - Münzwechsel Wir bauen den Algorithmus mit dem Template Wir sortieren die Euromünzen absteigend nach ihrem Betrag 2. Solange Betrag > 0 1. Wähle größte Münze, deren Wert kleiner als der Betrag ist, und füge sie der Lösung hinzu 2. Reduziere den Betrag um den Wert der gewählten Münze 3. Gib Lösungsmenge zurück Restbetrag 2 Cent Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 45

46 Beispiele - Münzwechsel Wir bauen den Algorithmus mit dem Template Wir sortieren die Euromünzen absteigend nach ihrem Betrag 2. Solange Betrag > 0 1. Wähle größte Münze, deren Wert kleiner als der Betrag ist, und füge sie der Lösung hinzu 2. Reduziere den Betrag um den Wert der gewählten Münze 3. Gib Lösungsmenge zurück Restbetrag 0 Cent...Fertig Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 46

47 Beispiele - Münzwechsel Für manche Währungen finden wir nicht immer eine optimale Lösung... Währung: 1, 2, 5, 10, 20, 25, 50, 100, 200, 300, 500 Betrag: 40 gierige Wahl liefert 25, 10, 5... Optimal wäre aber 20, 20! Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 47

48 Beispiele - Münzwechsel Für manche Währungen finden wir nicht immer eine optimale Lösung... Währung: 1, 2, 5, 10, 20, 25, 50, 100, 200, 300, 500 Betrag: 40 gierige Wahl liefert 25, 10, 5... Optimal wäre aber 20, 20! Für manche Währungen finden wir nicht für jeden auszahlbaren Betrag eine Lösung... Währung: 3, 10, 25, 50, 100 Betrag: 42 gierige Wahl liefert 25, 10, 3, 3...??? Aber eine Lösung existiert: 10, 10, 10, 3, 3, 3, 3 Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 48

49 Beispiele - Huffman-Codierung Problemstellung: Gegeben: Ein Alphabet A mit relativen oder absoluten Auftrittshäufigkeiten seiner Zeichen Gesucht: Eine präfixfreie optimale Codierung des Alphabets Idee: Wir sortieren die Zeichen nach ihrer Häufigkeit, und bauen daraus sukzessive einen Codierungsbaum auf... Wie genau? Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 49

50 Beispiele - Huffman-Codierung 1. Sortiere Liste L der Zeichen nach Auftrittshäufigkeit 2. for( i = 1; i < L.length 1; i++) 1. x := L.min(), L.remove(x) 2. y := L.min(), L.remove(y) 3. z := new Node(x+y), z.left := x, z.right := y 4. Füge z an der richtigen Stelle in die sortierte Liste ein 3. gebe letztes verbliebenes Listenelement zurück dabei handelt es sich um die Wurzel des Codierungsbaumes Probieren wir es aus... Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 50

51 Beispiele - Huffman-Codierung Alphabet mit Häufigkeiten; a: 15 e: 24 i: 13 o: 8 u: 5 y: 33 Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 51

52 Beispiele - Huffman-Codierung Alphabet mit Häufigkeiten; a: 15 e: 24 i: 13 o: 8 u: 5 y: Sortieren: u: 5 o: 8 i: 13 a: 15 e: 24 y: 33 Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 52

53 Beispiele - Huffman-Codierung Alphabet mit Häufigkeiten; a: 15 e: 24 i: 13 o: 8 u: 5 y: Sortieren: u: 5 o: 8 i: 13 a: 15 e: 24 y: Baum konstruieren: i: 13 a: 15 e: 24 y: u: 5 o: 8 Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 53

54 Beispiele - Huffman-Codierung Alphabet mit Häufigkeiten; a: 15 e: 24 i: 13 o: 8 u: 5 y: Sortieren: u: 5 o: 8 i: 13 a: 15 e: 24 y: Baum konstruieren: a: 15 e: u: 5 y: 33 i: 13 o: 8 Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 54

55 Beispiele - Huffman-Codierung Alphabet mit Häufigkeiten; a: 15 e: 24 i: 13 o: 8 u: 5 y: Sortieren: u: 5 o: 8 i: 13 a: 15 e: 24 y: Baum konstruieren: y: u: 5 i: 13 a: 15 e: 24 o: 8 Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 55

56 Beispiele - Huffman-Codierung Alphabet mit Häufigkeiten; a: 15 e: 24 i: 13 o: 8 u: 5 y: Sortieren: u: 5 o: 8 i: 13 a: 15 e: 24 y: Baum konstruieren: u: 5 y: 33 a: e: 24 i: 13 o: 8 Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 56

57 Beispiele - Huffman-Codierung Alphabet mit Häufigkeiten; a: 15 e: 24 i: 13 o: 8 u: 5 y: Sortieren: u: 5 o: 8 i: 13 a: 15 e: 24 y: Baum konstruieren: u: 5 y: a: 15 e: 24 i: 13 o: 8 Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 57

58 Beispiele Huffman - Codierung Um die Codierung zu gewinnen, beschriftet man jede Kante zu einem linken Kind mit 1, und jede zu einem rechten mit 0, sodass sich die Codewörter als die Pfade zu den Blättern ergeben; a: 01 e: 00 i: 110 o: 1111 u: 1110 y: 10 Anmerkung; Für den Beweis der Optimalität empfiehlt sich ein Rekurs auf die Entropie...wir verlassen uns mal drauf. Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 58

59 Beispiele - JingleRingle Problemstellung: Ein Online-Rollenspiel operiert mit zwei Währungen, Jingles und Ringles, die man nach folgendem System austauschen kann: 1. Der Käufer zahlt dem Verkäufer X Ringles 2. Der Verkäufer gibt ihm dafür ein Jingle 3. Der Verkäufer bezahlt eine Steuer von floor((x*tax)/100) Man besitzt beliebig viele Ringles Kredit, aber keine Jingles, man erhält eine Liste von Kaufangeboten und eine von Verkausangeboten, wie hoch ist der maximal mögliche Profit in Ringles? Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 59

60 Beispiele - JingleRingle Einige Anmerkungen zur Lösung: Eine Lösung besteht aus Paaren von Kauf und Verkaufsangeboten Es ist egal, in welcher Reihenfolge wir die Paare auswählen; wichtig ist nur, welche Paare wir wählen Wir wollen Paare aus Angeboten so zusammenstellen, dass die Summe der Profit maximal wird Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 60

61 Beispiele - JingleRingle Lösungsalgorithmus: 1. a) Sortiere Verkaufsangeboteliste V aufsteigend also so, dass der billigste Jingle an erster Stelle steht b) Sortiere Kaufangeboteliste K absteigend also so, dass das Angebot mit den meisten Ringles für einen Jingle an erster Stelle steht c) profit := 0 2. for i = 0 to min(k.length, V.length) Falls (K[i] tax(k[i])) > V[i]: profit += K[i] tax(k[i]) V[i] 3. Gebe profit zurück Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 61

62 Beispiel - FuzzyLife Problemstellung Grundlage ist das Game of life : Auf einem unendlich großen Gitter sind lebendige und tote Zellen. Welche Zellen tot und welche Zellen lebendig sind, ändert sich von Runde zu Runde in Abhängigkeit von der Lebendigkeit ihrer Nachbarn nach folgendem Muster: 1. Jede lebende Zelle mit weniger als zwei oder mehr als drei lebendigen Nachbarn stirbt 2. Jede tote Zelle mit genau drei lebenden Nachbarn wird lebendig 3. Alle anderen Zellen verbleiben in ihrem Zustand Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 62

63 Beispiele - FuzzyLife Wir erhalten nun: Einen Ausschnitt des Gitters mit maximal 50x50 Zellen Jede Zelle im Gitter ist entweder lebendig ('1'), tot ('0'), oder ihr Zustand ist unbekannt ('?') Alle an den Gitterausschnitt angrenzenden Zellen sind tot Keine Zelle grenzt an mehr als eine Zelle mit einem '?' Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 63

64 Beispiele - FuzzyLife Gesucht: Die Belegung der Zellen mit '?' als tot oder lebendig, so dass nach der nächsten Runde möglichst viele Zellen lebendig sind Essentiell ist hier die Feststellung, dass man die Zellen mit '?' unabhängig betrachten kann aufgrund unserer letzten Vorgabe! Daher ist eine gierige Lösung möglich! Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 64

65 Beispiele - FuzzyLife //di und dj nutzen wir, um bequem alle Zellen um eine //bestimmte Zelle herum betrachten zu können final int[] di = new int[]{1, 1, 1, 0,-1,-1,-1, 0, 0}; final int[] dj = new int[]{1, 0,-1,-1,-1, 0, 1, 1, 0}; // in grid wird nachher das übergebene Gitter gespeichert, //plus einen zusätzlichen Rahmen von toten Zellen char[][] grid; Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 65

66 Beispiele - FuzzyLife Hilfsmethode alive, die überprüft, ob eine Zelle in der nächsten Runde leben würde: boolean alive(int i, int j) { int k, na = 0; for (k=0; k<8; k++) //über die Nachbarn von grid[i][j] iterieren, lebendige zählen if (grid[i+di[k]][j+dj[k]]=='1') na++; //Anzahl lebendiger Zellen mit unseren //Überlebensbedingungen abgleichen return ((na==3) (g[i][j]=='1' && na==2)) } Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 66

67 Beispiele - FuzzyLife Hilfsmethode count, die berechnet, wie viele benachbarte Zellen überleben, wenn man an einer Gitterzelle einen bestimmten Wert einfügt: int count(char v, int i, int j) { int k, na=0; grid[i][j] = v; //iteriere über alle Nachbarn und die Zelle selbst for (k=0; k<9; k++) //wäre die Zelle in der nächsten Runde am Leben, erhöhe Zähler if (alive(i+di[k], j+dj[k])) na++; return na; } Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 67

68 Beispiele - FuzzyLife public int survivingcells(string[] g) { int i, j, n0, n1; int SZI = grid.length+4; int SZJ = grid[0].length()+4; grid = new char[szi][szj]; //grid initialisieren mit übergebenen Werten plus Doppel - Rand for (i=0; i<szi; i++){ for (j=0; j<szj; j++){ if (i-2<0 i-2>=szi-4 j-2<0 j-2>=szj-4) grid[i][j] = '0'; //tote Felder um das übergeben Gitter else grid[i][j] = g[i-2].charat(j-2); } } Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 68

69 Beispiele - FuzzyLife //Iteriere über alle Punkte des übergebenen Gitters for (i=2; i<szi-2; i++) for (j=2; j<szj-2; j++) //wenn ein Feld unbekannt ist if (grid[i][j]=='?') { //berechne, wie viele Felder jeweils in der nächsten Runde //leben würden, wenn das Feld lebendig oder tot wäre n0 = count('0',i,j); n1 = count('1',i,j); //jetzt steht '1' in der Zelle grid{i][j]; falls aber '0' mehr lebende //Zellen erzeugt, wechseln if (n0>n1) grid[i][j]='0'; } Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 69

70 Beispiele - FuzzyLife n1=0; //Das Gitter ist jetzt optimal besetzt, berechne //Gesamtzahl der überlebenden Zellen in der nächsten //Runde for (i=1; i<szi-1; i++) for (j=1; j<szj-1; j++) if (alive(i,j)) n1++; return n1; } Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 70

71 Zusammenfassung Gierige Algorithmen bestehen meist aus einer Sortierung, und danach einer sukzessiven Auswahl lokaler Optima, die in einem global optimalen Ergebnis resultiert Sie laufen meist in O(n*log(n)), bedingt durch die erforderliche Sortierung Im Gegensatz zu DP sind sie meist intuitiv zu entwickeln, es muss jedoch nachgewiesen werden, das sie optimale Ergebnisse liefern Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 71

72 Quellen Jon Kleinberg, Éva Tardos: Algorithm Design Hallo Welt 2008: Christoph Erhardt Gierige Algorithmen n+round+2 Hallo Welt für Fortgeschrittene Gierige Algorithmen Christoph Merdes Folie 72

Hallo Welt für Fortgeschrittene

Hallo Welt für Fortgeschrittene 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

Mehr

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

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J Greedy-Strategie Definition Paradigma Greedy Der Greedy-Ansatz verwendet die Strategie 1 Top-down Auswahl: Bestimme in jedem Schritt eine lokal optimale Lösung, so dass man eine global optimale Lösung

Mehr

Informatik II Greedy-Algorithmen

Informatik II Greedy-Algorithmen 7/7/06 lausthal Erinnerung: Dynamische Programmierung Informatik II reedy-algorithmen. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Zusammenfassung der grundlegenden Idee: Optimale Sub-Struktur:

Mehr

Übrigens: um den Algorithmus im Unterricht einzuführen, sind keine Formeln notwendig! Warum reicht die normale ASCII-Codierung nicht aus?

Übrigens: um den Algorithmus im Unterricht einzuführen, sind keine Formeln notwendig! Warum reicht die normale ASCII-Codierung nicht aus? Huffman-Code Dieser Text ist als Hintergrundinformation ausschliesslich für die Lehrperson gedacht. Der Text ist deshalb eher technisch gehalten. Er lehnt sich an das entsprechende Kapitel in "Turing Omnibus"

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 5 Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

4 Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine

Mehr

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

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Paradigmen im Algorithmenentwurf Problemlösen Problem definieren Algorithmus entwerfen

Mehr

Dynamisches Huffman-Verfahren

Dynamisches Huffman-Verfahren Dynamisches Huffman-Verfahren - Adaptive Huffman Coding - von Michael Brückner 1. Einleitung 2. Der Huffman-Algorithmus 3. Übergang zu einem dynamischen Verfahren 4. Der FGK-Algorithmus 5. Überblick über

Mehr

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

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum

Mehr

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

Überblick. TSP Vergleich der Lösungen. Das Travelling Salesman Problem. Nearest-Neighbor Heuristik für TSP Kap..1 Heuristiken Kap.. Approximative Algorithmen und Gütegarantien Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 3. VO DAP SS 008 14. Juli 009 Überblick

Mehr

Dynamische Programmierung

Dynamische Programmierung Dynamische Programmierung Manuel Grandeit Hallo Welt -Seminar 28.06.2011 Manuel Grandeit 1 / 40 Inhaltsübersicht Einführung Münzwechsel Was ist ein Zustand? Konstruktion einer DP-Lösung Top-Down-DP Bottom-Up-DP

Mehr

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

Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13) Berlin, 21. Februar 2013 Name:... Matr.-Nr.:... Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13) 1 2 3 4 5 6 7 8 9 Σ Bearbeitungszeit: 90 min. max. Punktezahl:

Mehr

Musterlösung zur Hauptklausur Theoretische Grundlagen der Informatik Wintersemester 2013/14

Musterlösung zur Hauptklausur Theoretische Grundlagen der Informatik Wintersemester 2013/14 Institut für Theoretische Informatik Prof. Dr. Jörn Müller-Quade Musterlösung zur Hauptklausur Theoretische Grundlagen der Informatik Wintersemester 23/4 Vorname Nachname Matrikelnummer Hinweise Für die

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale

Mehr

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Dynamische Programmierung. Problemlösungsstrategie der Informatik als Problemlösungsstrategie der Informatik und ihre Anwedung in der Diskreten Mathematik und Graphentheorie Fabian Cordt Enisa Metovic Wissenschaftliche Arbeiten und Präsentationen, WS 2010/2011 Gliederung

Mehr

Dynamisches Programmieren - Problemstruktur

Dynamisches Programmieren - Problemstruktur Dynamisches Programmieren - Problemstruktur Optimale Substruktur: Optimale Lösung enthält optimale Lösungen von Teilproblemen. Bsp.: Kürzester Weg im Graphen, LCS (s. etwa Folie 42 der letzten Vorlesung)

Mehr

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

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS) Dominating Set 59 Literatur Dominating Set Grundlagen 60 Dominating Set (DS) M. V. Marathe, H. Breu, H.B. Hunt III, S. S. Ravi, and D. J. Rosenkrantz: Simple Heuristics for Unit Disk Graphs. Networks 25,

Mehr

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

Problem: Finde für Alphabet mit n Zeichen einen Binärcode, der die Gesamtlänge eines Textes (über diesem Alphabet) minimiert. Anwendungen von Bäumen 4.3.2 Huffman Code Problem: Finde für Alphabet mit n Zeichen einen Binärcode, der die Gesamtlänge eines Textes (über diesem Alphabet) minimiert. => nutzbar für Kompression Code fester

Mehr

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

Approximationsalgorithmen: Klassiker I. Kombinatorische Optimierung Absolute Gütegarantie Graph-Coloring Clique Relative Gütegarantie Scheduling Approximationsalgorithmen: Klassiker I Kombinatorische Optimierung Absolute Gütegarantie Graph-Coloring Clique Relative Gütegarantie Scheduling VO Approximationsalgorithmen WiSe 2011/12 Markus Chimani

Mehr

Algorithmen & Programmierung. Rekursive Funktionen (1)

Algorithmen & Programmierung. Rekursive Funktionen (1) Algorithmen & Programmierung Rekursive Funktionen (1) Berechnung der Fakultät Fakultät Die Fakultät N! einer nichtnegativen ganzen Zahl N kann folgendermaßen definiert werden: d.h. zur Berechnung werden

Mehr

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung Gliederung 1. Motivation / Einordnung / Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs

Mehr

Das Briefträgerproblem

Das Briefträgerproblem Das Briefträgerproblem Paul Tabatabai 30. Dezember 2011 Inhaltsverzeichnis 1 Problemstellung und Modellierung 2 1.1 Problem................................ 2 1.2 Modellierung.............................

Mehr

11.1 Grundlagen - Denitionen

11.1 Grundlagen - Denitionen 11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die

Mehr

Very simple methods for all pairs network flow analysis

Very simple methods for all pairs network flow analysis Very simple methods for all pairs network flow analysis Tobias Ludes 02.07.07 Inhalt Einführung Algorithmen Modifikation der Gomory-Hu Methode Einführung Nach Gomory-Hu nur n-1 Netzwerk-Fluss- Berechnungen

Mehr

Algorithmische Bioinformatik 1

Algorithmische Bioinformatik 1 Algorithmische Bioinformatik 1 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Paarweises

Mehr

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

Ein Dieb raubt einen Laden aus; um möglichst flexibel zu sein, hat er für die Beute nur einen Rucksack dabei 7/7/ Das Rucksack-Problem Englisch: Knapsack Problem Das Problem: "Die Qual der Wahl" Ein Dieb raubt einen Laden aus; um möglichst flexibel zu sein, hat er für die Beute nur einen Rucksack dabei Im Ladens

Mehr

Randomisierte Algorithmen 2. Erste Beispiele

Randomisierte Algorithmen 2. Erste Beispiele Randomisierte Algorithmen Randomisierte Algorithmen 2. Erste Beispiele Thomas Worsch Fakultät für Informatik Karlsruher Institut für Technologie Wintersemester 2016/2017 1 / 35 Randomisierter Identitätstest

Mehr

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

Aufgabe 4.2 Sei G = (V, E, l) ein ungerichteter, gewichteter und zusammenhängender Graph. Aufgabe 4.2 Sei G = (V, E, l) ein ungerichteter, gewichteter und zusammenhängender Graph. a) Es seien W 1 = (V, E 1 ), W 2 = (V, E 2 ) Untergraphen von G, die beide Wälder sind. Weiter gelte E 1 > E 2.

Mehr

Algorithmen II Vorlesung am 15.11.2012

Algorithmen II Vorlesung am 15.11.2012 Algorithmen II Vorlesung am 15.11.2012 Kreisbasen, Matroide & Algorithmen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales

Mehr

Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...)

Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...) Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...) Inhalt: Einleitung, Begriffe Baumtypen und deren Kodierung Binäre Bäume Mehrwegbäume Prüfer

Mehr

Codierung, Codes (variabler Länge)

Codierung, Codes (variabler Länge) Codierung, Codes (variabler Länge) A = {a, b, c,...} eine endliche Menge von Nachrichten (Quellalphabet) B = {0, 1} das Kanalalphabet Eine (binäre) Codierung ist eine injektive Abbildung Φ : A B +, falls

Mehr

Algorithmen II Vorlesung am

Algorithmen II Vorlesung am Algorithmen II Vorlesung am 0..0 Minimale Schnitte in Graphen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales Forschungszentrum

Mehr

Programmierung 2. Dynamische Programmierung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.

Programmierung 2. Dynamische Programmierung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Dynamische Programmierung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 2 Übersicht Stammt aus den Zeiten als mit Programmierung

Mehr

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle Kapitel 9 Algorithm. Geometrie Kürzeste Abstände Konvexe Hülle Überblick Teilgebiet der Informatik, in dem es um die Entwicklung effizienter Algorithmen und die Bestimmung der algorithmischen Komplexität

Mehr

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13.1 Modellierung des Rucksackproblems 13.2 Lösung mit Greedy-Algorithmus 13.3 Lösung mit Backtracking 13.4 Lösung mit Dynamischer Programmierung

Mehr

6. Komprimierung. (Text)komprimierung ist ein Wechsel der Repräsentation von Daten, so daß sie weniger

6. Komprimierung. (Text)komprimierung ist ein Wechsel der Repräsentation von Daten, so daß sie weniger Komprimierung 6. Komprimierung (Text)komprimierung ist ein Wechsel der Repräsentation von Daten, so daß sie weniger Platz brauchen Motivation: beschleunigt Plattenzugriffe oder Datenübertragungen Voraussetzung:

Mehr

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

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) 5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) mit V = {1,...,n} und E {(v, w) 1 apple v, w apple n, v 6= w}. c : E!

Mehr

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

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 1 für die Übung

Mehr

Geometrische Algorithmen

Geometrische Algorithmen Geometrische Algorithmen Thomas Röfer Motivation Scan-line-Prinzip Konvexe Hülle Distanzprobleme Voronoi-Diagramm Rückblick Manipulation von Mengen Vorrangwarteschlange Heap HeapSort swap(a, 0, 4) 1 5

Mehr

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

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung Theoretische Informatik Rainer Schrader Zentrum für Angewandte Informatik Köln 14. Juli 2009 1 / 40 2 / 40 Beispiele: Aus den bisher gemachten Überlegungen ergibt sich: aus der Chomsky-Hierarchie bleiben

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2009/0 : Technik vs. Iteration Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund 2 Definition (einfache,

Mehr

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Algorithmen mit konstantem Platzbedarf: Die Klasse REG Algorithmen mit konstantem Platzbedarf: Die Klasse REG Sommerakademie Rot an der Rot AG 1 Wieviel Platz brauchen Algorithmen wirklich? Daniel Alm Institut für Numerische Simulation Universität Bonn August

Mehr

6. Übungsblatt zu Algorithmen II im WS 2011/2012

6. Übungsblatt zu Algorithmen II im WS 2011/2012 Karlsruher Institut für Technologie Institut für Theoretische Informatik rof. Dr. eter Sanders Moritz Kobitzsch, Dennis Schieferdecker 6. Übungsblatt zu Algorithmen II im WS 011/01 Aufgabe 1 http://algo.iti.kit.edu/algorithmenii.php

Mehr

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

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung

Mehr

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 245, Seite 63 im Skript) 3 7 21 10 17 31 49 28 14 35 24 42 38 Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die

Mehr

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block Inhalt: InsertionSort BubbleSort QuickSort Block M.: "Java-Intensivkurs - In 14 Tagen lernen Projekte erfolgreich zu realisieren", Springer-Verlag 2007 InsertionSort I Das Problem unsortierte Daten in

Mehr

Vorlesung 4 BETWEENNESS CENTRALITY

Vorlesung 4 BETWEENNESS CENTRALITY Vorlesung 4 BETWEENNESS CENTRALITY 101 Aufgabe! Szenario: Sie arbeiten bei einem sozialen Online-Netzwerk. Aus der Netzwerk-Struktur Ihrer Benutzer sollen Sie wichtige Eigenschaften extrahieren. [http://www.fahrschule-vatterodt.de/

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2007 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Traversierung Durchlaufen eines Graphen, bei

Mehr

Viel Spaÿ! Aufgabe 0.1. Laufzeit unter Verdoppelung (-)

Viel Spaÿ! Aufgabe 0.1. Laufzeit unter Verdoppelung (-) Datenstrukturen (DS) Sommersemester 2015 Prof. Dr. Georg Schnitger Dipl-Inf. Bert Besser Hannes Seiwert, M.Sc. Institut für Informatik AG Theoretische Informatik Übung 0 Ausgabe: 14.04.2015 Abgabe: - Wenn

Mehr

Anmerkungen zur Übergangsprüfung

Anmerkungen zur Übergangsprüfung DM11 Slide 1 Anmerkungen zur Übergangsprüfung Aufgabeneingrenzung Aufgaben des folgenden Typs werden wegen ihres Schwierigkeitsgrads oder wegen eines ungeeigneten fachlichen Schwerpunkts in der Übergangsprüfung

Mehr

Minimal spannender Baum

Minimal spannender Baum Minimal spannender Baum 16 1 2 21 5 11 19 6 6 3 14 33 10 5 4 18 Die Kreise zeigen die vorgesehenen Standorte neu zu errichtender Filialen einer Bank. Entlang der bestehenden Straßen sollen Telefonleitungen

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 2. April

Mehr

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

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 11 Prof. Dr. Helmut Seidl, S. Pott,

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung Dr. Tom Kamphans 1. Vorlesung 12.10.2016 1 Organisatorisches Vorlesung: Mittwochs 14:00 15:30, Raum F 201 Übung: Mittwochs 15:45 19:00, Raum F 225 Übung: alle zwei Wochen

Mehr

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.

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. Graphen Definition: 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. Begriffe: Gerichteter Graph: Alle Kanten haben eine Richtung vom Anfangsknoten

Mehr

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

Technische Universität München Zentrum Mathematik Propädeutikum Diskrete Mathematik. Weihnachtsblatt Technische Universität München Zentrum Mathematik Propädeutikum Diskrete Mathematik Prof. Dr. A. Taraz, Dipl-Math. A. Würfl, Dipl-Math. S. König Weihnachtsblatt Aufgabe W.1 Untersuchen Sie nachstehenden

Mehr

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

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v) Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der

Mehr

Geometrie I. Sebastian Redinger Informatik 2 Programmiersysteme Martensstraße Erlangen

Geometrie I. Sebastian Redinger Informatik 2 Programmiersysteme Martensstraße Erlangen Geometrie I Sebastian Redinger 01.07.2015 Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Gliederung Grundlagen CCW Polygone Picks Theorem Konvexe Hülle - Graham Scan - Jarvis March 2 Gliederung

Mehr

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

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik Kürzeste Wege in Graphen Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik Gliederung Einleitung Definitionen Algorithmus von Dijkstra Bellmann-Ford Algorithmus Floyd-Warshall Algorithmus

Mehr

JAVA - Suchen - Sortieren

JAVA - Suchen - Sortieren Übungen Informatik I JAVA - Suchen - Sortieren http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik

Mehr

15 Optimales Kodieren

15 Optimales Kodieren 15 Optimales Kodieren Es soll ein optimaler Kodierer C(T ) entworfen werden, welcher eine Information (z.b. Text T ) mit möglichst geringer Bitanzahl eindeutig überträgt. Die Anforderungen an den optimalen

Mehr

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15. smichel@cs.uni-kl.de

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15. smichel@cs.uni-kl.de Datenbankanwendung Wintersemester 2014/15 Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern smichel@cs.uni-kl.de Wiederholung: Anfragegraph Anfragen dieses Typs können als Graph dargestellt werden: Der

Mehr

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

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

Mehr

Vollständige Induktion

Vollständige Induktion Schweizer Mathematik-Olympiade smo osm Vollständige Induktion Aktualisiert: 1 Dezember 01 vers 100 Eine der wichtigsten Beweistechniken der Mathematik überhaupt ist die (vollständige) Induktion Wir nehmen

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

Sortierverfahren für Felder (Listen)

Sortierverfahren für Felder (Listen) Sortierverfahren für Felder (Listen) Generell geht es um die Sortierung von Daten nach einem bestimmten Sortierschlüssel. Es ist auch möglich, daß verschiedene Daten denselben Sortierschlüssel haben. Es

Mehr

Kombinatorische Optimierung

Kombinatorische Optimierung Juniorprof. Dr. Henning Meyerhenke 1 Henning Meyerhenke: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Vorlesung 4 Programm des

Mehr

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). 8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame

Mehr

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

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7) Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.rwth-aachen.de/i2/dsal0/ Algorithmus 8. Mai 200 Joost-Pieter

Mehr

Prof. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015

Prof. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015 Technische Universität Dortmund Informatik VII (Graphische Systeme) Prof. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015 Übungsaufgaben zum Vorkurs Informatik Wintersemester 2015/2016 Teil I

Mehr

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

Kostenmaße. F3 03/04 p.188/395 Kostenmaße Bei der TM nur ein Kostenmaß: Ein Schritt (Konfigurationsübergang) kostet eine Zeiteinheit; eine Bandzelle kostet eine Platzeinheit. Bei der RAM zwei Kostenmaße: uniformes Kostenmaß: (wie oben);

Mehr

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

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. äume / Graphen. Hashing 6. Algorithmische Geometrie 4/6, Folie 1 2014 Prof. Steffen Lange - HDa/FbI

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2014/15 3. Vorlesung Laufzeitanalyse Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Recap: Diskutieren Sie mit Ihrer NachbarIn! 1. 2. 3. Was sind

Mehr

Approximationsalgorithmen

Approximationsalgorithmen Ausarbeitung zum Thema Approximationsalgorithmen im Rahmen des Fachseminars 24. Juli 2009 Robert Bahmann robert.bahmann@gmail.com FH Wiesbaden Erstellt von: Robert Bahmann Zuletzt berarbeitet von: Robert

Mehr

5.4 Das Rucksackproblem

5.4 Das Rucksackproblem Problemstellung: 5.4 Das Rucksackproblem Eingabe: Ganzzahlige Volumina a 1,..., a n > 0, Nutzenwerte c 1,..., c n > 0, ganzzahlige Volumenschranke b. Aufgabe: Packe die Objekte in einen Rucksack von Volumen

Mehr

Anwendungen von Netzwerkfluss. Wojciech Polcwiartek Institut für Informatik FU Berlin

Anwendungen von Netzwerkfluss. Wojciech Polcwiartek Institut für Informatik FU Berlin Anwendungen von Netzwerkfluss Wojciech Polcwiartek Institut für Informatik FU Berlin 13. 01. 2009 Gliederung Einführung Netzwerk, Fluss und Schnitt Max-Flow-Min-Cut Theorem Algorithmen zum Bestimmen vom

Mehr

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

Studiengang Informatik der FH Gießen-Friedberg. Sequenz-Alignment. Jan Schäfer. WS 2006/07 Betreuer: Prof. Dr. Klaus Quibeldey-Cirkel Studiengang Informatik der FH Gießen-Friedberg Sequenz-Alignment Jan Schäfer WS 2006/07 Betreuer: Prof. Dr. Klaus Quibeldey-Cirkel Überblick Einführung Grundlagen Wann ist das Merkmal der Ähnlichkeit erfüllt?

Mehr

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

22. Algorithmus der Woche Partnerschaftsvermittlung Drum prüfe, wer sich ewig bindet 22. Algorithmus der Woche Partnerschaftsvermittlung Drum prüfe, wer sich ewig bindet Autor Volker Claus, Universität Stuttgart Volker Diekert, Universität Stuttgart Holger Petersen, Universität Stuttgart

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 12.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 13 (18.6.2014) Binäre Suchbäume IV (Rot Schwarz Bäume) Algorithmen und Komplexität Rot Schwarz Bäume Ziel: Binäre Suchbäume, welche immer

Mehr

11. Woche: Turingmaschinen und Komplexität Rekursive Aufzählbarkeit, Entscheidbarkeit Laufzeit, Klassen DTIME und P

11. Woche: Turingmaschinen und Komplexität Rekursive Aufzählbarkeit, Entscheidbarkeit Laufzeit, Klassen DTIME und P 11 Woche: Turingmaschinen und Komplexität Rekursive Aufzählbarkeit, Entscheidbarkeit Laufzeit, Klassen DTIME und P 11 Woche: Turingmaschinen, Entscheidbarkeit, P 239/ 333 Einführung in die NP-Vollständigkeitstheorie

Mehr

SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung

SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung Martin Dietzfelbinger Juni/Juli 2011 FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 Kapitel 5: Dynamische Programmierung Typische

Mehr

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

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 3: Minimal aufspannende Bäume und Matroide Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 3: Minimal aufspannende Bäume und Matroide Dipl-Math. Wolfgang Kinzner 3.4.2012 Kapitel 3: Minimal aufspannende Bäume und Matroide Minimal aufspannende

Mehr

Graphen: Datenstrukturen und Algorithmen

Graphen: Datenstrukturen und Algorithmen Graphen: Datenstrukturen und Algorithmen Ein Graph G = (V, E) wird durch die Knotenmenge V und die Kantenmenge E repräsentiert. G ist ungerichtet, wenn wir keinen Start- und Zielpunkt der Kanten auszeichnen.

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen Der Tragödie IV. Theyl Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University

Mehr

11. Rekursion, Komplexität von Algorithmen

11. Rekursion, Komplexität von Algorithmen 11. Rekursion, Komplexität von Algorithmen Teil 2 Java-Beispiele: Power1.java Hanoi.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 23. Nov. 2015 Anwendung der Rekursion Rekursiv

Mehr

Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften:

Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften: Binäre Suchbäume (a, b)-bäume (Folie 173, Seite 56 im Skript) Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften: 1 Jeder Knoten hat höchstens b Kinder. 2 Jeder

Mehr

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

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

Mehr

Binary Decision Diagrams (Einführung)

Binary Decision Diagrams (Einführung) Binary Decision Diagrams (Einführung) Binary Decision Diagrams (BDDs) sind bestimmte Graphen, die als Datenstruktur für die kompakte Darstellung von booleschen Funktionen benutzt werden. BDDs wurden von

Mehr

13. Binäre Suchbäume

13. Binäre Suchbäume 1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),

Mehr

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Algorithmen und algorithmische Sprachkonzepte Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag,

Mehr

Wie löst man Mathematikaufgaben?

Wie löst man Mathematikaufgaben? Wie löst man Mathematikaufgaben? Manfred Dobrowolski Universität Würzburg Wie löst man Mathematikaufgaben? 1 Das Schubfachprinzip 2 Das Invarianzprinzip 3 Das Extremalprinzip Das Schubfachprinzip Verteilt

Mehr

Universität des Saarlandes

Universität des Saarlandes Universität des Saarlandes FR 6.2 Informatik Prof. Dr. Kurt Mehlhorn WiSe 2015/2016 Übungen zu Ideen der Informatik http://www.mpi-inf.mpg.de/departments/algorithms-complexity/teaching/winter15/ideen/

Mehr

Stefan Schmid TU Berlin & T-Labs, Berlin, Germany. Reduktionen in der Berechenbarkeitstheorie

Stefan Schmid TU Berlin & T-Labs, Berlin, Germany. Reduktionen in der Berechenbarkeitstheorie Stefan Schmid TU Berlin & T-Labs, Berlin, Germany Reduktionen in der Berechenbarkeitstheorie Problem: Wie komme ich von hier zum Hamburger Hbf? 2 Beispiel P1 Wie komme ich von hier zum Hamburger Hbf? kann

Mehr

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Musterlösung 1. Aufgabe (5 Punkte) Im folgenden Programmcode sind einige Fehler enthalten. Finden und markieren Sie mindestens

Mehr

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

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V. Kapitel 4 Graphenalgorithmen 4.1 Definitionen Definition 4.1.1. Der Graph G = (V, E) ist über die beiden Mengen V und E definiert, wobei V die Menge der Knoten und E die Menge der Kanten in dem Graph ist.

Mehr

Durchschnitt von Matroiden

Durchschnitt von Matroiden Durchschnitt von Matroiden Satz von Edmonds Dany Sattler 18. Januar 2007/ Seminar zur ganzzahligen Optimierung / Wallenfels Definition: Unabhängigkeitssystem Definition: Ein Mengensystem (S, J ) nennt

Mehr