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

Ähnliche Dokumente
Grundlagen der Künstlichen Intelligenz

10.1 Blinde Suche Blinde Suche. Grundlagen der Künstlichen Intelligenz Breitensuche: Einführung BFS-Tree. 10.

Grundlagen der Künstlichen Intelligenz

8.1 Blinde Suche. Grundlagen der Künstlichen Intelligenz. Klassische Suche: Überblick. 8. Klassische Suche: Breitensuche und uniforme Kostensuche

Grundlagen der Künstlichen Intelligenz

Grundlagen der Künstlichen Intelligenz

13.1 Einführung Einführung. Grundlagen der Künstlichen Intelligenz Gierige Bestensuche 13.3 A Weighted A. 13.

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen

Zustandsraumsuche: Blinde und Heuristische Suche. Blinde und Heuristische Suche

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

Bäume. Listen und Bäume, Graphen und Bäume, elementare Eigenschaften von Binärbäumen, Implementierung, Generische Baumdurchläufe

Grundlagen der Künstlichen Intelligenz Einführung Minimax-Suche Bewertungsfunktionen Zusammenfassung. Brettspiele: Überblick

Übung Algorithmen und Datenstrukturen

Grundlagen der Künstlichen Intelligenz

Informatik II, SS 2016

8.1 Einleitung. Grundlagen der Künstlichen Intelligenz. 8.1 Einleitung. 8.2 Lokale Suchverfahren. 8.3 Zusammenfassung. Suchprobleme: Überblick

Wissensbasierte Suche

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

Uninformierte Suche in Java Informierte Suchverfahren

Informatik II, SS 2014

Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche. Suche in Spielbäumen. KI SS2011: Suche in Spielbäumen 1/20

Branch-and-Bound. Wir betrachten allgemein Probleme, deren Suchraum durch Bäume dargestellt werden kann. Innerhalb des Suchraums suchen wir

Algorithmen und Datenstrukturen 2-1. Seminar -

Algorithmen & Komplexität

Einführung in die Methoden der Künstlichen Intelligenz. Suchverfahren / Uninformierte Suche

3. Problemlösen durch Suche

Bäume. Listen und Bäume, Graphen und Bäume, elementare Eigenschaften von Binärbäumen, Implementierung, Generische Baumdurchläufe

Breitensuche BFS (Breadth First Search)

9. Übung Algorithmen I

Künstliche Intelligenz

Lösungshinweise zu Blatt 8 und Blatt 9 GIN2-SS04

Motivation für Suchverfahren. Einführung in die Methoden der Künstlichen Intelligenz. Suchverfahren / Uninformierte Suche

Grundlagen der Künstlichen Intelligenz

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Motivation. Vorlesung 10: Binäre Suchbäume

Graphenalgorithmen I

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

Grundlagen der KI + Reasoning Agents

Heuristische Suche. Uninformierte (blinde) Suchverfahren. erzeugen systematisch neue Knoten im Suchbaum und führen jeweils den Zieltest durch;

39.1 Alpha-Beta-Suche

Einführung in Heuristische Suche

Grundlagen der Künstlichen Intelligenz

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

Übung Algorithmen und Datenstrukturen

Grundlagen der Künstlichen Intelligenz

Vortrag. Suchverfahren der Künstlichen Intelligenz. Sven Schmidt (Technische Informatik)

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Algorithmen und Datenstrukturen

Programmierkurs Python II

Algorithmen und Datenstrukturen

Weiterführendes Programmieren Lineare Widerstandsnetzwerke II Aufgabenblatt 6. 1 Zusammenfassung der elektrotechnischen Begriffe

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

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition.

Informatik I: Einführung in die Programmierung

Datenstrukturen. einfach verkettete Liste

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition.

Einfacher Problemlösungsagent. Übersicht. Begriffsdefinitionen für Einfach-Probleme

Wintersemester 2004/ Januar Aus der Vorlesung sind Datenstrukturen zur Repräsentation von Wäldern disjunkter Mengen bekannt.

class PrintNode(object): def init ( self, param ):... def visit( self, treenode ): print treenode.getitem()

Sandro Pirkwieser, (Bin Hu, Jakob Puchinger) SS 2010

Implementierung eines Baumes (in Python)

Übersicht Datenstrukturen und Algorithmen. Übersicht. Probleme auf kantengewichteten Graphen. Vorlesung 14: Minimale Spannbäume

Copying Garbage Collection

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

Einführung in die Informatik 2

Advanced Programming in C

Kognitive Systeme 1. Uninformierte Suche. Dr.-Ing. Bernd Ludwig

Zweizusammenhang und starker Zusammenhang

Übungsblatt 2 Lösungen

Vorlesung Datenstrukturen

Wege, Pfade und Kreise

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Einführung in die Methoden der Künstlichen Intelligenz

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

Wissensbasierte Systeme 3. Problemlösen durch Suche

