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

Größe: px
Ab Seite anzeigen:

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

Transkript

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

2 Übersicht 1. Ziele des Kapitels 2. Bereits behandelte Lösungsstrategien 3. Backtracking 4. Branch-and-Bound 5. Weiterführende Lösungsstrategien 2

3 1. Ziele des Kapitels Kapitel C++ und SW Engineering Algorithmen und Datenstrukturen 1 2 Ein- / Ausgabe mit Dateien, Ausnahmebehandlung Vererbung 4 3 Abstrakte Datentypen + Klassen-Templates Überladen von Operatoren 5 Sortieren und Suchen 6 Bäume 7 Graphen 8 Allgemeine Lösungsverfahren 3

4 1. Ziele des Kapitels Dieses Kapitel richtet sich besonders an die Lösung von Problemen, für die (noch) kein (offensichtlicher) Algorithmus existiert. Hierfür werden Standard- Verfahren wie Backtracking oder Branch-and-Bound heran gezogen, die einem allgemeinen Schema folgen und somit universell einsetzbar sind. Hiermit ist es möglich je nach Problemstellung irgendeine, alle oder die optimale Lösung zu finden. In diesem Zusammenhang kommen weitere algorithmische Standard-Problem (z.b. das Rucksack-Problem) zur Sprache. 4

5 2. Bereits behandelte Lösungsstrategien 2.1 Divide-and-Conquer Divide-and-Conquer (D&C) ist in dieser Veranstaltung bereits des öfteren vorgestellt und angewendet worden: Ein Problem wird solange (rekursiv) zerlegt, bis man bei einer einfach zu lösenden atomaren Größe angelangt ist. Danach werden die Einzellösungen zu jeweils größeren kombiniert. Vor- und Nachteile: D&C-Ansätze sind immer sehr speziell an einem Problem orientiert, d.h. es gibt keine allgemeine Standard-Vorgehensweise. Sehr gute Resultate werden erzielt z.b. beim MergeSort und Quicksort Schlechte hingegen z.b. bei der Berechnung der Fibonacci-Zahlen 5

6 2. Bereits behandelte Lösungsstrategien 2.2 Dynamische Programmierung Dynamische Programmierung (DP) bedeutet: Zuerst die Lösungen der kleinsten Teilprobleme direkt zu berechnen, und diese dann geeignet zu einer Lösung eines nächstgrößeren Teilproblems zusammenzusetzen. Einmal berechnete Teilergebnisse werden in einer Tabelle gespeichert, so dass nachfolgende Berechnungen gleichartiger Teilprobleme auf diese zurückgreifen können (anstatt sie jedes Mal neu zu berechnen). Vor- und Nachteile: Im Vergleich zu D&C, vermeidet DP kostspielige Rekursionen, weil bekannte Teilergebnisse wiederverwendet werden. DP-Ansätze sind immer sehr speziell an einem Problem orientiert und bedürfen einer fundierten mathematischen Grundlage. Fehlt diese oder ändert sich die Problemstellung auch nur geringfügig ist DP nicht anwendbar. Mit DP lassen sich sehr effiziente Lösungen erzielen (z.b. Fibonacci- Zahlen, Kürzeste Wege) 6

7 3. Backtracking In der allgemeinen Problemlösung geht es darum, einen Algorithmus zum Finden von Lösungen einer Gruppe von Problemen zu bestimmen und zwar nicht durch Befolgen einer direkten Vorschrift für die Berechnung, sondern durch Ausprobieren (trial and error). Solche Algorithmen sind erst seit dem Beginn des Computer-Zeitalters von Bedeutung. Wir betrachten: das Finden (irgend) einer Lösung das Finden aller Lösungen das Finden der/einer optimalen Lösung 7

8 3. Backtracking 3.1 Das Damen Problem Dies wird dargestellt mit Hilfe eines algorithmischen Klassikers: Es sollen jeweils acht Damen auf einem Schachbrett so aufgestellt werden, dass keine zwei Damen einander nach den Schachregeln schlagen können. Oder anders ausgedrückt: Es sollen sich keine zwei Damen die gleiche Reihe, Linie oder Diagonale teilen. Das Problem kann auf Schachbretter beliebiger Größe verallgemeinert werden. Dann gilt es, n Damen auf einem Brett von n x n Feldern zu positionieren. Für n=8 hat das Damenproblem 92 verschiedene Lösungen. Betrachtet man Lösungen als gleich, die sich durch Spiegelung oder Drehung des Brettes aus einander ergeben, verbleiben noch zwölf Lösungen. 8

