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

Größe: px
Ab Seite anzeigen:

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

Transkript

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

21 Allgemeines Intervall Scheduling Gegeben ist eine Menge von Aufgaben Jede Aufgabe hat einen Start- und einen Endzeitpunkt Aufgaben sind miteinander kompatibel, wenn sie nicht überlappen Ziel: Auffinden einer möglichst großen Teilmenge von miteinander kompatiblen Aufgaben a b c d e f g t Jennifer Naumann Gierige Algorithmen 11.Juni / 44

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

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

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

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

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

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

28 Intervall Scheduling - Beispiel a b c d e f g t Jennifer Naumann Gierige Algorithmen 11.Juni / 44

29 Intervall Scheduling - Beispiel 1. Sortiere die Aufgaben aufsteigend nach Endzeitpunkt b a c e d f g t Jennifer Naumann Gierige Algorithmen 11.Juni / 44

30 Intervall Scheduling - Beispiel 2. Nimm die aktuelle Aufgabe b a c e d f g t Jennifer Naumann Gierige Algorithmen 11.Juni / 44

31 Intervall Scheduling - Beispiel 3. Ist die aktuelle Aufgabe mit der Ergebnismenge kompatibel, füge sie der Ergebnismenge hinzu b a c e d f g t Jennifer Naumann Gierige Algorithmen 11.Juni / 44

32 Intervall Scheduling - Beispiel 3. Ist die aktuelle Aufgabe mit der Ergebnismenge kompatibel, füge sie der Ergebnismenge hinzu b a c e d f g t Jennifer Naumann Gierige Algorithmen 11.Juni / 44

33 Intervall Scheduling - Beispiel 3. Ist die aktuelle Aufgabe mit der Ergebnismenge kompatibel, füge sie der Ergebnismenge hinzu b a c e d f g t Jennifer Naumann Gierige Algorithmen 11.Juni / 44

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

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

36 Scheduling mit Fristen - Beispiel Auftrag a b c d e f Frist Strafe Jennifer Naumann Gierige Algorithmen 11.Juni / 44

37 Aufträge, absteigend nach Strafe sortiert: Aufgabe b a f c e d Frist Strafe Gesuchter Ablaufplan: Zeiteinheit Auftrag Frist Strafe Jennifer Naumann Gierige Algorithmen 11.Juni / 44

38 Aufträge, absteigend nach Strafe sortiert: Aufgabe b a f c e d Frist Strafe Gesuchter Ablaufplan: Zeiteinheit Auftrag b Frist 2 Strafe 0 Jennifer Naumann Gierige Algorithmen 11.Juni / 44

39 Aufträge, absteigend nach Strafe sortiert: Aufgabe b a f c e d Frist Strafe Gesuchter Ablaufplan: Zeiteinheit Auftrag b a Frist 2 4 Strafe 0 0 Jennifer Naumann Gierige Algorithmen 11.Juni / 44

40 Aufträge, absteigend nach Strafe sortiert: Aufgabe b a f c e d Frist Strafe Gesuchter Ablaufplan: Zeiteinheit Auftrag f b a Frist Strafe Jennifer Naumann Gierige Algorithmen 11.Juni / 44

41 Aufträge, absteigend nach Strafe sortiert: Aufgabe b a f c e d Frist Strafe Gesuchter Ablaufplan: Zeiteinheit Auftrag c f b a Frist Strafe Jennifer Naumann Gierige Algorithmen 11.Juni / 44

42 Aufträge, absteigend nach Strafe sortiert: Aufgabe b a f c e d Frist Strafe Gesuchter Ablaufplan: Zeiteinheit Auftrag c f b a e Frist Strafe Jennifer Naumann Gierige Algorithmen 11.Juni / 44

43 Aufträge, absteigend nach Strafe sortiert: Aufgabe b a f c e d Frist Strafe Gesuchter Ablaufplan: Zeiteinheit Auftrag c f b d a e Frist Strafe Jennifer Naumann Gierige Algorithmen 11.Juni / 44

