From 453683e544128be623323852c0659eebda70633f Mon Sep 17 00:00:00 2001 From: NotXia <35894453+NotXia@users.noreply.github.com> Date: Wed, 4 Oct 2023 14:21:19 +0200 Subject: [PATCH] Add FAIKR informed search --- .../img/_a_start_example.pdf | Bin 0 -> 31000 bytes .../img/_a_start_optimality.pdf | Bin 0 -> 23688 bytes .../img/_greedy_best_first_example.pdf | Bin 0 -> 30234 bytes .../img/best_first_example.drawio | 250 ++++++++++++++++++ .../sections/_search.tex | 187 ++++++++++++- 5 files changed, 425 insertions(+), 12 deletions(-) create mode 100644 src/fundamentals-of-ai-and-kr/img/_a_start_example.pdf create mode 100644 src/fundamentals-of-ai-and-kr/img/_a_start_optimality.pdf create mode 100644 src/fundamentals-of-ai-and-kr/img/_greedy_best_first_example.pdf create mode 100644 src/fundamentals-of-ai-and-kr/img/best_first_example.drawio diff --git a/src/fundamentals-of-ai-and-kr/img/_a_start_example.pdf b/src/fundamentals-of-ai-and-kr/img/_a_start_example.pdf new file mode 100644 index 0000000000000000000000000000000000000000..bf3d110ff3197acf7707e9ff7cc05c6039ad55ce GIT binary patch literal 31000 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 literal 0 HcmV?d00001 diff --git a/src/fundamentals-of-ai-and-kr/img/_a_start_optimality.pdf b/src/fundamentals-of-ai-and-kr/img/_a_start_optimality.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1dbd1fc190d63a65cdd8ae2c0ac1204275139bee GIT binary patch literal 23688 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 literal 0 HcmV?d00001 diff --git a/src/fundamentals-of-ai-and-kr/img/_greedy_best_first_example.pdf b/src/fundamentals-of-ai-and-kr/img/_greedy_best_first_example.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b8952e2a28c06f5c3ef5b5c5d104c1ae2dfd2b7d GIT binary patch literal 30234 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 r!gjr?B+7KdJs==m0x + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/fundamentals-of-ai-and-kr/sections/_search.tex b/src/fundamentals-of-ai-and-kr/sections/_search.tex index d8927d2..c535386 100644 --- a/src/fundamentals-of-ai-and-kr/sections/_search.tex +++ b/src/fundamentals-of-ai-and-kr/sections/_search.tex @@ -47,7 +47,7 @@ \end{description} \begin{algorithm} -\caption{Tree search algorithm} \label{alg:search_tree_search} +\caption{Tree search} \label{alg:search_tree_search} \begin{lstlisting} def treeSearch(problem, fringe): fringe.push(problem.initial_state) @@ -112,10 +112,10 @@ Always expands the less deep node. The fringe is implemented as a queue (FIFO). \hline \textbf{Completeness} & Yes \\ \hline - \textbf{Optimality} & Only if cost is uniform (i.e. all edges have same cost) \\ + \textbf{Optimality} & Only with uniform cost (i.e. all edges have same cost) \\ \hline \textbf{\makecell{Time and space\\complexity}} - & $O(b^d)$, where the depth is $d$ and the branching factor is $b$ (i.e. each non-leaf node has $b$ children) \\ + & $O(b^d)$, where the solution depth is $d$ and the branching factor is $b$ (i.e. each non-leaf node has $b$ children) \\ \hline \end{tabular} \end{center} @@ -124,7 +124,7 @@ The exponential space complexity makes BFS impractical for large problems. \begin{figure}[h] \centering - \includegraphics[width=0.40\textwidth]{img/_bfs.pdf} + \includegraphics[width=0.30\textwidth]{img/_bfs.pdf} \caption{BFS visit order} \end{figure} @@ -142,19 +142,19 @@ Same as BFS, but always expands the node with the lowest cumulative cost. \textbf{Optimality} & Yes \\ \hline \textbf{\makecell{Time and space\\complexity}} - & $O(b^d)$, with depth $d$ and branching factor $b$ \\ + & $O(b^d)$, with solution depth $d$ and branching factor $b$ \\ \hline \end{tabular} \end{center} \begin{figure}[h] \centering - \includegraphics[width=0.60\textwidth]{img/_ucs.pdf} + \includegraphics[width=0.50\textwidth]{img/_ucs.pdf} \caption{Uniform-cost search visit order. $(n)$ is the cumulative cost} \end{figure} -\subsection{Depth-first search} +\subsection{Depth-first search (DFS)} \marginnote{Depth-first search} Always expands the deepest node. The fringe is implemented as a stack (LIFO). @@ -162,21 +162,184 @@ Always expands the deepest node. The fringe is implemented as a stack (LIFO). \def\arraystretch{1.2} \begin{tabular}{c | m{10cm}} \hline - \textbf{Completeness} & No \\ + \textbf{Completeness} & No (loops) \\ \hline \textbf{Optimality} & No \\ \hline \textbf{Time complexity} - & $O(b^d)$, with depth $d$ and branching factor $b$ \\ + & $O(b^m)$, with maximum depth $m$ and branching factor $b$ \\ \hline \textbf{Space complexity} - & $O(b \cdot d)$, with depth $d$ and branching factor $b$ \\ + & $O(b \cdot m)$, with maximum depth $m$ and branching factor $b$ \\ \hline \end{tabular} \end{center} \begin{figure}[h] \centering - \includegraphics[width=0.40\textwidth]{img/_dfs.pdf} + \includegraphics[width=0.30\textwidth]{img/_dfs.pdf} \caption{DFS visit order} -\end{figure} \ No newline at end of file +\end{figure} + + +\subsection{Depth-limited search} +\marginnote{Depth-limited search} +Same as DFS, but introduces a maximum depth. +A node at the maximum depth will not be explored further. + +This allows to avoid infinite branches (i.e. loops). + + + +\subsection{Iterative deepening} +\marginnote{Iterative deepening} +Rus a depth-limited search by trying all possible depth limits. +It is important to note that each iteration is executed from scratch (i.e. a new execution of depth-limited search). + +\begin{algorithm} +\caption{Iterative deepening} +\begin{lstlisting} +def iterativeDeepening(G): + for c in range(G.max_depth): + sol = depthLimitedSearch(G, c) + if sol is not FAILURE: + return sol + return FAILURE +\end{lstlisting} +\end{algorithm} + +Both advantages of DFS and BFS are combined. + +\begin{center} + \def\arraystretch{1.2} + \begin{tabular}{c | m{10cm}} + \hline + \textbf{Completeness} & Yes \\ + \hline + \textbf{Optimality} & Only with uniform cost \\ + \hline + \textbf{Time complexity} + & $O(b^d)$, with solution depth $d$ and branching factor $b$ \\ + \hline + \textbf{Space complexity} + & $O(b \cdot d)$, with solution depth $d$ and branching factor $b$ \\ + \hline + \end{tabular} +\end{center} + + + +\section{Informed search} +\marginnote{Informed search} +Informed search uses evaluation functions (heuristics) to reduce the search space and +estimate the effort needed to reach the final goal. + + +\subsection{Best-first search} +\marginnote{Best-first seacrh} +Uses heuristics to compute the desirability of the nodes (i.e. how close they are to the goal). +The fringe is ordered according the estimated scores. + + +\begin{description} + \item[Greedy search / Hill climbing] + \marginnote{Greedy search / Hill climbing} + The heuristic only evaluates nodes individually and does not consider the path to the root + (i.e. expands the node that currently seems closer to the goal). + \begin{center} + \def\arraystretch{1.2} + \begin{tabular}{c | m{9cm}} + \hline + \textbf{Completeness} & No (loops) \\ + \hline + \textbf{Optimality} & No \\ + \hline + \textbf{\makecell{Time and space\\complexity}} + & $O(b^d)$, with solution depth $d$ and branching factor $b$ \\ + \hline + \end{tabular} + \end{center} + % The complexity can be reduced depending on the heuristic. + + \begin{figure}[ht] + \centering + \includegraphics[width=0.65\textwidth]{img/_greedy_best_first_example.pdf} + \caption{Hill climbing visit order} + \end{figure} + + \item[A$^\textbf{*}$] + \marginnote{A$^*$} + The heuristic also considers the cumulative cost needed to reach a node from the root. + The score associated to a node $n$ is: + \[ f(n) = g(n) + h'(n) \] + where $g$ is the depth of the node and $h'$ is the heuristic that computes the distance to the goal. + + \begin{description} + \item[Optimistic/Feasible heuristic] + \marginnote{Optimistic/Feasible heuristic} + Given $t(n)$ that computes the true distance of a node $n$ to the goal. + An heuristic $h'(n)$ is optimistic (i.e. feasible) if: + \[ h'(n) \leq t(n) \] + In other words, $h'$ is optimistic if it always underestimates the distance to the goal. + \end{description} + + \begin{theorem} + If the heuristic used by A${^*}$ is optimistic $\Rightarrow$ A${^*}$ is optimal + \end{theorem} + \begin{proof} + Consider a scenario where the queue contains: + \begin{itemize} + \item A node $n$ whose child is the optimal solution + \item A sub-optimal solution $G_2$ + \end{itemize} + \begin{center} + \includegraphics[width=0.5\textwidth]{img/_a_start_optimality.pdf} + \end{center} + We want to prove that A$^*$ will always expand $n$. + + Given an optimistic heuristic $f(n) = g(n) + h'(n)$ and + the true distance of a node $n$ to the goal $t(n)$, + we have that: + \[ + \begin{split} + f(G_2) &= g(G_2) + h'(G_2) = g(G_2) \text{, as } G_2 \text{ is a solution: } h'(G_2)=0 \\ + f(G) &= g(G) + h'(G) = g(G) \text{, as } G \text{ is a solution: } h'(G)=0 + \end{split} + \] + Moreover, $g(G_2) > g(G)$ as $G_2$ is suboptimal. + Therefore, $\bm{f(G_2) > f(G)}$. + + Furthermore, as $h'$ is feasible, we have that: + \[ + \begin{split} + h'(n) \leq t(n) &\iff g(n) + h'(n) \leq g(n) + t(n) = g(G)=f(G) \\ + &\iff \bm{f(n) \leq f(G)} + \end{split} + \] + In the end, we have that $f(G_2) > f(G) \geq f(n)$. + So we can conclude that A$^*$ will never expand $G_2$ as: + \[ f(G_2) > f(n) \] + \end{proof} + + \begin{center} + \def\arraystretch{1.2} + \begin{tabular}{c | m{9cm}} + \hline + \textbf{Completeness} & Yes \\ + \hline + \textbf{Optimality} & Only if the heuristic is optimistic \\ + \hline + \textbf{\makecell{Time and space\\complexity}} + & $O(b^d)$, with solution depth $d$ and branching factor $b$ \\ + \hline + \end{tabular} + \end{center} + + In generally, it is better to use heuristics with large values (i.e. heuristics that don't underestimate too much). + + \begin{figure}[ht] + \centering + \includegraphics[width=0.65\textwidth]{img/_a_start_example.pdf} + \caption{A$^*$ visit order} + \end{figure} +\end{description}