Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Prinzipien des Algorithmenentwurfs Backtracking Prof. Dr. Th. Ottmann.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Prinzipien des Algorithmenentwurfs Backtracking Prof. Dr. Th. Ottmann."—  Präsentation transkript:

1 1 Prinzipien des Algorithmenentwurfs Backtracking Prof. Dr. Th. Ottmann

2 2 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.

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

4 4 Beispiel: Das 4-Damen Problem (1)

5 5 Beispiel: Das 4-Damen Problem (2)

6 6 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 *)

7 7 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].

8 8 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)

9 9 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 *)

10 10 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

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


Herunterladen ppt "1 Prinzipien des Algorithmenentwurfs Backtracking Prof. Dr. Th. Ottmann."

Ähnliche Präsentationen


Google-Anzeigen