Konzepte der Informatik

Ähnliche Dokumente
Konzepte der Informatik

Konzepte der Informatik

Algorithmen und Datenstrukturen

Der Branching-Operator B

Von Labyrinthen zu. Algorithmen

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18.

Konzepte der Informatik

Einstieg in die Informatik mit Java

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2

1 Zahlentheorie. 1.1 Kongruenzen

Greedy Algorithms - Gierige Algorithmen

Algorithmen und Datenstrukturen I Grundlagen

Konzepte der Informatik

Übersicht. Aktivitäten-Auswahl-Problem. Greedy Algorithmen. Aktivitäten-Auswahl-Problem. Aktivitäten-Auswahl-Problem. Datenstrukturen & Algorithmen

Komplexität von Algorithmen:

Konzepte der Informatik

Vom Leichtesten zum Schwersten Sortieralgorithmen

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

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Algorithmen und Komplexität

Algorithmen und Datenstrukturen

Problemreduktion durch Transformation am Beispiel des. Erweiterten Euklidschen Algorithmus

Theoretische Informatik. Exkurs: Komplexität von Optimierungsproblemen. Optimierungsprobleme. Optimierungsprobleme. Exkurs Optimierungsprobleme

Kapitel 1 Einleitung. Definition: Algorithmus nach M. Broy: aus: Informatik: Eine grundlegende Einführung, Band 1, Springer-Verlag, Berlin

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Datenstrukturen und Algorithmen

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III

Datenstrukturen & Algorithmen

Konvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510

Vorkurs Informatik WiSe 16/17

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Theoretische Grundlagen der Informatik

Vorkurs Informatik WiSe 15/16

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

Sortieren durch Einfügen

Algorithmen in Zellularautomaten

Die Menge C der komplexen Zahlen wird im Kapitel Weitere Themen behandelt.

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Vorkurs Beweisführung

5. Bäume und Minimalgerüste

Konzepte der Informatik

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

Theorieseminar Perlen der theoretischen Informatik

3. Übungsblatt zu Algorithmen I im SoSe 2017

Approximationsalgorithmen. 19. Dezember / 28

Übung Algorithmen und Datenstrukturen

2. Hausübung Algorithmen und Datenstrukturen

Universität des Saarlandes

G. Zachmann Clausthal University, Germany Die wichtigsten Entwurfsverfahren für Algorithmen:

Wir wollen nun die Behauptung beweisen, dass die Laufzeit von SELECT linear ist, also dass T (n) = O(n) gilt.

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Diskrete Strukturen Kapitel 2: Grundlagen (Mengen)

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

Inhalt. 8.1 Motivation. 8.2 Optimierung ohne Nebenbedingungen. 8.3 Optimierung unter Nebenbedingungen. 8.4 Lineare Programmierung

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 10 (Kapitel 11)

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

Schnelle Multiplikation

Dynamische Programmierung

Schnittebenenverfahren für das symmetrische

Algorithmen und Datenstrukturen

Welche Probleme können Rechner (effizient) lösen? Die P = NP Frage. Ideen der Informatik Kurt Mehlhorn

Algorithmenbegriff: Berechenbarkeit. Algorithmenanalyse. (Berechnung der Komplexität)

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

5.4 Das Rucksackproblem

Vorlesung. Vollständige Induktion 1

Übungsblatt 5. Vorlesung Theoretische Grundlagen der Informatik im WS 17/18

Relationen und DAGs, starker Zusammenhang

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Klausur Algorithmen I

9 Minimum Spanning Trees

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

Kap. 7.1 Heuristiken Kap. 7.2 Approximative Algorithmen und Gütegarantien

WS 2009/10. Diskrete Strukturen

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

Dynamisches Programmieren - Problemstruktur

Hallo Welt für Fortgeschrittene

Logik. Ernest Peter Propädeutikum Mathematik Informatik/Wirtschaftsinformatik, Block Aussage

Schleifeninvarianten. Dezimal zu Binär

Vorlesung Datenstrukturen

20. Dynamic Programming II

3. Diskrete Mathematik

2. Algorithmen und Algorithmisierung Algorithmen und Algorithmisierung von Aufgaben

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

2.6 Asymptotische Approximation: Min Binpacking

Proseminar Online Algorithmen, Prof. Dr. Rolf Klein

Transkript:

Konzepte der Informatik Vorkurs Informatik zum WS 2/212 2.9. - 3.9.2 17.1. - 21.1.2 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 3 aus "Abenteuer Informatik" von Jens Gallenbacher Vorkurs Informatik 2 1