9 3. Backtracking 3.2 Irgendeine Lösung finden Oft ist man nur am Finden einer einzelnen Lösung interessiert, auch wenn es eigentlich mehrere gibt. Das Backtracking-Verfahren ist eine allgemeine Lösungsmethode dafür. Es funktioniert so, wie man sich den Ausweg aus einem Labyrinth vorstellen kann: Man geht solange in eine bestimmte Richtung, bis es nicht mehr weiter geht. Dann geht man zurück an eine Stelle, wo man bereits war und versucht es von dort aus in einen andere Richtung. Das Ziel eines Backtracking-Verfahrens ist es, n Schritte erfolgreich zu absolvieren, wobei es in jedem Schritte mehrere Alternativen geben kann, die erkunden werden müssen. Dies entspricht einer vollständigen Suche: wenn alle Alternativen in allen n Schritten untersucht worden sind, gibt es keine Lösung. Man beachte dabei, dass die gewählten Alternativen in vorherigen Schritten die der nachfolgenden beeinflussen. 9

10 3. Backtracking Man erhält folgenden Algorithmus in Form einer Funktion: VersucheDieNächstenSchritte( i i )) DO DO Wähle Wähle die die nächste nächste Alternative Alternative k k für für Schritt Schritt ii IF IF annehmbar annehmbar (i, (i, k) k) Zeichne Zeichne (i,k) (i,k) auf auf IF IF (i+1 (i+1 < n) n) // // d.h. d.h. Lösung Lösung noch noch unvollständig VersucheDieNächstenSchritte( i+1 i+1 )) IF IF NICHT NICHT erfolgreich erfolgreich Lösche Lösche die die Aufzeichnung (i,k) (i,k) WHILE WHILE (NICHT (NICHT erfolgreich erfolgreich UND UND NICHT NICHT alle alle Alternativen Alternativen untersucht) untersucht) Aufruf: VersucheDieNächstenSchritte( 0 ) 10