Effiziente Algorithmen und Komplexitätstheorie

11. Elementare Datenstrukturen

9 Minimum Spanning Trees

Einführung in die Informatik 2

Grundlagen der Informatik 12. Strukturen

Einführung in Suchverfahren

Einführung in die Methoden der Künstlichen Intelligenz

Algorithmen und Datenstrukturen 1-5. Seminar -

Einführung in die Informatik 2

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

Graphdurchmusterung, Breiten- und Tiefensuche

Programmierstil. Objektsammlungen. Konzepte. Zwischenspiel: Einige beliebte Fehler... Variablennamen Kommentare Layout Einrückung

Programmiertechnik II

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Tiefensuche (Depth-First Search) Robert Hilbrich

Programmiertechnik II

1 topologisches Sortieren

Struktur am Beispiel einer Liste

Grundlagen der Künstlichen Intelligenz

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

Seminar künstliche Intelligenz

Informatik I. Informatik I Iteration vs. Rekursion. Iteration vs. Rekursion Iteration vs. Rekursion. 20. Iteration vs.

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung.

Uninformierte Suche in Java Informierte Suchverfahren

Transkript:

Grundlagen der Künstlichen Intelligenz 21. März 2014 9. Klassische Suche: Tiefensuche und iterative Tiefensuche Grundlagen der Künstlichen Intelligenz 9. Klassische Suche: Tiefensuche und iterative Tiefensuche 9.1 Tiefensuche Malte Helmert Universität asel 21. März 2014 9.2 Iterative Tiefensuche 9.3 linde Suche: Zusammenfassung M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 1 / 24 M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 2 / 24 Klassische Suche: Überblick Kapitelüberblick klassische Suche: 3. 5. Einführung 6. 9. asisalgorithmen 6. Datenstrukturen für Suchalgorithmen 7. aumsuche und Graphensuche 8. reitensuche und uniforme Kostensuche 9. Tiefensuche und iterative Tiefensuche folgende Kapitel: heuristische lgorithmen 9.1 Tiefensuche M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 3 / 24 M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 4 / 24

linde Suchalgorithmen: eispiele Tiefensuche eispiele für blinde Suchalgorithmen: reitensuche uniforme Kostensuche Tiefensuche ( dieses Kapitel) tiefenbeschränkte Suche ( dieses Kapitel) iterative Tiefensuche ( dieses Kapitel) Tiefensuche expandiert Knoten in umgekehrter Erzeugungsreihenfolge (LIFO). tiefster Knoten zuerst expandiert z.. Open-Liste als Stack implementiert M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 5 / 24 M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 6 / 24 Tiefensuche: eispiel Tiefensuche: einige Eigenschaften eispiel: (nnahme: Knoten in Tiefe 3 haben keine Nachfolger) fast immer als aumsuche implementiert (wir werden sehen, warum) nicht vollständig, nicht semi-vollständig, nicht optimal (Warum?) vollständig für azyklische Zustandsräume, z.. wenn Zustandsraum gerichteter aum M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 7 / 24 M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 8 / 24

Erinnerung: generischer aumsuchalgorithmus Tiefensuche (nicht-rekursive Version) Erinnerung aus Kapitel 7: Generische aumsuche open := new OpenList open.insert(make root node()) while not open.is empty(): n = open.pop() if is goal(n.state): return extract path(n) for each a, s succ(n.state): n := make node(n, a, s ) open.insert(n ) return unsolvable Tiefensuche (nicht-rekursive Version): Tiefensuche (nicht-rekursive Version) open := new Stack open.push back(make root node()) while not open.is empty(): n = open.pop back() if is goal(n.state): return extract path(n) for each a, s succ(n.state): n := make node(n, a, s ) open.push back(n ) return unsolvable M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 9 / 24 M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 10 / 24 Nicht-rekursive Tiefensuche: Diskussion Tiefensuche (rekursive Version) function depth first search(s) Diskussion: es ist nicht viel falsch mit dem ode (sofern man aufpasst, nicht mehr benötigte Knoten freizugeben, wenn die Programmiersprache keine Garbage-ollection beinhaltet) Tiefensuche als rekursiver lgorithmus ist aber einfacher und effizienter Maschinen-Stack als implizite Open-Liste keine Suchknoten-Datenstruktur nötig if is goal(s): return for each a, s succ(s): solution := depth first search(s ) if solution none: solution.push front(a) return solution return none Hauptfunktion: Tiefensuche (rekursive Version) return depth first search(init()) M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 11 / 24 M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 12 / 24