44 Aufträge, absteigend nach Strafe sortiert: Aufgabe b a f c e d Frist Strafe Gesuchter Ablaufplan: Zeiteinheit Auftrag c f b d a e Frist Strafe Strafe: = 30 Jennifer Naumann Gierige Algorithmen 11.Juni / 44

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

72 EllysPairs - Beispiel Jennifer Naumann Gierige Algorithmen 11.Juni / 44

73 EllysPairs - Beispiel Absteigend nach Wissensstand sortieren: 8 i j Jennifer Naumann Gierige Algorithmen 11.Juni / 44

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

75 EllysPairs - Beispiel i und j zur Ergebnismenge hinzufügen und beide um eine Stelle weitersetzen i j Ergebnismenge: Jennifer Naumann Gierige Algorithmen 11.Juni / 44

76 EllysPairs - Beispiel fertig i j Ergebnismenge: Jennifer Naumann Gierige Algorithmen 11.Juni / 44

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

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

79 TomekPhone Beispiel: 7 Zeichen, 3 Tasten, max. 3 Zeichen/Taste s n t h d i u Jennifer Naumann Gierige Algorithmen 11.Juni / 44

80 TomekPhone Beispiel: 7 Zeichen, 3 Tasten, max. 3 Zeichen/Taste s n t h d i u Zeichen sortiert h t d s i n u Jennifer Naumann Gierige Algorithmen 11.Juni / 44

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

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

83 Fragen Fragen? Jennifer Naumann Gierige Algorithmen 11.Juni / 44

84 Quellen Cormen: Introduction to algorithms, Chapter 16 Uwe Schöning: Algorithmik, Kapitel 5 HalloWelt-Vortragsfolien von früheren Semestern wayne/kleinberg-tardos/ 04GreedyAlgorithms.pdf SS10 Bild auf Folie 1: ScroogeMcDuck.jpg Jennifer Naumann Gierige Algorithmen 11.Juni / 44

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

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

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

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

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

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

Ü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

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

Informatik-Sommercamp 2012. Mastermind mit dem Android SDK

Informatik-Sommercamp 2012. Mastermind mit dem Android SDK Mastermind mit dem Android SDK Übersicht Einführungen Mastermind und Strategien (Stefan) Eclipse und das ADT Plugin (Jan) GUI-Programmierung (Dominik) Mastermind und Strategien - Übersicht Mastermind Spielregeln

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

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

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

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

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

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

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

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

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

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume Effiziente Algorithmen und Datenstrukturen I Kapitel 9: Minimale Spannbäume Christian Scheideler WS 008 19.0.009 Kapitel 9 1 Minimaler Spannbaum Zentrale Frage: Welche Kanten muss ich nehmen, um mit minimalen

Mehr

Programmieren I. Kapitel 7. Sortieren und Suchen

Programmieren I. Kapitel 7. Sortieren und Suchen Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren

Mehr

7. Übung zu Algorithmen und Datenstrukturen

7. Übung zu Algorithmen und Datenstrukturen 7. Übung zu Algorithmen und Datenstrukturen Dynamisches Programmieren Greedy Algorithms Exceptions 1 Dynamische Programmierung nutzt gezielt aus, dass man bei manchen Problemen den Rechenaufwand extrem

Mehr

Alignment-Verfahren zum Vergleich biologischer Sequenzen

Alignment-Verfahren zum Vergleich biologischer Sequenzen zum Vergleich biologischer Sequenzen Hans-Joachim Böckenhauer Dennis Komm Volkshochschule Zürich. April Ein biologisches Problem Fragestellung Finde eine Methode zum Vergleich von DNA-Molekülen oder Proteinen

Mehr

Tutorium 5 - Programmieren

Tutorium 5 - Programmieren Tutorium 5 - Programmieren Grischa Liebel Uni Karlsruhe (TH) Tutorium 11 1 Einleitung 2 Abschlussaufgaben 3 Vorlesungsstoff 4 Ergänzungen zum Vorlesungsstoff Grischa Liebel (Uni Karlsruhe (TH)) c 2008

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

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

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

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:

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

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