Wiederholung Grundsätzliche Problematik: Wie nutze ich vorhandenen Platz am effektivsten aus? Problemgröße hängt von folgenden Faktoren ab Anzahl und Beschaffenheit (Größe und Wert) der Schätze Größe der Schatzkiste Mannigfaltige Variation der Problemgrößen Dimensionalität der Gegenstände: ein-, zwei- oder dreidimensional Teilbarkeit der Gegenstände Beschaffenheit der Größe und des Werts der Gegenstände Nur ganzzahlige bzw. diskrete Größen bzw. Werte Meist werden die Gegenstände abstrahiert: Rechtecke und Quader anstatt der eigentlichen Form Verfügbarkeit der Gegenstände: einmal, n-mal oder unbegrenzter Vorrat Vorkurs Informatik 2 2

Die Problematik Bereits an diesem einfachen Beispiel sieht man, dass es gar nicht so leicht ist, eine optimale Lösung aus allen Gegenständen zu finden. Man könnte sechs Goldbarren in eine Kiste der Länge 12 packen: Damit bekommen die Gegenstände in der Kiste einen Gegenwert von 3 Goldtalern, aber 44 Goldtaler in Form von 4 Geldbündeln sind doch besser! Man sieht: Eine Lösung bekommt man sicher durch herum probieren. Aber ist die gefundene Lösung auch das Optimum? Vorkurs Informatik 2 3

Brute-Force Das Optimum bekommt man immer durch das systematische Probieren aller Möglichkeiten (Brute-Force), wobei jeweils die bessere Lösung beibehalten wird. Das aber nur bei relativ kleinen Problemgrößen machbar. Da aber alle Gegenstände miteinander kombiniert werden können, steigt die Anzahl der Möglichkeiten mit der Vergrößerung der Kiste exponentiell. Das Problem wird sehr schnell unüberschaubar und nicht mehr lösbar. Für das /1-Rucksackproblem, bei dem jeder Schatz genau einmal existiert und entweder eingepackt werden kann oder nicht, kann man den Aufwand für eine Brute-Force-Vorgehensweise mit 2^n angeben. Vorkurs Informatik 2 4

5 Vorkurs Informatik 2 Brute-Force (/1 Rucksackproblem) A B C D E E D E E C D E E D E E B C D E E D E E C D E E D E E Rein Raus Inhalt: C, D, E Inhalt: A, C, D Inhalt: A, B, C, D, E Das Rucksackproblem

Algorithmische Betrachtung Teile und Herrsche Das Problem wird in kleinere Teilprobleme, die separat gelöst werden, aufgeteilt Bedingung: Annäherung an die Gesamtlösung, wenn man eine Teillösung gefunden hat Anwendung auf das Rucksackproblem: Bin ich der Lösung des Problems mit Schätzen und einer Kiste, die Einheiten fasst, näher, wenn ich die Lösung für das Problem mit 5 Schätzen und einer Kiste, die Einheiten fasst, bereits gefunden habe? Vorkurs Informatik 2

Algorithmische Betrachtung Beispiele für optimale Kisten der Größe sieben, acht und neun: 23 35 4 Vorkurs Informatik 2 7

Dynamische Programmierung Ein weiterer Ansatz zur Lösung komplexer Probleme ist die "Dynamische Programmierung" Keine Aufteilung des Problems in disjunkte Teilprobleme Z.B. Sortiere die linke und die rechte Hälfte einer Liste und füge sie sortiert zusammen Betrachtung "aller" Teilprobleme Für das Rucksackproblem mit k Schätzen und einer Kiste der Größe n: Löse das Problem für alle Größen 1-n und jede Anzahl von Schätzen 1-k, beginnend mit den kleinsten Schätzen "Weniger Arbeit durch das Lösen von mehr Problemen" oder "Mehr ist weniger" Vorkurs Informatik 2 8

Dynamische Programmierung - Voraussetzungen Voraussetzungen Problemgrößen müssen abzählbar (diskret) sein Einzelner Lösungsschritt muss linear sein Auswirkung auf das Rucksackproblem Keine Fließkommawerte für Größe oder Wert Eindimensionale Kiste Es gibt nur die Alternativen "Schatz enthalten ja oder nein". Es gibt keine unterschiedlichen Möglichkeiten einen Schatz in die Kiste zu packen. Die einzelnen Schätze müssen beliebig oft verfügbar sein Vorkurs Informatik 2 9

Dynamische Programmierung - Voraussetzungen Einteilung der zu füllenden Schatzkiste in Flächenquadrate Betrachtung der Größe aller Schätze als ein Vielfaches eines Flächenquadrates Hier abgebildet ist der kleinste Schatz, ein Goldbarren mit einem Wert von Goldtalern. Vorkurs Informatik 2 1

Die Schätze Übersicht der verschiedenen Schätze: 45 4 15 35 23 27 25 Vorkurs Informatik 2