11 3. Backtracking Für das Damenproblem erhält man folgendes C++-Programm: bool TryNextSteps(int i) { // versuche Dame 'i' und folgende zu platzieren coord pos = nullpkt; // wähle erste Position bool success = false; do { if (acceptable(pos)) { set(i, pos); success = true; if (i + 1 < n) { // mache die nächsten Schritte (alle weiteren Damen): success = TryNextSteps(i + 1); // In Sackgasse gelaufen: mache letzten Schritt rückgängig if (!success) remove(pos); if (!success &&!pos.end()) // versuche es im nächsten Feld pos.next(); while (!success &&!pos.end()); return success; 11

12 3. Backtracking Das Schachbrett ist dabei ein zweidimensionales Array: class coord { public: coord(int px = 0, int py = 0) : x(px), y(py) { ; // Get-Methoden int X() { return x; ; int Y() { return y; ; void next() { // ein Feld weiter rücken x++; ; if (x == n) { x = 0; y++; bool end() { // letztes Feld erreicht return x == n - 1 && y == n - 1; ; bool valid() { // Koordinate liegt im Feld if (x < 0 x >= n) return false; if (y < 0 y >= n) return false; return true; private: int x; int y; ; const coord nullpkt(0, 0); int Field[n][n]; 12

13 3. Backtracking Mit den folgenden Hilfsfunktionen ist das Programm (fast) komplett: bool acceptable(coord pos) { // prüfe, ob weitere Dame an Position 'pos' stehen kann for (int i = 0; i < n; i++) { // Horizontale: if (Field[i][pos.Y()]!= FREE) return false; // Vertikale: if (Field[pos.X()][i]!= FREE) return false; // Diagonalen:... return true; void set(int i, coord pos) { // setze Dame 'i' an Position 'pos' Field[pos.X()][pos.Y()] = i; void remove(coord pos) { // entferne Dame von Position 'pos' Field[pos.X()][pos.Y()] = FREE; 13

14 3. Backtracking Bemerkung: Die Laufzeit des vorgestellten Algorithmus hängt davon ab, wie schnell eine gültige Lösung gefunden wird. Je nach Problemstellung kann dabei die Reihenfolge, in der die einzelnen Alternativen angeboten werden, die Laufzeit erheblich beeinflussen. Bei symmetrischen Problemen (wie im Beispiel der acht Damen) kann die Laufzeit reduziert werden, indem bei einem neuen Schritt nicht noch einmal dieselben Alternativen untersucht werden wie bei den vorhergehenden Schritten. Frage: Wie genau muss dafür das Programm von eben verändert werden? 14

15 3. Backtracking 3.3 Alle Lösungen finden Um alle Lösungen finden zu können, muss der Backtracking-Algorithmus nur geringfügig verändert werden (es wird eine vollständige Suche durchgeführt): VersucheDieNächstenSchritte( i i )) FORALL: FORALL: Wähle Wähle die die nächste nächste Alternative Alternative k k (von (von m) m) für für Schritt Schritt ii IF IF annehmbar annehmbar (i, (i, k) k) Zeichne Zeichne (i,k) (i,k) auf auf IF IF (i+1 (i+1 < n) n) // // d.h. d.h. Lösung Lösung noch noch unvollständig VersucheDieNächstenSchritte( i+1 i+1 )) ELSE ELSE Drucke Drucke Lösung Lösung Lösche Lösche die die Aufzeichnung (i,k) (i,k) Frage: Aufwand? 15

16 4. Branch-and-Bound 4.1 Vollständige Suche mit Bewertung Will man die optimale Lösung finden, muss eine Bewertungsfunktion f() bestimmen, was eine gute von einer schlechten Lösung unterscheidet, so dass unterschiedliche Lösungen einfach verglichen werden können. Damit kann die vollständige Suche von eben, wie folgt verändert werden: VersucheDieNächstenSchritte( i i )) FORALL: FORALL: Wähle Wähle die die nächste nächste Alternative Alternative k k (von (von m) m) für für Schritt Schritt ii IF IF annehmbar annehmbar (i, (i, k) k) Zeichne Zeichne (i,k) (i,k) auf auf IF IF (i+1 (i+1 < n) n) // // d.h. d.h. Lösung Lösung noch noch unvollständig VersucheDieNächstenSchritte( i+1 i+1 )) ELSE ELSE IF IF f(lösung) f(lösung) < f(minimum) f(minimum) Minimum Minimum := := Lösung Lösung Lösche Lösche die die Aufzeichnung (i,k) (i,k) 16

17 4. Branch-and-Bound Der offensichtliche Nachteil dieses Verfahrens ist, dass immer eine vollständige Suche durchgeführt wird. Außerdem passt dieses Lösungsschema nicht so richtig zu vielen Optimierungsproblemen besonders zu solchen die eine Auswahl treffen sollen, ob ein bestimmtes Element in die Lösung aufgenommen werden soll oder nicht Branch-and-Bound Schema Daher wird i.f. ein weiteres Lösungsschema vorgestellt, dass speziell für Optimierungsprobleme gedacht ist. Ein Branch-and-Bound-Algorithmus ist ein Verfahren, das insbesondere versucht, nicht den kompletten Suchraum erkunden zu müssen: Sobald klar, dass sich an einer bestimmten Stelle die Fortsetzung nicht mehr lohnt, bricht das Verfahren ab, und macht ggf. woanders weiter. 17

18 4. Branch-and-Bound Oft geht es bei Optimierungsproblemen um eine Auswahl aus n Objekten. Ein Algorithmus muss also für jedes Objekt entscheiden, ob es teil der Lösung sein kann (Einschlusskriterium) oder ob es nicht teil der Lösung sein kann (Ausschlusskriterium) VersucheDieNächstenObjekte( i i )) IF IF Einschluss Einschluss von von (i) (i) möglich möglich Zeichne Zeichne (i) (i) auf auf IF IF (( i+1 i+1 < n n ))//// d.h. d.h. Lösung Lösung noch noch unvollständig unvollständig VersucheDieNächstenObjekte( i+1 i+1 )) ELSE ELSE Prüfe Prüfe Optimalität Optimalität Lösche Lösche die die Aufzeichnung Aufzeichnung (i) (i) IF IF Ausschluss Ausschluss von von (i) (i) möglich möglich IF IF (( i+1 i+1 < n n ))//// d.h. d.h. Lösung Lösung noch noch unvollständig unvollständig VersucheDieNächstenObjekte( i+1 i+1 )) ELSE ELSE Prüfe Prüfe Optimalität Optimalität 18

19 4. Branch-and-Bound 4.3 Das Rucksack-Problem Dies wird dargestellt mit Hilfe eines algorithmischen Klassikers, dem Rucksack- Problem: Aus einer Menge von Objekten, die jeweils ein Gewicht und einen Nutzwert haben, soll eine Teilmenge ausgewählt werden, deren Gesamtgewicht eine vorgegebene Gewichtsschranke nicht überschreitet. Unter dieser Bedingung soll der Nutzwert der ausgewählten Objekte maximiert werden. Das Einschlusskriterium ist dabei, das zulässige Gesamtgewicht nicht zu überschreiten, wenn ein Objekt dazu kommt. Das Ausschlusskriterium besteht daraus zu prüfen, ob noch ein neuer Optimal-Wert zu erzielen ist, wenn ein Objekt weggelassen wird. 19

20 4. Branch-and-Bound Lösung in C++: void TryNextObjects(int i, int Weight, int ReachableValue) { if (Weight + A[i].GetWeight() <= MaxWeight ) { // Einschluss-Kriterium pack(i); // Zeichne (i) auf if ( i+1 < n ) // d.h. Lösung noch unvollständig TryNextObjects( i+1, Weight + A[i].GetWeight(), ReachableValue ); else SetMax(); // Prüfe Optimalität unpack(i); // Lösche die Aufzeichnung (i) if (ReachableValue - A[i].GetValue() > MaxValue ) { // Ausschluss-Kriterium if ( i+1 < n ) // d.h. Lösung noch unvollständig TryNextObjects( i+1, Weight, ReachableValue - A[i].GetValue() ); else SetMax(); // Prüfe Optimalität 20

21 4. Branch-and-Bound Die Daten werden wie folgt verwaltet: const int n = 10; const int MaxWeight = 110; int TotalValue; int MaxValue; item A[n]; bool Knapsack[n]; bool OptKnapsack[n]; // Anzahl Elemente // Maximales Gewicht des Rucksacks // gesamt möglicher Maximalwert // aktueller Maximalwert // Elemente // aktueller Rucksack // optimaler Rucksack void init() { // alles initialisieren int W[n] = {10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ; int V[n] = {18, 20, 17, 19, 25, 21, 27, 23, 25, 24 ; TotalValue = 0; for (int i=0; i < n; i++) { A[i] = item(v[i], W[i]); TotalValue += V[i]; Knapsack[i] = false; OptKnapsack[i] = false; MaxValue = 0; 21

22 4. Branch-and-Bound Mit den folgenden Hilfsfunktionen ist das Programm (fast) komplett: void pack(int i) { Knapsack[i] = true; // aufzeichnen void unpack(int i) { // Aufzeichnung löschen Knapsack[i] = false; void SetMax() { int Value = 0; // Optimalität prüfen // Wert des aktuellen Rucksacks for (int i=0; i < n; i++) if (Knapsack[i]) Value += A[i].GetValue(); if (Value > MaxValue) { // neues Maximum gefunden MaxValue = Value; for (int i=0; i < n; i++) OptKnapsack[i] = Knapsack[i]; 22

23 5. Weiterführende Lösungsstrategien Manchmal ist ein Problem so veranlagt (NP-hart), dass auch mit Branch-and- Bound oder Dynamischer Programmierung keine Lösung in annehmbarer Zeit gefunden werden kann. Dann kommt nur eine Heuristik in Frage also ein Algorithmus der versucht, eine einigermaßen gute Lösung (d.h. eine Näherungslösung) in passabler Zeit zu finden. Dafür existieren folgende Lösungsansätze: Greedy (gierig) Strategien wählen immer ausgehend vom momentanen Standpunkt als nächstes die erfolgversprechendste Alternative. Ohne Backtracking ist ein solcher Ansatz i.d.r. sehr schnell (~ O(n)). Einfache Heuristiken sind problembezogene Standard-Verfahren (z.b. beim Scheduling oder bei der Verschnitt-Optimierung), die einer festen Vorschrift folgen (z.b. Shortest-Job-First) und damit ebenfalls sehr schnell fertig sind. Allgemeine Optimierer (z.b. Simulated Annealing, Genetische Algorithmen) sind Verfahren, die sich mehr Zeit nehmen und vorhandene Lösungen modifizieren und dann gegeneinander abwägen (z.b. Stundenplanung) 23

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 20 Einstieg in die Informatik mit Java Rekursion Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 20 1 Überblick 2 Rekursion 3 Rekursive Sortieralgorithmen 4 Backtracking

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 05 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen Grundlagen

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen

Mehr

1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen

1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Einführung Grundlagen von Algorithmen Grundlagen

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

Dynamische Programmierung II

Dynamische Programmierung II Vorlesungstermin 10: Dynamische Programmierung II Markus Püschel David Steurer talks2.dsteurer.org/dp2.pdf Algorithmen und Datenstrukturen, Herbstsemester 2018, ETH Zürich Plan für heute Dynamische Programmierung

Mehr

Das Problem des Handlungsreisenden

Das Problem des Handlungsreisenden Seite 1 Das Problem des Handlungsreisenden Abbildung 1: Alle möglichen Rundreisen für 4 Städte Das TSP-Problem tritt in der Praxis in vielen Anwendungen als Teilproblem auf. Hierzu gehören z.b. Optimierungsprobleme

Mehr

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

Theoretische Informatik. Exkurs: Komplexität von Optimierungsproblemen. Optimierungsprobleme. Optimierungsprobleme. Exkurs Optimierungsprobleme Theoretische Informatik Exkurs Rainer Schrader Exkurs: Komplexität von n Institut für Informatik 13. Mai 2009 1 / 34 2 / 34 Gliederung Entscheidungs- und Approximationen und Gütegarantien zwei Greedy-Strategien

Mehr

Übungen zum Vortrag Backtracking mit Heuristiken

Übungen zum Vortrag Backtracking mit Heuristiken Übungen zum Vortrag Backtracking mit Heuristiken A) Java-Implementierung studieren von Backtracking im Labyrinth B) Pseudocode schreiben zu Backtracking beim n Damen Problem C) Implementierung der Springerwege

Mehr

Lösungen von Übungsblatt 12

Lösungen von Übungsblatt 12 Lösungen von Übungsblatt 12 Algorithmen (WS 2018, Ulrike von Luxburg) Lösungen zu Aufgabe 1 Eine (kanonische) Möglichkeit, die Branch-Schritte auszuführen ergibt sich wie folgt: Das ursprüngliche Problem

Mehr

Grundlagen der Algorithmen und Datenstrukturen Kapitel 12

Grundlagen der Algorithmen und Datenstrukturen Kapitel 12 Grundlagen der Algorithmen und Datenstrukturen Kapitel 12 Christian Scheideler + Helmut Seidl SS 2009 28.06.09 Kapitel 12 1 Generische Optimierungsverfahren Techniken: Systematische Suche lass nichts aus

Mehr

Backtracking mit Heuristiken

Backtracking mit Heuristiken Backtracking mit Heuristiken Thomas Dübendorfer thomas@duebendorfer.ch 14. September 2000 Inhalt und Ablauf 1. Einführendes Beispiel (4 min) 2. Konzepte zu Backtracking (8 min) 3. Eingesperrt im Labyrinth

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil XI Peter F Stadler & Konstantin Klemm Bioinformatics Group, Dept of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig 16

Mehr

II.3.1 Rekursive Algorithmen - 1 -

II.3.1 Rekursive Algorithmen - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.3.1 Rekursive Algorithmen -

Mehr

Was der Mathematiker Gauß nicht konnte, das können wir Prof. R. Zavodnik/C++ Vorlesung/Kapitel IX 1

Was der Mathematiker Gauß nicht konnte, das können wir Prof. R. Zavodnik/C++ Vorlesung/Kapitel IX 1 Was der Mathematiker Gauß nicht konnte, das können wir 16.01.2003 Prof. R. Zavodnik/C++ Vorlesung/Kapitel IX 1 friend Klassenmethoden können friend-funktionen anderer Klassen werden Ganze Klassen können

Mehr

Stack. Seniorenseminar Michael Pohlig

Stack. Seniorenseminar Michael Pohlig Stack Seniorenseminar 21.06.2013 Michael Pohlig (pohlig@kit.edu) Übersicht 1. Axiomatik eins Kellers und seine Software- Realisierung 2. Bedeutung der Rekursion in der Mathematik 3. Rekursive Programmierung.

Mehr

Uninformierte Suche in Java Informierte Suchverfahren

Uninformierte Suche in Java Informierte Suchverfahren Uninformierte Suche in Java Informierte Suchverfahren Stephan Schwiebert WS 2008/2009 Sprachliche Informationsverarbeitung Institut für Linguistik Universität zu Köln 8-Damen-Problem Gegeben: Schachbrett

Mehr

Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016

Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016 Algorithmen und Datenstrukturen 2 Übung 1 Stefan Florian Palkovits, BSc 0926364 e0926364@student.tuwien.ac.at 12. Juni 2016 Aufgabe 1: Es existiert eine Reduktion von Problem A auf Problem B in O(n 3 +

Mehr

Algorithmen und Datenstrukturen 2 VU 3.0 Nachtragstest SS Oktober 2016

Algorithmen und Datenstrukturen 2 VU 3.0 Nachtragstest SS Oktober 2016 Technische Universität Wien Institut für Computergraphik und Algorithmen Algorithms and Complexity Group 186.815 Algorithmen und Datenstrukturen 2 VU 3.0 Nachtragstest SS 2016 5. Oktober 2016 Machen Sie

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

Algorithmen und Datenstrukturen 1 Kapitel 3

Algorithmen und Datenstrukturen 1 Kapitel 3 Algorithmen und Datenstrukturen 1 Kapitel 3 Technische Fakultät robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2005/2006 3.6 Dynamische Programmierung Die rekursive Problemzerlegung kann

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

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

Übungen zur Vorlesung Datenstrukturen und Algorithmen SS 07 Beispiellösung Blatt 5

Übungen zur Vorlesung Datenstrukturen und Algorithmen SS 07 Beispiellösung Blatt 5 Kamil Swierkot Paderborn, den 01.06.2007 Aufgabe 17 Übungen zur Vorlesung Datenstrukturen und Algorithmen SS 07 Beispiellösung Blatt 5 Bei der Optimierungsvariante des SubSetSum Problems wird bei der Eingabe

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen Lerneinheit : Dynamisches Programmieren Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester.. Einleitung Diese Lerneinheit widmet sich einer

Mehr

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 15 P Hinweise: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern

Mehr

Wiederholung. Divide & Conquer Strategie

Wiederholung. Divide & Conquer Strategie Wiederholung Divide & Conquer Strategie Binäre Suche O(log n) Rekursives Suchen im linken oder rechten Teilintervall Insertion-Sort O(n 2 ) Rekursives Sortieren von a[1..n-1], a[n] Einfügen von a[n] in

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

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2007 11. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Das Rucksack-Problem Ein Dieb, der einen Safe

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2012/13 25. Vorlesung Dynamisches Programmieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Klausurvorbereitung Tipp: Schreiben Sie sich alle Fragen

Mehr

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Andreas Moser Dietmar Ebner Christian Schauer Markus Bauer 9. Dezember 2003 1 Einführung Der in der Vorlesung gezeigte Algorithmus für das Steiner

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2009 11. Vorlesung Uwe Quasthoff Universität Leipzig Institut für Informatik quasthoff@informatik.uni-leipzig.de Das Rucksack-Problem Ein Dieb, der einen

Mehr

Fallstudie: Online-Statistik

Fallstudie: Online-Statistik Fallstudie: Online-Statistik Ziel: Klasse / Objekt, welches Daten konsumiert und zu jeder Zeit Statistiken, z.b. Mittelwert, Varianz, Median (etc.) ausgeben kann Statistics s = new Statistics(maxSize);...

Mehr

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet

Mehr

21. Greedy Algorithmen. Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3

21. Greedy Algorithmen. Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3 581 21. Greedy Algorithmen Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3 Aktivitäten Auswahl 582 Koordination von Aktivitäten, die gemeinsame Resource exklusiv

Mehr

Rückblick: divide and conquer

Rückblick: divide and conquer Rückblick: divide and conquer pi = (xi,yi) } p å } ' }d(p,p) p ''=min(, ') F 0/0 p./95 weitere Algorithmentechniken Greedy-Algorithmen dynamische Programmierung Backtracking branch and bound Heuristiken