Methoden des Algorithmenentwurfs Kapitel 2.2: Randomisierte Online Algorithmen

Methoden des Algorithmenentwurfs Kapitel 2.2: Randomisierte Online Algorithmen Methoden des Algorithmenentwurfs Kapitel 2.2: Randomisierte Online Algorithmen Christian Scheideler SS 2009 16.07.2009 Kapitel 2 1 Übersicht Notation Paging Selbstorganisierende Suchstrukturen Finanzielle

Mehr

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

Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou Suchen Welche Telefonnummer hat Kurt Mehlhorn? Wie schreibt man das Wort Equivalenz?

Mehr

Datenstrukturen und Algorithmen SS07

Datenstrukturen und Algorithmen SS07 Datenstrukturen und Algorithmen SS07 Datum: 27.6.2007 Michael Belfrage mbe@student.ethz.ch belfrage.net/eth Programm von Heute Online Algorithmen Update von Listen Move to Front (MTF) Transpose Approximationen

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

Monte Carlo Methoden

Monte Carlo Methoden Monte Carlo Methoden im Verstärkungslernen [Spink] Bryan Spink 2003 Ketill Gunnarsson [ ketill@inf.fu-berlin.de ], Seminar zum Verstärkungslernen, Freie Universität Berlin [ www.inf.fu-berlin.de ] Einleitung

Mehr

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

Michael Philippsen 1. Algorithmen und Datenstrukturen. 9. Algorithmenherleitung durch Induktion. 9. Algorithmenherleitung durch Induktion 9. Algorithmenherleitung durch Induktion Algorithmen und Datenstrukturen 9. Algorithmenherleitung durch Induktion Prof. Dr. Christoph Pflaum Department Informatik Martensstraße 3 958 Erlangen 9. Induktionsformen

Mehr

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

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume

Mehr

ACS Data Systems AG. Bestellungen. (Version 10.08.2009) Buchhaltung für Schulen. ACS Data Systems AG. Bozen / Brixen / Trient. Tel +39 0472 27 27 27

ACS Data Systems AG. Bestellungen. (Version 10.08.2009) Buchhaltung für Schulen. ACS Data Systems AG. Bozen / Brixen / Trient. Tel +39 0472 27 27 27 ACS Data Systems AG Bestellungen (Version 10.08.2009) Buchhaltung für Schulen ACS Data Systems AG Bozen / Brixen / Trient Tel +39 0472 27 27 27 obu@acs.it 2 Inhaltsverzeichnis 1. BESTELLUNGEN... 3 1.1

Mehr

Prozesse und Scheduling

Prozesse und Scheduling Betriebssysteme für Wirtschaftsinformatiker SS04 KLAUSUR Vorbereitung mit Lösungen / Blatt 1 Prozesse und Scheduling Aufgabe 1 : Scheduling Gegeben seien die folgenden Prozesse und die Längen des jeweiligen

Mehr

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

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

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

Heuristiken im Kontext von Scheduling

Heuristiken im Kontext von Scheduling Heuristiken im Kontext von Scheduling Expertenvortrag CoMa SS 09 CoMa SS 09 1/35 Übersicht Motivation Makespan Scheduling Lokale Suche Weitere Metaheuristiken Zusammenfassung Literatur CoMa SS 09 2/35

Mehr

Tag 9: Datenstrukturen

Tag 9: Datenstrukturen Tag 9: Datenstrukturen A) Datenstrukturen B) Cell Arrays C) Anwendungsbeispiel: Stimulation in einem psychophysikalischen Experiment A) Datenstrukturen Wenn man komplizierte Datenmengen verwalten möchte,

Mehr

Wissensbasierte Systeme

Wissensbasierte Systeme WBS3 Slide 1 Wissensbasierte Systeme Sebastian Iwanowski FH Wedel Kap. 3: Algorithmische Grundlagen der KI WBS3 Slide 2 Suchstrategien Warum sind Suchstrategien so wichtig in Wissensbasierten Systemen?

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

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

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

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