Anwendung von Dynamischer Programmierung Lösung "aller" Probleme gleichzeitig: Nutzung einer Maxikiste Eine Kiste, die gleichzeitig auch alle kleineren beinhaltet Sukzessives Lösen des Problems für alle Kistengrößen mit dem jeweils nächstgrößeren Schatz Grundlegendes Vorgehen: Teste für jede Größe, ob das Einfügen eines neuen Schatzes einen Zugewinn bringt Vorkurs Informatik 2 12

Anwendung von Dynamischer Programmierung Anhand des ersten Schatzes lässt sich das grundlegende Vorgehen leicht veranschaulichen: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. Vorkurs Informatik 2 13

Anwendung von Dynamischer Programmierung Anhand des ersten Schatzes lässt sich das grundlegende Vorgehen leicht veranschaulichen: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. Vorkurs Informatik 2 14

Anwendung von Dynamischer Programmierung Anhand des ersten Schatzes lässt sich das grundlegende Vorgehen leicht veranschaulichen: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. Vorkurs Informatik 2 15

Anwendung von Dynamischer Programmierung Anhand des ersten Schatzes lässt sich das grundlegende Vorgehen leicht veranschaulichen: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. Vorkurs Informatik 2 1

Anwendung von Dynamischer Programmierung Anhand des ersten Schatzes lässt sich das grundlegende Vorgehen leicht veranschaulichen: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. 12 Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. Vorkurs Informatik 2 17

Anwendung von Dynamischer Programmierung Anhand des ersten Schatzes lässt sich das grundlegende Vorgehen leicht veranschaulichen: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 12 12 Vorkurs Informatik 2 18

Anwendung von Dynamischer Programmierung Bei nur einen Schatz: relativ komplizierter Algorithmus um alle Schatzkisten optimal mit einem Schatz zu füllen. Problem für alle Größen und nur einen Schatz gelöst Lösung auf der für die weiteren Schätze aufgebaut werden kann 12 12 18 18 24 24 3 3 3 Vorkurs Informatik 2 19

Anwendung von Dynamischer Programmierung Nimmt man den nächstgrößeren Schatz dazu, so ist das Vorgehen exakt das gleiche: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 12 12 18 18 24 24 3 3 3 Vorkurs Informatik 2 2

Anwendung von Dynamischer Programmierung Nimmt man den nächstgrößeren Schatz dazu, so ist das Vorgehen exakt das gleiche: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 12 12 18 18 24 24 3 3 3 Vorkurs Informatik 2 21

Anwendung von Dynamischer Programmierung Nimmt man den nächstgrößeren Schatz dazu, so ist das Vorgehen exakt das gleiche: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 12 12 18 18 24 24 3 3 3 Vorkurs Informatik 2 22

Anwendung von Dynamischer Programmierung Nimmt man den nächstgrößeren Schatz dazu, so ist das Vorgehen exakt das gleiche: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 17 12 12 18 18 24 24 3 3 3 Vorkurs Informatik 2 23

Anwendung von Dynamischer Programmierung Nimmt man den nächstgrößeren Schatz dazu, so ist das Vorgehen exakt das gleiche: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 17 12 17 12 18 18 24 24 3 3 3 Vorkurs Informatik 2 24

Anwendung von Dynamischer Programmierung Nimmt man den nächstgrößeren Schatz dazu, so ist das Vorgehen exakt das gleiche: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 22 12 17 12 18 18 24 24 3 3 3 Vorkurs Informatik 2 25

Anwendung von Dynamischer Programmierung Nimmt man den nächstgrößeren Schatz dazu, so ist das Vorgehen exakt das gleiche: Lege den neuen Schatz der Reihe nach hinter die vorhandenen Schatzkisten (rot); beginne mit der kleinsten. Suche die Kiste mit folgender Länge: Länge der aktuellen Schatzkiste plus Länge des aktuellen Schatzes (blau) Vergleiche den Wert der beiden so gewählten Kisten Ist der Wert der Kiste mit dem neuen Schatz (rot) größer, fülle die andere Kiste (blau) wie erstere. 22 12 17 12 22 18 18 24 24 3 3 3 Vorkurs Informatik 2 2

Anwendung von Dynamischer Programmierung Bis zum Ende durchgeführt ergibt sich das folgende Bild. Problem für alle Größen und zwei Schätzen gelöst Lösung auf der für die weiteren Schätze aufgebaut werden kann 12 17 12 22 18 23 18 28 24 33 24 34 3 39 3 44 3 Vorkurs Informatik 2 27

Anwendung von Dynamischer Programmierung Und auch beim Schatz mit der Länge vier muss man nicht umdenken 15 12 17 12 22 18 23 18 28 24 33 24 34 3 39 3 44 3 15 Vorkurs Informatik 2 28

Anwendung von Dynamischer Programmierung Und auch beim Schatz mit der Länge vier muss man nicht umdenken 15 15 12 17 12 22 18 23 18 28 24 33 24 34 3 39 3 44 3 15 15 Vorkurs Informatik 2 29

