243 lines
7.1 KiB
TeX
243 lines
7.1 KiB
TeX
\section{Chapitre 3: Recherche non informée}
|
|
\label{sec:ch3a}
|
|
|
|
\subsection{Agent de résolution de problèmes}
|
|
\label{sec:ch3agentresolution}
|
|
|
|
\begin{enumerate}
|
|
\item But: Ensemble d'états à atteindre
|
|
\item Problème: États et actions à considérer
|
|
\item Recherche: Indentifier la meilleure séquence d'actions menant à un état but
|
|
\item Exécution: Accomplir la séquence d'actions
|
|
\end{enumerate}
|
|
|
|
\subsection{Formulation du problème}
|
|
|
|
\begin{itemize}
|
|
\item État initial $x$
|
|
\item Actions: une fonction $S(x)$ permet de trouver l'ensemble des états successeurs sous forme de paires
|
|
\item Test de but: Déterminer si le but est atteint
|
|
\item Coût du chemin: Fonction qui assigne un coût à un chemin. C'est la mesure de la performance de l'agent.
|
|
\end{itemize}
|
|
|
|
\begin{mydef}
|
|
Une abstraction est \textbf{valide} si l'on peut développer toutes les solutions abstraites vers une solution dans le monde réel.
|
|
\end{mydef}
|
|
|
|
\paragraph{Exemple}
|
|
|
|
Le problème du 8-puzzle
|
|
|
|
\PuzzleSolution
|
|
\begin{Puzzle}{3}{3}
|
|
|5|7|3|.
|
|
|8|{}|1|.
|
|
|4|2|6|.
|
|
\end{Puzzle}
|
|
|
|
\begin{itemize}
|
|
\item États: Position des 8 tuiles dans les cases
|
|
\item Actions: Déplacement du trou
|
|
\begin{enumerate}
|
|
\item Droite
|
|
\item Gauche
|
|
\item Haut
|
|
\item Bas
|
|
\end{enumerate}
|
|
\item Test de but: Vérifie si l'état correspond à l'état final
|
|
\PuzzleSolution
|
|
\begin{Puzzle}{3}{3}
|
|
|1|2|3|.
|
|
|4|5|6|.
|
|
|7|8|{}|.
|
|
\end{Puzzle}
|
|
\item Coût du chemin: chaque action coûte 1.
|
|
\end{itemize}
|
|
|
|
\subsection{Recherche dans un arbre}
|
|
\label{sec:ch3recherchearbre}
|
|
|
|
Objectif: Simuler l'exploration d'états en générant des successeurs pour les états déjà explorés. Pour chaque noeud de recherche, on définit les éléments suivants:
|
|
\begin{itemize}
|
|
\item État: dans l'espace d'état
|
|
\item Noeud parent: Noeud de l'arbrbe de recherche qui a généré ce noeud
|
|
\item Action: appliquée au noeud parent pour atteindre générer l'état de ce noeud
|
|
\item Coût du chemin $g(n)$: Depuis l'état initial jusqu'à ce noeud
|
|
\item Profondeur: Nombre d'actions(étapes) dans le chemin depuis l'état initial
|
|
\end{itemize}
|
|
|
|
\paragraph{Algorithme de recherche général}
|
|
|
|
|
|
\begin{algorithm}[h!]
|
|
\Deb{
|
|
\Entree{$P$:Problème($n_0$: État initial,$A$: Actions,$B$: États buts),$S$: Stratégie}
|
|
\Sortie{$C(n)$: Chemin vers un état but}
|
|
\Donnees{$\mathbf{E}$: Ensemble d'expansion}
|
|
\Repeter{$\mathbf{E}=\emptyset$}{
|
|
$n \leftarrow S(P,\mathbf{E})$\;
|
|
\Si{$n \in B(P)$}{\Retour{$C(n)$}}
|
|
\Sinon{
|
|
\Pour{$a \in A(n)$}{
|
|
$\mathbf{E} \leftarrow \mathbf{E} \cup \text{Noeud-Enfant}(P,\text{Parent}(n),a)$\;
|
|
}
|
|
}
|
|
}
|
|
\Retour{$\emptyset$}
|
|
}
|
|
\caption{Algorithme de recherche général en arbre}
|
|
\end{algorithm}
|
|
|
|
Pour chercher dans un graphe, on conserve une liste des noeuds visités (la frontière ou liste fermée)
|
|
Avant de développer un noeud, on vérifie qu'il n'est pas dans la liste fermée. Une fois développé, on l'ajoute à la liste fermée.
|
|
|
|
\subsection{Évaluation des stratégies}
|
|
\label{sec:ch3strategie}
|
|
|
|
\begin{itemize}
|
|
\item Complétude: Trouve solution si $\exists$
|
|
\item Optimalité: solution trouvée est optimale?
|
|
\item Complexité de temps: Temps nécessaire pour trouver une solution, nombre de noeuds générés
|
|
\item Complexité d'espace: Quantité de mémoire nécessaire, nombre de noeuds maximum en mémoire
|
|
\end{itemize}
|
|
|
|
Quantités utilisées
|
|
\begin{itemize}
|
|
\item $b$: Facteur de branchement, nombre maximum de successeurs d'un noeud (pire cas)
|
|
\item $d$: Profondeur du noeud but le moins profond (meilleur cas)
|
|
\item $m$: Longueur maximale d'un chemin dans l'espace d'états (pire cas)
|
|
\end{itemize}
|
|
|
|
\subsection{Largeur d'abord}
|
|
\label{sec:ch3largeur}
|
|
\begin{itemize}
|
|
\item Noeuds de profondeur $i$ avant profondeur $i+1$
|
|
\item Le but est évalué après l'expansion
|
|
\item Nouveaux successeurs à la fin de la file
|
|
\end{itemize}
|
|
|
|
\begin{table}[ht]
|
|
\centering
|
|
\begin{tabular}{p{4cm}|p{3cm}|p{4cm}}
|
|
Propriété&Valeur&Conditions\\
|
|
\hline
|
|
Complétude&Oui&Si $b$ est fini\\
|
|
Complexité en temps &$\sum_{i=0}^{d}b^i = O(b^d)$&\\
|
|
Complexité en espace&$O(b^d)$&\\
|
|
Optimalité&Non&Oui, si le coût des actions est constant\\
|
|
\end{tabular}
|
|
\caption{Largeur d'abord: propriétés}
|
|
\end{table}
|
|
|
|
\subsection{Coût uniforme}
|
|
\label{sec:ch3uniformcost}
|
|
|
|
\begin{itemize}
|
|
\item Noeud avec la fonction de coût la moins élevée en premier.
|
|
\item Le but est évalué avant l'expansion
|
|
\item Nouveaux successeurs dans une file triée
|
|
\end{itemize}
|
|
|
|
\begin{table}[ht]
|
|
\centering
|
|
\begin{tabular}{p{4cm}|p{3cm}|p{4cm}}
|
|
Propriété&Valeur&Conditions\\
|
|
\hline
|
|
Complétude&Oui& Si $g(n) \geq \epsilon < 0$\\
|
|
Complexité en temps &$O(b^{\ceil{C^{\star}/{\epsilon}}})$&\\
|
|
Complexité en espace&$O(b^{\ceil{C^{\star}/{\epsilon}}})$&\\
|
|
Optimalité&Oui&Les noeuds sont développés en ordre de $g(n)$\\
|
|
\end{tabular}
|
|
\caption{Coût uniforme: propriétés}
|
|
\end{table}
|
|
|
|
\subsection{Profondeur d'abord}
|
|
\label{sec:ch3profondeur}
|
|
|
|
\begin{itemize}
|
|
\item Noeud le plus profond d'abord
|
|
\item Implémenté à l'aide d'une pile
|
|
\end{itemize}
|
|
|
|
\begin{table}[ht]
|
|
\centering
|
|
\begin{tabular}{p{4cm}|p{3cm}|p{4cm}}
|
|
Propriété&Valeur&Conditions\\
|
|
\hline
|
|
Complétude&Non& Si profondeur infinie ou cycles, Oui, si on évite les états répétés et que l'espace de recherche est fini\\
|
|
Complexité en temps &$O(b^{m})$&Mauvais si $m>d$. $m < \infty$\\
|
|
Complexité en espace&$O(bm)$&\\
|
|
Optimalité&Non&\\
|
|
\end{tabular}
|
|
\caption{Profondeur d'abord: propriétés}
|
|
\end{table}
|
|
|
|
\subsection{Profondeur limitée}
|
|
\label{sec:ch3profondeurlimite}
|
|
|
|
\begin{itemize}
|
|
\item Noeud le plus profond d'abord
|
|
\item Implémenté à l'aide d'une pile
|
|
\end{itemize}
|
|
|
|
\begin{table}[ht]
|
|
\centering
|
|
\begin{tabular}{p{4cm}|p{3cm}|p{4cm}}
|
|
Propriété&Valeur&Conditions\\
|
|
\hline
|
|
Complétude&Oui& Si $l \geq d$\\
|
|
Complexité en temps &$O(b^{l})$&\\
|
|
Complexité en espace&$O(bl)$&\\
|
|
Optimalité&Non&\\
|
|
\end{tabular}
|
|
\caption{Profondeur limitée: propriétés}
|
|
\end{table}
|
|
|
|
\subsection{Profondeur itérative}
|
|
\label{sec:ch3profondeuriter}
|
|
|
|
\begin{itemize}
|
|
\item Profondeur limitée, en itérant sur la profondeur
|
|
\item Avantage de la largeur d'abord (complet et optimal), complexité en espace linéaire de profondeur d'abord
|
|
\end{itemize}
|
|
|
|
\begin{table}[ht]
|
|
\centering
|
|
\begin{tabular}{p{4cm}|p{3cm}|p{4cm}}
|
|
Propriété&Valeur&Conditions\\
|
|
\hline
|
|
Complétude&Oui&\\
|
|
Complexité en temps &$O(b^{d})$&\\
|
|
Complexité en espace&$O(bd)$&\\
|
|
Optimalité&Oui&Si le coût de chaque action est 1. Peut être modifié pour le coût uniforme\\
|
|
\end{tabular}
|
|
\caption{Profondeur itérative: propriétés}
|
|
\end{table}
|
|
|
|
\subsection{Recherche bidirectionnelle}
|
|
\label{sec:ch3bidirectionnelle}
|
|
|
|
\begin{itemize}
|
|
\item Recherche simultanée depuis le départ et le but
|
|
\item Applicable seulement si on peut rechercher depuis le but
|
|
\end{itemize}
|
|
|
|
\begin{table}[ht]
|
|
\centering
|
|
\begin{tabular}{p{4cm}|p{3cm}|p{4cm}}
|
|
Propriété&Valeur&Conditions\\
|
|
\hline
|
|
Complétude&Oui&\\
|
|
Complexité en temps &$O(b^{d/2})$&\\
|
|
Complexité en espace&$O(b^{d/2})$&\\
|
|
Optimalité&Oui&\\
|
|
\end{tabular}
|
|
\caption{Recherche bidirectionnelle: propriétés}
|
|
\end{table}
|
|
|
|
|
|
%%% Local Variables:
|
|
%%% mode: latex
|
|
%%% TeX-master: "notes_de_cours"
|
|
%%% End:
|
|
|