Ein Algorithmus für die

Ein Algorithmus für die VGG 1 Ein Algorithmus für die Visualisierung gerichteter Graphen in der Ebene (2D) Seminar Graph Drawing SS 2004 bei Prof. Bischof (Lehrstuhl für Hochleistungsrechnen) Gliederung VGG 2 Einleitung Motivation

Mehr

16. All Pairs Shortest Path (ASPS)

16. All Pairs Shortest Path (ASPS) . All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e

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

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 5. Hashing 6. Algorithmische Geometrie 4/5, olie 1 2014 Prof. Steffen Lange - HDa/bI

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Konzepte der Informatik Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 16.10.2015 Technische Universität Braunschweig, IPS Inhaltsverzeichnis Suchen Binärsuche Binäre Suchbäume 16.10.2015 Dr. Werner

Mehr

4 Algorithmen und Datenstrukturen

4 Algorithmen und Datenstrukturen 4 Algorithmen und Datenstrukturen Algorithmen sind Verfahren zur schrittweisen Lösung von Problemen. Sie können abstrakt, d.h. unabhängig von konkreten Rechnern oder Programmiersprachen, beschrieben werden.

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

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

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

Wirtschaftsinformatik I

Wirtschaftsinformatik I Wirtschaftsinformatik I - Tutorium 6/ 7 (April 2010) Zusatzinformationen - Lösungsvorschläge Wirtschaftsinformatik I Tutorium Jochen Daum (4.Semester BWL) Universität Mannheim Rechtshinweis: Diese Präsentation

Mehr

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

Anleitung v3.1. Übersicht zeigt Ihnen alle Seiten Ihres Albums Seite zeigt eine bestimmte Seite Ihres Albums 3 Fotos und Text einfügen und ordnen Oben im Programmfenster sehen Sie zwei Registerkarten: Anleitung v3.1 Übersicht zeigt Ihnen alle Seiten Ihres Albums Seite zeigt eine bestimmte Seite Ihres Albums Doppelklicken

Mehr

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

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1 Sortieren durch Einfügen Prof. Dr. W. Kowalk Sortieren durch Einfügen 1 Schon wieder aufräumen Schon wieder Aufräumen, dabei habe ich doch erst neulich man findet alles schneller wieder Bücher auf Regal

Mehr

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

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen 9.2.5 HUT 9.2.5 3 atenstrukturen im omputer atenstrukturen ie beiden fundamentalen atenstrukturen in der Praxis sind rray und Liste Rekursion Feedback valuation rray Zugriff: schnell Umordnung: langsam

Mehr

Sortieren. Eine Testmenge erstellen

Sortieren. Eine Testmenge erstellen Sortieren Eine der wohl häufigsten Aufgaben für Computer ist das Sortieren, mit dem wir uns in diesem Abschnitt eingeher beschäftigen wollen. Unser Ziel ist die Entwicklung eines möglichst effizienten

Mehr

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

Informatik Biber. Lehrmittel für die informatische Bildung an der Sekundarstufe I. Kopiervorlagen. Informatik Biber Informatik Biber Informatik Biber Lehrmittel für die informatische Bildung an der Sekundarstufe I Kopiervorlagen Verkehr Optimieren Wie finde ich die bester Rundreise? Inhaltsverzeichnis Lernaufgaben ohne

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

Der naldo-offline-handyfahrplan

Der naldo-offline-handyfahrplan Der naldo-offline-handyfahrplan Erste Schritte mit dem neuen naldo-offline-handyfahrplan Bedienungsanleitung Inhaltsverzeichnis: 1. Erster Programmstart 2. Die Programmbedienung 3. Favoriten 4. Meine Fahrten

Mehr

Approximationsalgorithmen

Approximationsalgorithmen Makespan-Scheduling Kapitel 4: Approximationsalgorithmen (dritter Teil) (weitere Beispiele und Illustrationen an der Tafel) Hilfreiche Literatur: Vazarani: Approximation Algorithms, Springer Verlag, 2001.

Mehr

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

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 Reihungen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende Algorithmen auf Reihungen