Mehr

Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung. Sebastian Küpper

Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung. Sebastian Küpper Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung Sebastian Küpper Redundanz Rekursiver Lösungen Rekursion kann elegante Bescheibungen zur Problemlösung ergeben

Mehr

Klausur Algorithmentheorie

Klausur Algorithmentheorie Prof. Dr. G. Schnitger Frankfurt, den 06.04.2009 Klausur Algorithmentheorie WS 2008/2009 Name: Vorname: Geburtsdatum: Studiengang: BITTE GENAU LESEN Die Klausur besteht aus 4 Aufgaben, in denen maximal

Mehr

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Kapitel 2. Weitere Beispiele Effizienter Algorithmen Kapitel 2 Weitere Beispiele Effizienter Algorithmen Sequentielle Suche Gegeben: Array a[1..n] Suche in a nach Element x Ohne weitere Zusatzinformationen: Sequentielle Suche a[1] a[2] a[3] Laufzeit: n Schritte

Mehr

Uninformierte Suche in Java Informierte Suchverfahren

Uninformierte Suche in Java Informierte Suchverfahren Uninformierte Suche in Java Informierte Suchverfahren Stephan Schwiebert WS 2009/2010 Sprachliche Informationsverarbeitung Institut für Linguistik Universität zu Köln Suchprobleme bestehen aus Zuständen

