Graph Suchalgorithmus Uninformierte Suche Informierte Suche. Pfadsuche. Mario Mohr. GWV-Tutorium 2013/ Januar 2014

Ähnliche Dokumente
Hallo Welt für Fortgeschrittene

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

Breitensuche BFS (Breadth First Search)

Programmierung 2 Studiengang MI / WI

Künstliche Intelligenz

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

Algorithmen und Datenstrukturen 2-1. Seminar -

Uninformierte Suche in Java Informierte Suchverfahren

9 Minimum Spanning Trees

Einführung in die Informatik 2

Kapitel IV Minimale Spannbäume

Software Entwicklung 1. Graphen. Motivation. Definitionen: Graph. Annette Bieniusa / Arnd Poetzsch-Heffter

Traversierung 1 / 16. P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 2, V3 23. April / 16

Beweise aus dem Fach Grundzüge der Künstlichen Intelligenz

Künstliche Intelligenz

Matchings in Graphen. Praktikum Diskrete Optimierung (Teil 5)

Software Entwicklung 1

Algorithmen & Datenstrukturen 2 Praktikum 3

Algorithmen & Komplexität

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Übersicht. Informierte (heuristische) Suche. Algorithmus Bester-Zuerst-Suche. Bester-Zuerst-Suche

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

\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E.

Vorlesung Datenstrukturen

Informatik II, SS 2016

Informatik II, SS 2016

10. Übungsblatt zu Algorithmen I im SS 2010

Künstliche Intelligenz

Diskrete Strukturen WS 2005/06. Ernst W. Mayr. 27. Januar Fakultät für Informatik TU München

So suchen Sie zuerst nach der Breite

Sokoban. Knowledge Engineering und Lernen in Spielen. Mark Sollweck Fachbereich 20 Seminar Knowledge Engineering Mark Sollweck 1

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

Uninformierte Suche in Java Informierte Suchverfahren

Einführung in die Graphen-Theorie

Künstliche Intelligenz

lässt sich auch ableiten, dass es einen augmentierenden Pfad der Länge höchstens

Wissensbasierte Suche

Algorithmen & Komplexität

WS 2009/10. Diskrete Strukturen

Berechnung minimaler Spannbäume. Beispiel

Graphen. Anwendung, Repräsentation, Tiefensuche, Breitensuche, Warshall s Algorithmus, kürzeste Wege.

Einführung in Suchverfahren

Grundlagen: Algorithmen und Datenstrukturen

Teil 2: Graphenalgorithmen

Kapitel IV Minimale Spannbäume

12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013

Vorlesung 2 KÜRZESTE WEGE

Quicksort ist ein Divide-and-Conquer-Verfahren.

Vorlesung Datenstrukturen

ADS 2: Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

ADS 2: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 2

Einführung in Heuristische Suche

Algorithmen I - Tutorium 28 Nr. 9

Datenstrukturen und Algorithmen

Das Heiratsproblem. Definition Matching

Datenstrukturen. einfach verkettete Liste

Universität des Saarlandes

Wissensbasierte Systeme. Kombinatorische Explosion und die Notwendigkeit Heuristischer Suche. Heuristiken und ihre Eigenschaften

Graphdurchmusterung, Breiten- und Tiefensuche

Programmierkurs Python II

Beispiel Strassennetz

Vorlesung 2 KÜRZESTE WEGE

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7

Graphen. Graf = Lord(E)

Zustandsraumsuche: Blinde und Heuristische Suche. Blinde und Heuristische Suche

Graphalgorithmen I. Simon Regnet. May 16, Universität Erlangen. Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

Kapitel 5: Suchverfahren: Backtracking

Datenstrukturen und Algorithmen (SS 2013)

Dynamische Programmierung. Problemlösungsstrategie der Informatik

15. Elementare Graphalgorithmen

Übersicht. Künstliche Intelligenz: 3. Problemlösen durch Suche Frank Puppe 1

ADS 2: Algorithmen und Datenstrukturen

Graphalgorithmen II. Werner Sembach Werner Sembach Graphalgorithmen II / 22

Graphen KAPITEL 3. Dieses Problem wird durch folgenden Graph modelliert:

Übung Algorithmen und Datenstrukturen

Verteilte Systeme. Graphenalgorithmen. Secure Identity Research Group

Programmierkurs Prolog, SS 2000

Datenstrukturen & Algorithmen Lösungen zu Blatt 10 FS 16

Aufgaben zur Klausurvorbereitung

Graphalgorithmen. 9. November / 54

Grundlagen der Künstlichen Intelligenz

Klausur zur Vorlesung Künstliche Intelligenz

3.2 Generischer minimaler Spannbaum-Algorithmus

Grundlagen der Künstlichen Intelligenz

9.1 Tiefensuche. Grundlagen der Künstlichen Intelligenz. 9.1 Tiefensuche. 9.2 Iterative Tiefensuche. 9.3 Blinde Suche: Zusammenfassung

Übung Algorithmen und Datenstrukturen

Graphenalgorithmen I. Geschickt Programmieren für den ICPC- Wettbewerb. Felix Weissenberger

a b r a c a d a b r a

Intelligente Systeme

VL-14: Graphalgorithmen I. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger

Algorithmen und Datenstrukturen

8. Kürzeste Wege in Graphen

Orientierung in Graphen

Kap. 6.3: Traversieren von Graphen Kap. 6.4: Elementare Graphalgorithmen

Fortgeschrittene Netzwerk- und Graph-Algorithmen

12. Graphen. Notation, Repräsentation, Traversieren (DFS, BFS), Topologisches Sortieren, Ottman/Widmayer, Kap ,Cormen et al, Kap.