Mehr

Algorithmen mit Python

Algorithmen mit Python Algorithmen mit Python Vorbesprechung zum Proseminar im Sommersemester 2009 http://www.python.org 1 Sie lernen in DAP Java und C/C++: 80% Syntax, 20% Algorithmen-Design Idee Schon ein einfaches Hello World

Mehr

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

1.) Soll die gesamte Spalte oder Zeile ausgewählt werden, reicht es auf den Spalten-/Zeilenkopf (Ziffer bzw. Buchstabe) zu klicken Leitfaden für Excel Inhaltsverzeichnis Grundsätzliches... 3 Nützliche Tastenkombinationen... 4 Die oberste Zeile einer Tabelle fixieren... 5 Eine Seite einrichten (für ein übersichtliches Layout beim Drucken)...

Mehr

Lenstras Algorithmus für Faktorisierung

Lenstras Algorithmus für Faktorisierung Lenstras Algorithmus für Faktorisierung Bertil Nestorius 9 März 2010 1 Motivation Die schnelle Faktorisierung von Zahlen ist heutzutage ein sehr wichtigen Thema, zb gibt es in der Kryptographie viele weit

Mehr

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

Schritt für Schritt Anleitung zum Erstellen einer Android-App zum Ein- und Ausschalten einer LED Schritt für Schritt Anleitung zum Erstellen einer Android-App zum Ein- und Ausschalten einer LED Mit Google Chrome nach MIT App Inventor suchen. In den Suchergebnissen (siehe unten) auf

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

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

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015. Vorlesung 8, Donnerstag 11. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 8, Donnerstag 11. Dezember 2014 (Cache-Effizienz, Teile und Herrsche) Junior-Prof. Dr.

Mehr

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

A) Einleitung. Kurzanleitung. Weebly ist ein Websitegenerator mit dem du einfach eine eigene Website zusammen- bauen Kurzanleitung A) Einleitung Weebly ist ein Websitegenerator mit dem du einfach eine eigene Website zusammen- bauen kannst. Bei der Arbeit wirst du auch noch ein paar Wörter Englisch lernen. Die wichtigsten

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

Gezielt über Folien hinweg springen

Gezielt über Folien hinweg springen Gezielt über Folien hinweg springen Nehmen wir an, Sie haben eine relativ große Präsentation. Manchmal möchten Sie über Folien hinweg zu anderen Folien springen. Das kann vorkommen, weil Sie den gesamten

Mehr

Theoretische Informatik

Theoretische Informatik Theoretische Informatik für die Studiengänge Ingenieur-Informatik berufsbegleitendes Studium Lehramt Informatik (Sekundar- und Berufsschule) http://theo.cs.uni-magdeburg.de/lehre04s/ Lehrbeauftragter:

Mehr

Kodierungsalgorithmen

Kodierungsalgorithmen Kodierungsalgorithmen Komprimierung Verschlüsselung Komprimierung Zielsetzung: Reduktion der Speicherkapazität Schnellere Übertragung Prinzipien: Wiederholungen in den Eingabedaten kompakter speichern

Mehr

Programmentwicklungen, Webseitenerstellung, Zeiterfassung, Zutrittskontrolle

Programmentwicklungen, Webseitenerstellung, Zeiterfassung, Zutrittskontrolle Version LG-TIME /Office A 8.3 und höher Inhalt 1. Allgemeines S. 1 2. Installation S. 1 3. Erweiterungen bei den Zeitplänen S. 1;2 4. Einrichtung eines Schichtplanes S. 2 5. Einrichtung einer Wechselschicht

Mehr

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

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen reguläre Grammatiken/prachen Beschreibung für Bezeichner in Programmiersprachen Beschreibung für wild cards in kriptsprachen (/* reguläre Ausdrücke */)?; [a-z]; * kontextfreie Grammatiken/prachen Beschreibung

Mehr

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