Mehr

7. Transitive Hülle. Kante des Graphen. Zusatz-Kante der transitiven Hülle

7. Transitive Hülle. Kante des Graphen. Zusatz-Kante der transitiven Hülle In Anwendungen ist es oft interessant zu wissen, ob man überhaupt von einem Knoten v zu einem Knoten w gelangen kann, ganz gleich wie lang der Weg auch ist. Gegeben sei dabei ein gerichteter Graph G =

Mehr

Datenstrukturen und Algorithmen D-INFK

Datenstrukturen und Algorithmen D-INFK 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 Peter Widmayer

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 9 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 06. Juni 2018 [Letzte Aktualisierung: 06/07/2018,

Mehr

Große Lösungsräume. Leon Schmidtchen Hallo Welt Seminar - LS Leon Schmidtchen Große Lösungsräume Hallo Welt Seminar - LS2

Große Lösungsräume. Leon Schmidtchen Hallo Welt Seminar - LS Leon Schmidtchen Große Lösungsräume Hallo Welt Seminar - LS2 Große Lösungsräume Leon Schmidtchen 1.06.201 Hallo Welt Seminar - LS 2!1 Gliederung Motivation Brute Force Backtracking Pruning Leon Schmidtchen Branch & Bound 1.06.201 Hallo Welt Seminar - LS 2 Wann soll

Mehr

Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016

Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016 Algorithmen und Datenstrukturen Übung Stefan Florian Palkovits, BSc 09 e09@student.tuwien.ac.at 9. Juni 0 Aufgabe 9: Anwenden der Spanning Tree Heuristik auf symmetrisches TSP 9 8 7 8 8 7 Bilden eines

Mehr

Lösungsvorschlag Serie 2 Rekursion

Lösungsvorschlag Serie 2 Rekursion (/) Lösungsvorschlag Serie Rekursion. Algorithmen-Paradigmen Es gibt verschiedene Algorithmen-Paradigmen, also grundsätzliche Arten, wie man einen Algorithmus formulieren kann. Im funktionalen Paradigma

Mehr

Der Branching-Operator B

Der Branching-Operator B Branching 1 / 17 Der Branching-Operator B Unser Ziel: Löse das allgemeine Minimierungsproblem minimiere f (x), so dass Lösung(x). B zerlegt eine Menge von Lösungen in disjunkte Teilmengen. Die wiederholte

Mehr

Pro Informatik 2009: Objektorientierte Programmierung Tag 18. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

Pro Informatik 2009: Objektorientierte Programmierung Tag 18. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik Tag 18 Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik 09.09.2009 Agenda Tag 16 Datenstrukturen Abstrakte Datentypen, ADT Folge: Stack, Queue, Liste, ADT Menge: Bäume:

Mehr

Algorithmen & Datenstrukturen Midterm Test 2

Algorithmen & Datenstrukturen Midterm Test 2 Algorithmen & Datenstrukturen Midterm Test 2 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann

Mehr

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

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 ETH Zürich Institut für Theoretische Informatik Prof. Dr. Angelika Steger Florian Meier, Ralph Keusch HS 2017 Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 Lösungsvorschlag zu Aufgabe 1

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 2011 Einführung in die Informatik I Übungsblatt 5 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

Mehr

3.2. Divide-and-Conquer-Methoden

3.2. Divide-and-Conquer-Methoden LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE 3.2. Divide-and-Conquer-Methoden Divide-and-Conquer-Methoden Einfache Sortieralgorithmen reduzieren die Größe des noch

Mehr

public static void main(string[] args) {

public static void main(string[] args) { Lösungen 55 Lösungen Aufgabe 1: Die Variable y enthält den Wert 1.0. Entsprechend den Prioritäten der beteiligten Operatoren / und = wird erst die Division und anschließend die Zuweisung durchgeführt.

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Sortierte Listen 2. Stacks & Queues 3. Teile und Herrsche Nächste Woche: Vorrechnen (first-come-first-served)

Mehr

Einführung in Heuristische Suche

Einführung in Heuristische Suche Einführung in Heuristische Suche Beispiele 2 Überblick Intelligente Suche Rundenbasierte Spiele 3 Grundlagen Es muss ein Rätsel / Puzzle / Problem gelöst werden Wie kann ein Computer diese Aufgabe lösen?

Mehr

Informatik II Übung 8 Gruppe 4

Informatik II Übung 8 Gruppe 4 Informatik II Übung 8 Gruppe 4 (Folien teils von Christian B. und Christelle G.) Lukas Burkhalter lubu@inf.ethz.ch Informatik II Übung 8 Lukas Burkhalter 24. April 2018 1 https://xkcd.com/1270/ Nachbesprechung

Mehr

Informatik II Übung 09

Informatik II Übung 09 Informatik II Übung 09 Michael Baumann mbauman@student.ethz.ch n.ethz.ch/~mbauman 04.05.2015 Ablauf 1) Nachbesprechung Serie 8 2) Minimax & Alpha-Beta 3) Vorbesprechung Serie 9 2 Serie 8 3 Aufgabe 1 a,