Anwendung von Dynamischer Programmierung Nachdem wir nun den Algorithmus auch mit dem dritten Schatz durchexerziert haben, sollte das Prinzip klar sein. Zeit sich die Frage zu stellen, ob das, was wir machen auch funktioniert 15 12 17 12 22 18 15 2 23 18 15 3 28 24 15 15 33 24 37 34 3 15 41 39 3 15 15 45 44 3 15 15 15 Vorkurs Informatik 2 3

Dynamische Programmierung - Korrektheitsbeweis Die Korrektheit lässt sich per Induktion beweisen, d.h. wir zeigen die Korrektheit für den trivialen Fall (nur ein Schatz) und beweisen, dass die Behauptung sofern sie für n Schätze gilt auch für n+1 Schätze gilt. Vorgehen allgemein: Wir kombinieren immer den Inhalt einer bereits optimal gepackten Kiste A mit einem Schatz S, wofür wir eine Kiste B benötigen, deren Größe der Größe der Kiste A plus des Schatzes S entspricht. Für den Trivialfall (n = 1) ist die Korrektheit sofort zu sehen. Für n = n + 1 gibt es folgende Alternativen Man benötigt den neu hinzugekommenen Schatz S nicht, dann bleibt die Kiste, so wie sie ist, erhalten und damit weiterhin optimal. Benötigt man den neu hinzugekommenen Schatz, so ist in der neuen optimalen Kiste neben dem hinzugekommenen Schatz noch Platz für soviele Elemente, wie es sie auch in Kiste A gibt. Da Kiste A bereits optimal gefüllt war, muss also auch Kiste B optimal gefüllt sein. Vorkurs Informatik 2 31

Dynamische Programmierung - Ergebnis Nachdem die Korrektheit des Verfahrens bewiesen ist, können wir es auf die weiteren Schätze anwenden und erhalten das nebenstehende Ergebnis. Damit sind die optimalen Lösungen für alle Kisten gefunden. 15 12 23 17 12 25 23 22 18 15 23 25 Erstaunlich, dass in der Siegerkiste der Größe 12 ein Goldbarren eingepackt wurde, der auf den ersten Blick als kein vielversprechender Kandidat galt. 29 2 23 18 35 34 3 28 24 4 38 33 24 4 37 34 3 48 41 39 3 52 45 44 3 23 35 4 23 23 23 25 23 23 Vorkurs Informatik 2 32

Das Rucksackproblem - der Algorithmus Für den folgenden Algorithmus werden wie die eingangs vorgestellten Struktogramme verwenden. Dafür werden wir zwei Pfeile als Zeiger auf die aktuell betrachteten Kisten verwenden. Kiste A Kiste B Vorkurs Informatik 2 33

Das Rucksackproblem Struktogramm Nehme den kleinsten Schatz zur Hand Solange man noch einen Schatz in der Hand hält Setze Kiste A neben die Kiste mit Größe Solange Kiste A auf eine Kiste zeigt Lege den Schatz rechts an die Kiste, auf die Kiste A zeigt Lege Kiste B neben die Kiste, die so groß ist wie die neben Kiste A und dem Schatz zusammen Überprüfe, ob der Inhalt von Kiste A plus dem Schatz wertvoller ist als der Inhalt von Kiste B Wenn JA: Fülle Kiste B so, dass sie dem Inhalt von Kiste A plus dem Schatz entspricht Schiebe Kiste A um eine Position nach unten Lege den Schatz aus der Hand und nimm den nächst größeren Schatz in die Hand, falls es noch einen größeren gibt Vorkurs Informatik 2 34

Algorithmus Ja oder Nein? Ist das beschriebene Verfahren ein Algorithmus? Das Verfahren ist in einem endlichen Text durch ein Struktogramm beschrieben. Die Objekte der Berechnung sind die Kisten und Schätze. Die Operationen sind das Vergleichen und Füllen von Kisten. Die Reihenfolge der Operationen ist ebenfalls durch das Struktogramm festgelegt. Das Verfahren ist ein Algorithmus. Vorkurs Informatik 2 35

Laufzeit Vorkurs Informatik 2 3

Laufzeit Anzahl Schritte = Anzahl der Kisten * Anzahl der Schätze Vorkurs Informatik 2 37

Laufzeit Anzahl Schritte = Anzahl der Kisten * Anzahl der Schätze Beachte: "Fülle Kiste B so, dass sie dem Inhalt von Kiste A plus dem Schatz entspricht" (türkiser Block) könnte je nach Implementierung eine implizite Schleife beinhalten, sodass sogar eine kubische Laufzeit gegeben wäre Vorkurs Informatik 2 38

Vielen Dank für Ihre Aufmerksamkeit! Vorkurs Informatik 2 39