Undirected Single-Source Shortest Paths with Positive Integer Weights in Linear Time Universität Konstanz Mathematisch-naturwissenschaftliche Sektion Fachbereich Mathematik und Statistik Wintersemester 2001/02 Mikkel Thorup: Undirected Single-Source Shortest Paths with Positive Integer

Mehr

Algorithmik - Kompaktkurs

Algorithmik - Kompaktkurs Algorithmik - Kompaktkurs Sommersemester 2012 Steffen Lange 0/1, Folie 1 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik Organisatorisches Vorlesung Folien im Netz (/* bitte zur Vorlesung mitbringen */)

Mehr

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

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik Grundlagen der Programmierung 1 Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2 Softwaretechnik Prof. Dr. O. Drobnik Professur Architektur und Betrieb verteilter Systeme Institut für

Mehr

. TYPO3-Plug-in u:cris

. TYPO3-Plug-in u:cris . TYPO3-Plug-in u:cris Zentraler Informatikdienst der Universität Wien Stand: Jänner 2014 TYPO3-Version 4.5 Dieses Handbuch ist eine Übersicht zum Einsatz des TYPO3-Plug-ins u:cris. Naturgemäß würde die

Mehr

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

1. Software installieren 2. Software starten. Hilfe zum Arbeiten mit der DÖHNERT FOTOBUCH Software 1. Software installieren 2. Software starten Hilfe zum Arbeiten mit der DÖHNERT FOTOBUCH Software 3. Auswahl 1. Neues Fotobuch erstellen oder 2. ein erstelltes, gespeichertes Fotobuch laden und bearbeiten.

Mehr

Sortierverfahren. Sortierverfahren für eindimensionale Arrays

Sortierverfahren. Sortierverfahren für eindimensionale Arrays Sortierverfahren Sortierverfahren Sortieren durch Einfügen Sortieren durch Auswählen Sortieren durch Vertauschen (Bubblesort) Quicksort Sortierverfahren für eindimensionale Arrays 1 Gegeben ist eine beliebige

Mehr

Die Verbindung von Linearer Programmierung und Graphentheorie

Die Verbindung von Linearer Programmierung und Graphentheorie Die Verbindung von Linearer Programmierung und Graphentheorie Definition 5.9. Ein kombinatorisches Optimierungsproblem entspricht einem LP, bei dem statt der Vorzeichenbedingungen x i 0 Bedingungen der

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm 1 Vom Problem zum Programm Ein Problem besteht darin, aus einer gegebenen Menge von Informationen eine weitere (bisher unbekannte) Information zu bestimmen. 1 Vom Problem zum Programm Ein Algorithmus ist

Mehr

Maximizing the Spread of Influence through a Social Network

Maximizing the Spread of Influence through a Social Network 1 / 26 Maximizing the Spread of Influence through a Social Network 19.06.2007 / Thomas Wener TU-Darmstadt Seminar aus Data und Web Mining bei Prof. Fürnkranz 2 / 26 Gliederung Einleitung 1 Einleitung 2

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

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

Technische Informatik I. Übung 3 Speicherhierarchie. v t d 0 d 1 d 2 d 3 0 1 2 3. Technische Informatik I Übung 3. Technische Informatik I Übung 3 Institut für Kommunikationsnetze und Rechnersysteme Technische Informatik I Paul J. Kühn, Matthias Meyer Übung 3 Speicherhierarchie Inhaltsübersicht Aufgabe 3.1 Daten-Cache Aufgabe 3.2 Virtueller Speicher

Mehr

Punktbeschriftung in Dynamischen Karten

Punktbeschriftung in Dynamischen Karten Vorlesung Algorithmische Kartografie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Benjamin Niedermann Martin Nöllenburg 28.05.2015 1 Übungen Nachtrag 1) Überlegen Sie sich, wie man den

Mehr

Nutzerhilfe Excel-Produkte

Nutzerhilfe Excel-Produkte Nutzerhilfe zur Arbeit in Microsoft Excel-basierten Produkten der Statistik der BA am Beispiel der Übergangsanalysen erwerbsfähiger Hilfebedürftiger bzw. Arbeitsloser - Excel-Version 2007 - Seite 1 Impressum