Tiefensuche: ufwand Zeitaufwand: Wenn der Zustandsraum Pfade der Länge m enthält, kann die Tiefensuche O(b m ) Knoten erzeugen, selbst wenn sehr kurze Lösungen (z.. Länge 1) existieren ndererseits: im besten Fall können Lösungen der Länge l mit O(bl) erzeugten Knoten gefunden werden. (Warum?) verbesserbar auf O(l), wenn inkrementelle Nachfolgerberechnung möglich 9.2 Iterative Tiefensuche Speicheraufwand: muss nur Knoten entlang aktuell exploriertem Pfad speichern ( entlang = Knoten auf dem Pfad und deren Kinder) Speicheraufwand O(bm) wenn m maximale erreichte Suchtiefe dieser niedrige Speicherbedarf ist der Hauptgrund, warum Tiefensuche trotz ihrer Nachteile interessant ist M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 13 / 24 M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 14 / 24 Tiefenbeschränkte Suche Tiefenbeschränkte Suche: Pseudo-ode function depth limited search(s, depth limit): Tiefenbeschränkte Suche: Tiefensuche, die alle Suchknoten in einer gegebenen Tiefe n abschneidet (nicht weiter expandiert) für sich allein nicht sehr nützlich, aber wichtige Zutat in nützlicheren Suchalgorithmen if is goal(s): return if depth limit > 0: for each a, s succ(s): solution := depth limited search(s, depth limit 1) if solution none: solution.push front(a) return solution return none M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 15 / 24 M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 16 / 24

Iterative Tiefensuche Iterative Tiefensuche: Eigenschaften Iterative Tiefensuche: Idee: führe eine Folge tiefenbeschränkter Suchen mit ansteigenden Tiefenschranken aus klingt verschwenderisch (jede Iteration wiederholt die gesamte vorher geleistete rbeit), aber tatsächlich ist der ufwand vertretbar ( nalyse folgt) Iterative Tiefensuche for depth limit {0, 1, 2,... }: solution := depth limited search(init()), depth limit) if solution none: return solution Kombiniert Vorteile von reiten- und Tiefensuche: (fast) wie FS: semi-vollständig (allerdings nicht vollständig) wie FS: optimal wenn alle ktionen dieselben Kosten haben wie DFS: muss nur Knoten entlang eines Pfades speichern Speicheraufwand O(bd), wobei d minimale Lösungslänge Zeitaufwand kaum höher als FS ( siehe nalyse später) M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 17 / 24 M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 18 / 24 Iterative Tiefensuche: eispiel Iterative Tiefensuche: eispiel für den ufwand Limit = 0 Limit = 1 Zeitaufwand (erzeugte Knoten): Limit = 2 reitensuche Iterative Tiefensuche 1 + b + b 2 + + b d 1 + b d (d + 1) + db + (d 1)b 2 + + 2b d 1 + 1b d eispiel: b = 10, d = 5 Limit = 3 reitensuche 1 + 10 + 100 + 1000 + 10000 + 100000 = 111111 Iterative Tiefensuche 6 + 50 + 400 + 3000 + 20000 + 100000 = 123456 für b = 11, nur 11% mehr Knoten als mit reitensuche M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 19 / 24 M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 20 / 24

Iterative Tiefensuche: Zeitaufwand Iterative Tiefensuche: ewertung Satz (Zeitaufwand der iterativen Tiefensuche) Sei b der maximale Verzweigungsgrad und d die minimale Lösungslänge des betrachteten Zustandsraums. Gelte b 2. Dann beträgt der Zeitaufwand der iterativen Tiefensuche (d + 1) + db + (d 1)b 2 + (d 2)b 3 + + 1b d = O(b d ) Iterative Tiefensuche: ewertung Iterative Tiefensuche ist oft die Methode der Wahl, wenn aumsuche angemessen (keine Duplikateliminierung nötig) ist und die Lösungstiefe unbekannt ist. und der Speicheraufwand beträgt O(bd) M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 21 / 24 M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 22 / 24 9. Klassische Suche: Tiefensuche und iterative Tiefensuche linde Suche: Zusammenfassung 9. Klassische Suche: Tiefensuche und iterative Tiefensuche linde Suche: Zusammenfassung Vergleich blinder Suchalgorithmen Vollständigkeit, Optimalität, Zeit- und Speicheraufwand 9.3 linde Suche: Zusammenfassung Kriterium reiten- uniforme Tiefen- tiefen- iterative suche Kostensuche suche beschr. S. Tiefensuche vollständig? ja * ja nein nein semi optimal? ja ** ja nein nein ja ** Zeit O(b d ) O(b 1+ c /ɛ ) O(b m ) O(b l ) O(b d ) Speicher O(b d ) O(b 1+ c /ɛ ) O(bm) O(bl) O(bd) b 2 d m l c ɛ > 0 Verzweigungsgrad min. Lösungstiefe max. Suchtiefe Tiefenschranke optimale Lösungskosten min. ktionskosten nmerkungen: * für FS-Tree: semi-vollständig ** nur mit uniformen ktionskosten M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 23 / 24 M. Helmert (Universität asel) Grundlagen der Künstlichen Intelligenz 21. März 2014 24 / 24