Übung Algorithmen und Datenstrukturen

Transkript:

Pfadsuche Mario Mohr GWV-Tutorium 2013/14 17. Januar 2014

4 Informierte Suche Heuristik Best-first A* 1 Graph 2 Suchalgorithmus 3 Uninformierte Suche Breadth-first Loop detection & multiple-path pruning Lowest-cost-first (aka Dijkstra) Depth-first Iterative-deepening Bounded Depth-first

Graph Ein Graph G = (V, E) besteht (für unsere Zwecke) aus der Knotenmenge V ( vertices ), also der Menge von z.b. Orten oder Zuständen des Graphen und der Kantenmenge E : (W (V V )) R, also der Menge von Verknüpfungen im Graph und deren Kosten (z.b. Bahnverbindungen und deren Fahrtdauer)

Suchalgorithmus Ein Suchalgorithmus sucht in einem gegebenen Graphen nach einem (üblicherweise dem kürzesten) Pfad von einem Start- zu einem Endknoten, indem er die Frontier zum unbekannten Teil des Graphen ausdehnt, bis er einen Lösungspfad gefunden hat

Suchalgorithmus - Pseudocode Ein generischer Suchalgorithmus als Pseudocode: frontier = [Startknoten] 1 aktueller pfad = waehhle frontier erweiterung() 2 IF (FuehrtZuZielknoten( aktueller pfad))) : return aktueller pfad 3 ELSE : for each(n in aktueller pfad.endknoten.allenachbarn()) : frontier.add( aktueller pfad + n) frontier.delete( aktueller pfad) GOTO 1

Frontier-Erweiterung

Breadth-first Breadth-first-search Bei der breadth-first-search werden die Pfade der Frontier in einer Queue gespeichert: in jeder Iteration werden die Nachbarn des aktuellen Endknotens (der des Pfades am Queue-Kopf) am Ende der Queue angehängt

Loop detection & multiple-path pruning Loop detection & multiple-path pruning Beim Einsatz von loop detection wird kein Pfad, der auf einem bereits von ihm besuchten Knoten endet, jemals zur Frontier hinzugefügt. Beim Einsatz von multiple-path pruning werden bei mehreren Pfaden mit demselben Endknoten alle bis auf einen (üblicherweise der kürzeste) entfernt.

Lowest-cost-first (aka Dijkstra) Lowest-cost-first-search (aka Dijkstra) Bei der lowest-cost-first-search wird bei jeder Iteration aus der Frontier der Pfad mit den geringsten Gesamtkosten ausgewählt: sie verhält sich also wie eine Kantengewicht-sensitive Breitensuche

Lowest-cost-first (aka Dijkstra) Lowest-cost-first-search (aka Dijkstra) Bei der lowest-cost-first-search wird bei jeder Iteration aus der Frontier der Pfad mit den geringsten Gesamtkosten ausgewählt: sie verhält sich also wie eine Kantengewicht-sensitive Breitensuche

Depth-first Depth-first-search Bei der Depth-first-search werden die Pfade der Frontier in einem Stack gespeichert: in jeder Iteration werden die Nachbarn des aktuellen Endnkotens (der des Pfades am Stack-Kopf) am Anfang des Stacks abgelegt

Depth-first Depth-first-search Bei der Depth-first-search werden die Pfade der Frontier in einem Stack gespeichert: in jeder Iteration werden die Nachbarn des aktuellen Endnkotens (der des Pfades am Stack-Kopf) am Anfang des Stacks abgelegt

Iterative-deepening Bounded Depth-first-search Bei der bounded depth-first-search werden Pfade mit einer Länge größer der festgelegten Beschränkung (im Beispiel: 3) ignoriert

Iterative-deepening Bounded Depth-first-search Bei der bounded depth-first-search werden Pfade mit einer Länge größer der festgelegten Beschränkung (im Beispiel: 3) ignoriert

Iterative-deepening Iterative-deepening-search Bei der Iterative-deepening-search werden nacheinander bounded depth-first-searches mit steigender Beschränkung durchgeführt

Iterative-deepening Iterative-deepening-search Bei der Iterative-deepening-search werden nacheinander bounded depth-first-searches mit steigender Beschränkung durchgeführt

Heuristik Heuristik Eine Heuristik ist eine Funktion, die Teillösungen eines Problems anhand ihrer voraussichtlichen Nützlichkeit zur Gesamtlösung bewertet kann in Suchalgorithmen verwendet werden, um die Frontier-Ausdehnung anhand von schon vor Systemstart absehbaren Informationen zu lenken wird als admissible bezeichnet, wenn sie die Qualität einer Lösung immer realistisch oder zu positiv bewertet (also z.b. die Distanz eines Knotens zum Ziel realistisch oder zu niedrig schätzt)

Best-first Best-first search Bei der best-first-search wird bei jeder Iteration aus der Frontier der Pfad mit dem besten heuristischen Wert (üblicherweise des Endknotens) gewählt; die Frontier wird also rein nach einem vordefinierten Qualitätskriterium ausgedehnt (im Beispiel: die euklidische Distanz zum Ziel)

A* Beim A*-Algorithmus werden lowest-cost-first-search und best-first-search kombiniert: jede Iteration wird aus der Frontier der Pfad mit der geringsten Summe aus bisherigen Gesamtkosten und heuristisch geschätzten weiteren Kosten zum Ziel gewählt

A* Beim A*-Algorithmus werden lowest-cost-first-search und best-first-search kombiniert: jede Iteration wird aus der Frontier der Pfad mit der geringsten Summe aus bisherigen Gesamtkosten und heuristisch geschätzten weiteren Kosten zum Ziel gewählt