Mehr

DEN COMPUTER AUFRÜSTEN

DEN COMPUTER AUFRÜSTEN Capitolo 4 potenziare il computer K A P I T E L 4 DEN COMPUTER AUFRÜSTEN In diesem Kapitel wird erklärt, wie Sie Systemspeicher und Festplatte aufrüsten können, und wie die optionale interne kabellose

Mehr

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

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009) Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009) Probleme unseres Alltags E-Mails lesen: Niemand außer mir soll meine Mails lesen! Geld abheben mit der EC-Karte: Niemand außer mir soll

Mehr

Über Arrays und verkettete Listen Listen in Delphi

Über Arrays und verkettete Listen Listen in Delphi Über Arrays und verkettete Listen Listen in Delphi Michael Puff mail@michael-puff.de 2010-03-26 Inhaltsverzeichnis Inhaltsverzeichnis 1 Einführung 3 2 Arrays 4 3 Einfach verkettete Listen 7 4 Doppelt verkettete

Mehr

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: AVL-Bäume Analyse (Folie 85, Seite 39 im Skript) Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: 0 falls n = 0 F n = 1 falls

Mehr

KOMPRIMIERUNGS & VERSCHLÜSSELUNGS- TOOL

KOMPRIMIERUNGS & VERSCHLÜSSELUNGS- TOOL SECRETZIP KOMPRIMIERUNGS- & VERSCHLÜSSELUNGS-Programm (nur für Windows) Das Programm ist auf dem USB Flash Drive enthalten. Bitte lesen Sie das Handbuch für den USB Flash Drive oder besuchen Sie integralmemory.com,

Mehr

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

Branch-and-Bound. Wir betrachten allgemein Probleme, deren Suchraum durch Bäume dargestellt werden kann. Innerhalb des Suchraums suchen wir Effiziente Algorithmen Lösen NP-vollständiger Probleme 289 Branch-and-Bound Wir betrachten allgemein Probleme, deren Suchraum durch Bäume dargestellt werden kann. Innerhalb des Suchraums suchen wir 1.

Mehr

Vodafone TV Manager. Benutzerhandbuch Stand Juni 2015

Vodafone TV Manager. Benutzerhandbuch Stand Juni 2015 Vodafone TV Manager Benutzerhandbuch Stand Juni 05 Inhalt Erste Schritte. Download der App. Mit dem Vodafone TV Center verbinden 3. Hauptmenü verwenden 4. Virtuelle Fernbedienung nutzen TV-Programm. TV-Programm

Mehr

Installationsanleitung für den Online-Backup Client

Installationsanleitung für den Online-Backup Client Installationsanleitung für den Online-Backup Client Inhalt Download und Installation... 2 Login... 4 Konfiguration... 5 Erste Vollsicherung ausführen... 7 Webinterface... 7 FAQ Bitte beachten sie folgende

Mehr

6. Algorithmen der Computer-Geometrie

6. Algorithmen der Computer-Geometrie 6. Algorithmen der Computer-Geometrie 1. Einführung 2. Schnitt von zwei Strecken 3. Punkt-in-Polygon-Test 4. Schnitt orthogonaler Strecken 5. Punkteinschlussproblem Geo-Informationssysteme 146 6.1 Computer-Geometrie

Mehr

Statistische Untersuchungen zu endlichen Funktionsgraphen

Statistische Untersuchungen zu endlichen Funktionsgraphen C# Projekt 1 Name: Statistische Untersuchungen zu endlichen Funktionsgraphen Aufgabe: Basierend auf dem Abschnitt 2.1.6. Random mappings, Kap.2, S 54-55, in [1] sollen zunächst für eine beliebige Funktion

Mehr

Parallele Programmierung

Parallele Programmierung Parallele Programmierung Serie 2 Cebulla Alexander, Maciej Zbigniew Besta, Mueller Urs, Florian Negele, Pravin Shinde, Roth Renzo, Huber Sandro, Severin Heiniger, Stuecklberger Christian, Gehr Timon, Michel

Mehr