Mehr

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

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität Datenstrukturen und Algorithmen Christian Sohler FG Algorithmen & Komplexität 1 Klausur Wichtige Hinweise: 2.7.07, Beginn 9 Uhr Bitte spätestens 8:4 Uhr vor Ort sein Sporthalle + Audimax Informationen

Mehr

Kapitel 9: Lineare Programmierung Gliederung

Kapitel 9: Lineare Programmierung Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

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 Algorithmen

Mehr

QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert

QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert 4.3.6 QuickSort QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert QuickSort teilt das gegebene Array anhand

Mehr

6.1. Ein Approximationsalgorithmus für das Rucksackproblem

6.1. Ein Approximationsalgorithmus für das Rucksackproblem 6.1. Ein Approximationsalgorithmus für das Rucksackproblem Wir erinnern uns an das 0-1-Rucksackproblem: Eingabe: Ganzzahlige Volumina a 1,..., a n > 0, Nutzenwerte c 1,..., c n > 0, ganzzahlige Volumenschranke

Mehr

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

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 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale

Mehr

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT) Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Fibonacci Zahlen Fibonacci Folge Die Fibonacci

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen Lerneinheit : Kürzeste Pfade in Graphen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 016.6.01 Einleitung Diese Lerneinheit beschäftigt

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen

