diff --git a/Acronyms.tex b/Acronyms.tex index 4927621..baf148c 100644 --- a/Acronyms.tex +++ b/Acronyms.tex @@ -8,4 +8,5 @@ \acro{MI}{Maschinelle Intelligenz} \acro{PEAS}{Performance, Environment, Actuators, Sensors} \acro{TSP}{Traveling Salesman Problem} + \acro{CSP}{Constraint Satisfaction Problem} \end{acronym} \ No newline at end of file diff --git a/KI_Zusammenfassung.tex b/KI_Zusammenfassung.tex index 92c2c28..b61f022 100644 --- a/KI_Zusammenfassung.tex +++ b/KI_Zusammenfassung.tex @@ -5,6 +5,8 @@ top=35mm,right=20mm,bottom=30mm,left=20mm, headheight=25mm ]{geometry} +\setcounter{secnumdepth}{3} +\setcounter{tocdepth}{3} \input{Packages.tex} \input{Style.tex} diff --git a/chapters/Optimierung/CSP.tex b/chapters/Optimierung/CSP.tex new file mode 100644 index 0000000..905304d --- /dev/null +++ b/chapters/Optimierung/CSP.tex @@ -0,0 +1,74 @@ +\chapter{\acfp{CSP}} +\label{csp} + Bei \acp{CSP} handelt es sich um eine Teilmenge von Suchproblemen, bei denen \say{Zustände keine Black-Box und Pfade nicht relevant} sind. + Hierbei werden den Variablen $X_i$ Werte aus den Domänen $D_i$ zugewiesen. + Diese müssen eine Reihe von Randbedingungen $C_j$ erfüllen. + Für die Bestimmung der optimalen Lösung wird hierbei die Nutzenfunktion (\ref{nutzentheorie}) verwendet. + + \section{Beispiele} + \label{csp: examples} + \subsection{Karteneinfärbung} + \label{csp: Karteneinfaerbung} + \includegraphics[width = \textwidth]{karteneinfärbung.png} + + \subsection{N-Damen-Problem} + \label{csp: n-damen} + \includegraphics[width = \textwidth]{n-damen.png} + + \subsection{Sudoku} + \label{csp: sudoku} + \includegraphics[width = \textwidth]{sudoku.png} + + \section{Lösungswege} + \label{csp: solutions} + \subsection{\acp{CSP} als klassische Suchprobleme} + \label{csp: klassisches suchproblem} + Man kann ein \ac{CSP} in ein klassisches Suchproblem umwandeln: + \begin{itemize} + \item Startzustand: keine Zuweisungen der Variablen $X_i$ + \item Nachfolgerfunktion: Einer unbelegten Variablen einen Wert zuweisen + \item Zieltest: Prüfen, ob eine Variablenzuweisung die Rahmenbedingungen erfüllt + \end{itemize} + Dies hat allerdings klare Probleme: + \begin{itemize} + \item Die Breitensuche muss bis zur tiefsten Ebene durchlaufen, um eine Lösung zu finden (Worst Case für Breitensuche). + \item Die Tiefensuche probiert ganzen Pfad durch, auch wenn schon früh eine der Randbedingungen $C_j$ verletzt wird. + \end{itemize} + + \subsection{Backtracking} + \label{csp: backtracking} + Beim Backtracking wird folgende Kombination von Mechanismen benutzt: + $$\text{Backtracking} = \text{Tiefensuche}+\text{Variablensortierung}+\text{Konfliktvermeidung}$$ + Für die Reihenfolge, in der die Variablen belegt werden gibt es mehrere Heuristiken + \begin{itemize} + \item \textbf{Minimum Remaining Value:}\\ + Es wird immer die Variable gewählt, die am wenigsten Belegungsmöglichkeiten hat. + Dies hat das Ziel möglichst schnell auf Fehler zu stoßen. + \item \textbf{Least Constraint Value:}\\ + Es wird immer die Variable gewählt, die die anderen Variablen am wenigsten Einschränkt. + Dies hat das Ziel möglichst flexibel zu bleiben. + \end{itemize} + + \subsection{Forward Checking} + \label{forward checking} + \textbf{Prinzip:} Während der Suche unmögliche Werte in noch nicht zugewiesenen Variablen entfernen + + \subsubsection{Beispiel} + \label{forward checking: example} + \includegraphics[width = .5\textwidth]{forward_checking1.png} + \includegraphics[width = .5\textwidth]{forward_checking2.png} + \includegraphics[width = .5\textwidth]{forward_checking3.png} + \includegraphics[width = .5\textwidth]{forward_checking4.png} + + \subsection{Constraint Propagation} + \label{constraint propagation} + \includegraphics[width = \textwidth]{constraint propagation.png} + + \subsection{Arc Consistency} + \label{arc consistency} + \includegraphics[width = \textwidth]{arc consistency.png} + + \includegraphics[width = \textwidth]{arc_consistency2.png} + {\Large\color{red}Achtung!}\\ + Das Arc Consistency Verfahren hat den Nachteil, dass nicht alle Konflikte sicher gefunden werden. + Daher gibt es das Verfahren der \say{k-Consistency}. Hierbei werden mehrere Knoten im Abhängigkeitsgraph geprüft. \ No newline at end of file diff --git a/images/arc consistency.png b/images/arc consistency.png new file mode 100644 index 0000000..c1804bd Binary files /dev/null and b/images/arc consistency.png differ diff --git a/images/arc_consistency2.png b/images/arc_consistency2.png new file mode 100644 index 0000000..5f315ea Binary files /dev/null and b/images/arc_consistency2.png differ diff --git a/images/constraint propagation.png b/images/constraint propagation.png new file mode 100644 index 0000000..7201fdd Binary files /dev/null and b/images/constraint propagation.png differ diff --git a/images/forward_checking1.png b/images/forward_checking1.png new file mode 100644 index 0000000..2ade005 Binary files /dev/null and b/images/forward_checking1.png differ diff --git a/images/forward_checking2.png b/images/forward_checking2.png new file mode 100644 index 0000000..f631ec6 Binary files /dev/null and b/images/forward_checking2.png differ diff --git a/images/forward_checking3.png b/images/forward_checking3.png new file mode 100644 index 0000000..701bab6 Binary files /dev/null and b/images/forward_checking3.png differ diff --git a/images/forward_checking4.png b/images/forward_checking4.png new file mode 100644 index 0000000..14a23cf Binary files /dev/null and b/images/forward_checking4.png differ diff --git a/images/karteneinfärbung.png b/images/karteneinfärbung.png new file mode 100644 index 0000000..42528de Binary files /dev/null and b/images/karteneinfärbung.png differ diff --git a/images/n-damen.png b/images/n-damen.png new file mode 100644 index 0000000..2f88810 Binary files /dev/null and b/images/n-damen.png differ diff --git a/images/sudoku.png b/images/sudoku.png new file mode 100644 index 0000000..6c7e426 Binary files /dev/null and b/images/sudoku.png differ diff --git a/parts/Optimierung.tex b/parts/Optimierung.tex index 463255a..c8d0dee 100644 --- a/parts/Optimierung.tex +++ b/parts/Optimierung.tex @@ -1,4 +1,5 @@ \part{Optimierung} \label{optimierung} -\input{chapters/Optimierung/Lokale Suche.tex} \ No newline at end of file +\input{chapters/Optimierung/Lokale Suche.tex} +\input{chapters/Optimierung/CSP.tex} \ No newline at end of file