suchverfahren hinzugefügt
@ -1,2 +1,53 @@
|
||||
\chapter{Suchverfahren}
|
||||
\label{suchverfahren}
|
||||
Bei der Modellerstellung (\ref{suchprobleme: umgebungsmodelle}) für Suchprobleme (\ref{suchprobleme}) entstehen zumeist Zustandsgraphen.
|
||||
Beim Durchlaufen des Graphen entsteht dann durch das Expandieren einzelner Knoten mithilfe der Nachfolgerfunktion (\ref{suchprobleme}) entsteht ein Suchbaum:\\
|
||||
\includegraphics[width = \textwidth]{graph zu suchbaum.png}
|
||||
|
||||
\section{Breitensuche}
|
||||
\label{breadth-first search}
|
||||
Bei der Breitensuche wird der Graph Schicht für Schicht durchlaufen.\\
|
||||
\includegraphics[width = \textwidth]{breitensuche.png}
|
||||
Die Breitensuche hat dabei den Vorteil, dass sie \textbf{vollständig} (alle Knoten werden erreicht) und \textbf{optimal} (Lösung mit geringster Tiefe wird gefunden) ist.
|
||||
Allerdins nimmt der Speicherbedarf der Breitensuche exponentiell mit der Anzahl der Knoten zu:\\
|
||||
\includegraphics[width = .8\textwidth]{breitensuche_speicherbedarf.png}
|
||||
|
||||
\section{Tiefensuche}
|
||||
\label{depth-first search}
|
||||
Bei der Tiefensuche werden immer die tiefsten Knoten zuerst expandiert.\\
|
||||
\includegraphics[width = \textwidth]{tiefensuche.png}
|
||||
Dies hat den Nachteil, dass die Tiefensuche \textbf{nicht vollständig} (unendlich tiefer Pfad möglich) und \textbf{nicht optimal} (findet bestenfalls die linkeste Lösung).
|
||||
Allerdings brauch keine Information über beendete Pfade gespeichert werden.
|
||||
Daher ist der Speicherbedarf der Tiefensuche nur linear von der Anzahl der Knoten abhängig.
|
||||
|
||||
\section{Informierte Suche}
|
||||
\label{informed search}
|
||||
Falls bestimmte Informationen über den Graphen bekannt sind kann eine Heuristik erstellt werden.
|
||||
Die Heuristik $h(n)$ ist hierbei eine Funktion, welche die Kosten für das erreichen des Ziels über einen Knoten $n$ abschätzt.
|
||||
Dies kann dazu benutzt werden effizienter durch den Graph zu laufen.
|
||||
Hierbei ist allerdings zu beachten, dass eine Heuristik nicht perfekt ist (mehr Informationen zu der Bewertung von Heuristiken siehe Zusammenfassung KB).
|
||||
Eine informierte Suche ist folglich \textbf{nicht optimal}.
|
||||
Sie kann aber ({\color{red}falls Endlospfade vermieden werden}) \textbf{vollständig} sein.
|
||||
|
||||
\section{A*-Suche}
|
||||
\label{a-star search}
|
||||
Die A*-Suche nutzt die Summe der Heuristik $h(n)$ und der Länge des bisherigen Weges $g(n)$ um einen Pfad zu wählen.
|
||||
$$f(n)=h(n)+g(n)$$
|
||||
Die A*-Suche ist \textbf{optimal} für eine Baumsuche, falls $h(s)$ zulässig ist ($h(s)$ überschätzt nicht).
|
||||
Zudem ist die A*-Suche \textbf{optimal} für eine Graphsuche, falls $h(s)$ konsistent ist.
|
||||
$h(s)$ ist konsistent, wenn $h(s) \le c(s,a,s') + h(s')$ ($a$: Aktion, die Nachfolger $s'$ generiert) gilt.
|
||||
Falls eine Lösung existiert ist die A*-Suche \textbf{vollständig}.
|
||||
Außerdem ist die A*-Suche \textbf{optimal effizient} (kein Suchalgorithmus muss weniger knoten expandieren).
|
||||
Allerdings ist auch bei der A*-Suche die Anzahl der im Speicher zu haltenden Knoten exponentiell.
|
||||
|
||||
\subsection{Beispiel}
|
||||
\label{example: a-star}
|
||||
\includegraphics[width = \textwidth]{beispiel A*.png}
|
||||
|
||||
\section{Hinweise zur Implementierung}
|
||||
\label{Hinweise zur Implementierung}
|
||||
\includegraphics[width = \textwidth]{hinweise_zur_implementierung.png}
|
||||
|
||||
\includegraphics[width = \textwidth]{hinweise_zur_implementierung2.png}
|
||||
|
||||
\includegraphics[width = \textwidth]{hinweise_zur_implementierung3.png}
|
BIN
images/beispiel A*.png
Normal file
After Width: | Height: | Size: 192 KiB |
BIN
images/breitensuche.png
Normal file
After Width: | Height: | Size: 73 KiB |
BIN
images/breitensuche_speicherbedarf.png
Normal file
After Width: | Height: | Size: 132 KiB |
BIN
images/graph zu suchbaum.png
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
images/hinweise_zur_implementierung.png
Normal file
After Width: | Height: | Size: 98 KiB |
BIN
images/hinweise_zur_implementierung2.png
Normal file
After Width: | Height: | Size: 150 KiB |
BIN
images/hinweise_zur_implementierung3.png
Normal file
After Width: | Height: | Size: 72 KiB |
BIN
images/tiefensuche.png
Normal file
After Width: | Height: | Size: 238 KiB |