Mehr

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer Institut für Informatik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg

Mehr

NP-vollständige Probleme

NP-vollständige Probleme Effiziente Algorithmen Lösen NP-vollständiger Probleme 256 NP-vollständige Probleme Keine polynomiellen Algorithmen, falls P NP. Viele wichtige Probleme sind NP-vollständig. Irgendwie müssen sie gelöst

Mehr

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen Kapitel 10 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

3. Übungsblatt zu Algorithmen I im SoSe 2017

3. Übungsblatt zu Algorithmen I im SoSe 2017 Karlsruher Institut für Technologie Prof. Dr. Jörn Müller-Quade Institut für Theoretische Informatik Björn Kaidel, Sebastian Schlag, Sascha Witt 3. Übungsblatt zu Algorithmen I im SoSe 2017 http://crypto.iti.kit.edu/index.php?id=799

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2018 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Organisatorisches: Keine Vorlesung nächste Woche wegen

Mehr

Weitere Algorithmenentwurfstechniken

Weitere Algorithmenentwurfstechniken Weitere Algorithmenentwurfstechniken 1 Backtracking Vier Damen Beim Schach bedroht die Figur der Dame alle Felder, die sich horizontal, vertikal oder diagonal von der entsprechenden Position der Dame befinden.

Mehr

2.2 Der Algorithmus von Knuth, Morris und Pratt

2.2 Der Algorithmus von Knuth, Morris und Pratt Suchen in Texten 2.1 Grundlagen Ein Alphabet ist eine endliche Menge von Symbolen. Bsp.: Σ a, b, c,..., z, Σ 0, 1, Σ A, C, G, T. Wörter über Σ sind endliche Folgen von Symbolen aus Σ. Wörter werden manchmal

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Vorrechnen von Aufgabenblatt 1. Wohlgeformte Klammerausdrücke 3. Teile und Herrsche Agenda 1.

