Prinzipien des Algorithmenentwurfs Backtracking Prof. Dr. Th. Ottmann

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Programmierung 1 - Repetitorium
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
ACM ICPC Praktikum Kapitel 8: Backtracking. Übersicht Backtracking Aufzählung aller Teilmengen Aufzählung aller Permutationen n-Königinnen-Problem.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Algorithmische Anwendung
10. Grundlagen imperativer Programmiersprachen
Rekursion Was ist Rekursion? Was sind rekursive Methoden?
Imperative Programmierung
Algorithmen und Komplexität
Motivation Richard Göbel.
Algorithmentheorie 6 – Greedy-Verfahren
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Prof.Dr.S. Albers Prof. Dr. Th. Ottmann
1 Bewegungsplanung Computational Geometry Prof. Dr. Th. Ottmann Bewegungsplanung bei unvollständiger Information Ausweg aus einem Labyrinth Finden eines.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26 - Graphen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (04 – Entwurfsverfahren) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.
Union-Find-Strukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Geometrisches Divide and Conquer
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Algorithmen und Komplexität
Effiziente Algorithmen
Übungen zum Vortrag „Backtracking mit Heuristiken“
Rekursion mit Listen: Quicksort
Einführung in die Programmierung
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Einführung in die Programmierung
Mehrkriterielle Optimierung mit Metaheuristiken
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 1: Wiederholung (Vor allem Folien von Priv.-Doz. Dr. Kindler vom WS 2001/02.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Informatik Datenstruktur Graph 3.3 Durchlaufen von Graphen
Fundamente der Computational Intelligence (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl für Algorithm Engineering Wintersemester.
Korrektheit von Programmen – Testen
Modellbasierte Software- Entwicklung eingebetteter Systeme Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer.
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Rekursion-
Korrektheit von Programmen – Testen
Algorithmen und Datenstrukturen
Theory of Programming Prof. Dr. W. Reisig Was heißt „Korrektheit“? W. Reisig Workshop Modellierung Hamburg, März 2015.
Programmiersprachen II Graph_Algorithmen Einführung Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme.
Algorithmen und Datenstrukturen
Reihungen Prof. Dr. Christian Böhm In Zusammenarbeit mit Gefei Zhang
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen
 Präsentation transkript:

Prinzipien des Algorithmenentwurfs Backtracking Prof. Dr. Th. Ottmann

Lehrziel Ein wichtiges Prinzip zur Problemlösung durch erschöpfende Suche kennen lernen. Hinter einem konkreten Beispiel das allgemeine Prinzip erkennen, es als solches formulieren und auf neue Beispiele anwenden können. Die Anwendbarkeit des Prinzips auf Suchprobleme einschätzen können. Lösungen nach diesem Prinzip entwerfen und in imperative Programme umsetzen können. The literature on the IP lookup and related problems is fairly large. Therefore I will not be able to give a complete survey of the state of the art in solving these problems. My talk will just scratch the surface of this rather mature filed.

Übersicht Ein konkretes Beispiel: Das Vier-Damen Problem Formulierung der Lösung als rekursives Verfahren Formale Fassung des Backtrack Prinzips als Programmrahmen Anwendung auf weitere Probleme Weiterführende Hinweise und Literatur

Beispiel: Das 4-Damen Problem (1)

Beispiel: Das 4-Damen Problem (2)

Formulierung der Lösung als rekursive Prozedur Methode FindeStellung (int i; boolean gefunden); (*findet Lösung ab Spalte i, wenn es eine gibt, und liefert den Wert gefunden = true, sonst gefunden = false *) gefunden = false; j = 0; repeat (* wähle nächste Zeile j *) if (*Dame in Zeile j und Spalte i bedroht keine bisher platzierte *) then (* setze Dame auf Position (j, i) *); if (* keine nächste Spalte mehr *) then (* fertig; Abbruch *) else (* betrachte nächste Spalte *) FindeStellung (i+1, gefunden); if not gefunden then (* Backtrack: mache Wahl rückgängig *) until gefunden or (* alle Zeilen probiert *)

Voraussetzungen für die Anwendbarkeit Lösung ist als Vektor (unbestimmter aber) endlicher Länge darstellbar a[1], a[2], a[3], … Jedes Element a[i] ist eine Möglichkeit aus einer begrenzten, geordneten Menge A[i] von Kandidaten. Für jedes Element aus A[i] kann entschieden werden, ob es als Kandidat für eine Erweiterung der Lösung auf Komponente i in Frage kommt. Die Teilmenge der zulässigen Kandidaten sei S[i].

Verfahren 1. Wähle a[1] minimal aus S[1] 2. Erweiterungsschritt i  i + 1: Falls nächstes a[i+1]  S[i+1] existiert, wähle es und erweitere Teillösung (a[1], a[2], …, a[i]) zu (a[1], a[2], …, a[i+1]) sonst: (alle Möglichkeiten zur Wahl von a[i+1]  S[i+1] erschöpft) Backtrack: Wähle a[i] neu! 3. Führe Erweiterungsschritt solange durch bis Gesamtlösung gefunden (oder alle Möglichkeiten ergebnislos geprüft wurden)

Formale Fassung des Prinzips Procedure FindeLösung (int i; boolean gefunden); (* findet Lösungsvektor ab i und setzt gefunden auf true, wenn ein solcher Vektor existiert *) { gefunden = false; (*Auswahl initialisieren*) repeat (*wähle nächstes a[i] aus A[i]*) if (* a[i]S[i] *) then (* erweitere Teillösung in Komponente i um a[i] *) if (* Gesamtlösung erreicht *) then (* fertig: Abbruch *) else FindeLösung (i+1, gefunden); if not gefunden then (* Backtrack: Mache Wahl von a[i] rückgängig *) until gefunden or (* A[i] durchsucht *)

Anwendung auf weitere Probleme Labyrinthsuche: Finden eines Weges von einem Start- zu einem Zielpunkt Färbungsprobleme für Karten und Graphen Erfüllbarkeitsproblem für Boolesche Ausdrücke Sudoku ….. Constraint Satisfaction Probleme aus KI und OR

Literaturhinweise Siehe z.B. Wikipedia, unter den Stichworten Backtracking, Constraint Satisfaction … mit Beiträgen von Kurt Mehlhorn Dorothea Wagner Alois Heinz Jürgen Eckerle ….