53 lines
3.5 KiB
TeX
53 lines
3.5 KiB
TeX
\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} |