Mehr

Hallo Welt für Fortgeschrittene

Hallo Welt für Fortgeschrittene Hallo Welt für Fortgeschrittene Zahlentheorie, Arithmetik und Algebra II Benjamin Fischer Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Gliederung Lineare Rekursion BigInteger Chinesischer

Mehr

Effiziente Algorithmen 2

Effiziente Algorithmen 2 Effiziente Algorithmen 2 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 Algorithmen

Mehr

12. Rekursion Grundlagen der Programmierung 1 (Java)

12. Rekursion Grundlagen der Programmierung 1 (Java) 12. Rekursion Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 24. Januar 2006 Einordnung im Kontext der Vorlesung

Mehr

Kapitel 5: Dynamisches Programmieren Gliederung

Kapitel 5: Dynamisches Programmieren Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 20 (23.7.2014) All Pairs Shortest Paths, String Matching (Textsuche) Algorithmen und Komplexität Vorlesungsevaluation Sie sollten alle eine

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Algorithmen und Datenstrukturen Teil 3 Suchen in Listen Version vom: 15. November 2016

Mehr

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

15. Algorithmus der Woche Das Rucksackproblem Die Qual der Wahl bei zu vielen Möglichkeiten 15. Algorithmus der Woche Das Rucksackproblem Die Qual der Wahl bei zu vielen Möglichkeiten Autoren Rene Beier, MPI Saarbrücken Berthold Vöcking, RWTH Aachen In zwei Monaten startet die nächste Rakete

Mehr

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen 5. Compiler Gliederung 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume

Mehr

Elementare Sortierverfahren

Elementare Sortierverfahren Algorithmen und Datenstrukturen I Elementare Sortierverfahren Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 18:16 Inhaltsverzeichnis Sortieren.......................................

Mehr

Computational Intelligence

Computational Intelligence Vorlesung Computational Intelligence Stefan Berlik Raum H-C 80 Tel: 027/70-267 email: berlik@informatik.uni-siegen.de Inhalt Überblick Rückblick Optimierungsprobleme Optimierungsalgorithmen Vorlesung Computational

Mehr

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält

Mehr

Datenstrukturen und Algorithmen (SS 2013)

Datenstrukturen und Algorithmen (SS 2013) Datenstrukturen und Algorithmen (SS 2013) Übungsblatt 10 Abgabe: Montag, 08.07.2013, 14:00 Uhr Die Übungen sollen in Gruppen von zwei bis drei Personen bearbeitet werden. Schreiben Sie die Namen jedes

Mehr

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine

Mehr

Algorithmische Geometrie: Delaunay Triangulierung (Teil 2)

Algorithmische Geometrie: Delaunay Triangulierung (Teil 2) Algorithmische Geometrie: Delaunay Triangulierung (Teil 2) Nico Düvelmeyer WS 2009/2010, 2.2.2010 Überblick 1 Delaunay Triangulierungen 2 Berechnung der Delaunay Triangulierung Randomisiert inkrementeller

Mehr

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 16 P Instruktionen: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern

Mehr

Ansätze zur Erfassung von Faktoren durch Prüfungsaufgaben. (Diskussionen in Dagstuhl sowie mit Prof. Nickolaus, Technikpädagogik, U Stuttgart)

Ansätze zur Erfassung von Faktoren durch Prüfungsaufgaben. (Diskussionen in Dagstuhl sowie mit Prof. Nickolaus, Technikpädagogik, U Stuttgart) Taxonomie + Schwierigkeit Ansätze zur Erfassung von Faktoren durch Prüfungsaufgaben. (Diskussionen in Dagstuhl sowie mit Prof. Nickolaus, Technikpädagogik, U Stuttgart) Beurteilen Synthese Konstruktion

Mehr

Lernmodul 7 Algorithmus von Dijkstra

Lernmodul 7 Algorithmus von Dijkstra Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer

Mehr

Kapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung

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

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion

Mehr

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik 5. Datenstrukturen Motivation Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik Eine Datenstruktur speichert gegebene Daten und stellt auf diesen bestimmte Operationen

Mehr

Interne Sortierverfahren

Interne Sortierverfahren Angewandte Datentechnik Interne Sortierverfahren Interne Sortierverfahren Ausarbeitung einer Maturafrage aus dem Fach A n g e w a n d t e D a t e n t e c h n i k Andreas Hechenblaickner 5CDH HTBLA Kaindorf/Sulm

Mehr

Programmieren 1 C Überblick

Programmieren 1 C Überblick Programmieren 1 C Überblick 1. Einleitung 2. Graphische Darstellung von Algorithmen 3. Syntax und Semantik 4. Einstieg in C: Einfache Sprachkonstrukte und allgemeiner Programmaufbau 5. Skalare Standarddatentypen

Mehr