diff --git a/agentintelligent.png b/agentintelligent.png index e0a64e7..cdc035a 100644 Binary files a/agentintelligent.png and b/agentintelligent.png differ diff --git a/agentrationnel.png b/agentrationnel.png index 716ce54..d629670 100644 Binary files a/agentrationnel.png and b/agentrationnel.png differ diff --git a/chapitre2.tex b/chapitre2.tex index 4d9f900..a35ecf9 100644 --- a/chapitre2.tex +++ b/chapitre2.tex @@ -165,3 +165,7 @@ Les diférentes composantes de l'agent apprenant sont: \item Générateur de problèmes: Identifie les possibilités d'amélioration et suggère des expérimentations \end{itemize} +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "notes_de_cours" +%%% End: diff --git a/chapitre3a.tex b/chapitre3a.tex new file mode 100644 index 0000000..51756d5 --- /dev/null +++ b/chapitre3a.tex @@ -0,0 +1,243 @@ +\section{Chapitre 3: Recherche non informée} +\label{sec:ch3} + +\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}[h] + \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}[h] + \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}[h] + \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}[h] + \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}[h] + \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}[h] + \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: + diff --git a/chapitre3b.tex b/chapitre3b.tex new file mode 100644 index 0000000..6d24ef2 --- /dev/null +++ b/chapitre3b.tex @@ -0,0 +1,211 @@ +\section{Chapitre 3: Recherche informée} +\label{sec:ch3} + +Les algorithmes de recherche informée utilisent une heuristique pour choisir les meilleurs noeuds à visiter. + +\subsection{Meilleur d'abord} +\label{sec:ch3meilleur} + +\begin{itemize} +\item Implémenté par une file triée par une fonction d'évaluation $f(n)$ +\item Fonction heuristique $h(n)$ qui estime le coût du chemin le plus court pour atteindre un état but $g$. $h(n) \geq 0$ et $h(G)=0 \forall g \in G$. +\end{itemize} + +\subsection{Meilleur d’abord gloutonne} +\label{sec:ch3meilleurgloutonne} + +\begin{itemize} +\item $f(n)=h(n)$ +\end{itemize} + +Exemples d'heuristique: + +\begin{itemize} +\item mesure de distance euclidienne, +\item distance de Manhattan. +\end{itemize} + +\begin{table}[h] + \centering +\begin{tabular}{p{4cm}|p{3cm}|p{4cm}} + Propriété&Valeur&Conditions\\ + \hline + Complétude&Non&Possibilité de cycles. Oui, dans la version pour graphes\\ + Complexité en temps &$O(b^m)$&Dans le pire cas\\ + Complexité en espace&$O(b^m)$&\\ + Optimalité&Non&Arrête à la première solution trouvée\\ +\end{tabular} +\caption{Meilleur d’abord gloutonne: propriétés} +\end{table} + +\subsection{$A^{\star}$} +\label{sec:ch3astar} + +\begin{itemize} +\item Identique à l'algorithme de la recherche avec coût uniforme, sauf pour la fonction $f(n)$ +\item $f(n)=g(n)+h(n)$ +\item $g(n)$: Coût du noeud de départ au noeud $n$. +\item $h(n)$: Coût estimé du noeud $n$ au but. +\item $f(n)$: Coût total estimé du noeud de départ au but en passant par $n$. +\end{itemize} + +\begin{mydef} + \textbf{Heuristique admissible}: $h(n) \leq h^{\star}(n)$ où $h^{\star}(n)$ est le véritable coût de $n$ au but. +\end{mydef} + +\begin{table}[h] + \centering +\begin{tabular}{p{4cm}|p{3cm}|p{4cm}} + Propriété&Valeur&Conditions\\ + \hline + Complétude&Oui&\\ + Complexité en temps &$O((b^{\epsilon})^d)$&\\ + Complexité en espace&$O((b^{\epsilon})^d)$&\\ + Optimalité&Oui&Avec heuristique admissible et consistante pour les graphes\\ +\end{tabular} +\caption{$A^{\star}$: propriétés} +\end{table} + +\begin{mydef} + Consistance de $h(n)$: Soit le noeud $n$ et le successeur $n^{\prime}$ produit par l'action $a$, alors $h(n) \leq c(n,a,n^{\prime})+h(n^{\prime})$ +\end{mydef} + +\subsection{Preuves d'optimalité pour $a^{\star}$} +\label{sec:ch3optimastar} + +\paragraph{Version pour arbres} + +On a la frontière suivante: + +\fbox{ + \begin{minipage}{0.25\linewidth} + $B$,$n$,$\ldots$ + \end{minipage} +} + +\begin{itemize} +\item h est une heuristique admissible +\item G est un but optimal +\item B est un but sous-optimal +\end{itemize} + +\begin{align} + \label{eq:astaroptimarbres} + f(n) &= g(n) + h(n)&&\\ + &\leq g(n) + c(n,G) &&\text{, par l'hypothèse d'admissibilité}\\ + &= g(G)&&\\ + &< g(B)+h(B) &&\text{, car B est sous-optimal}\\ + &= g(B)+0&&\\ + &= f(B)&&\\ + \implies f(n) &< f(B) &&\text{, n sera développé avant B} +\end{align} + +G sera éventuellement dans la frontière, on aura alors + +\fbox{ + \begin{minipage}{0.25\linewidth} + $B$,$G$,$\ldots$ + \end{minipage} +} + +\paragraph{Version pour graphes} + +On a la frontière suivante: + +\fbox{ + \begin{minipage}{0.25\linewidth} + $A$,$X_1$,$X_k$,$\ldots$ + \end{minipage} +} + +\begin{align} + \label{eq:astaroptimarbres} + h(n) &\leq c(n,a,n^{\prime}) + h(n^{\prime})&&\text{, Inégalité triangulaire}\\ + g(n) + h(n) &\leq g(n) + \leq c(n,a,n^{\prime}) + h(n^{\prime})&&\\ + f(n) &\leq f(n^{\prime}) &&\text{, La fonction d'évaluation ne décroit pas le long d'un chemin}\\ + f(A) &\leq f(x_i) &&\forall i\\ + f(A^{\prime}) &\geq f(x_i) \geq f(A) = g(A) + h(A)&&\\ + g(A^{\prime})+h(A^{\prime})&\geq f(x_i) \geq g(A) + h(A)&&\\ + g(A^{\prime})&\geq g(A) + h(A)-h(A^{\prime})&&\\ + g(A^{\prime})&\geq g(A) +\end{align} + +\subsection{Recheche à mémoire limitée} +\label{sec:ch3memoirelimitee} + +\paragraph{$IDA^{\star}$} + +\begin{itemize} +\item Profondeur itérative, la limite est une valeur de la fonction d'évaluation. +\item Limite $L_i = min(f(n))$ pour $n$ où $f(n)>L_{i-1}$. +\item Avantage: beaucoup moins de mémoire +\end{itemize} + +\paragraph{$SMA^{\star}$} + +\begin{itemize} +\item $A^{\star}$ avec une limite sur la mémoire. +\item Enlève les noeuds les plus mauvais, enregistre la valeur de la fonction d'évaluation au parent. +\end{itemize} + +\begin{table}[h] + \centering +\begin{tabular}{p{4cm}|p{3cm}|p{4cm}} + Propriété&Valeur&Conditions\\ + \hline + Complétude&Oui&Si solution atteignable\\ + Complexité en temps &Peut être très long&\\ + Complexité en espace&Mémoire allouée&\\ + Optimalité&Oui&Si solution optimale atteignable\\ +\end{tabular} +\caption{$SMA^{\star}$: propriétés} +\end{table} + +\subsection{Fonctions heuristiques} +\label{sec:ch3fonctionsheuris} + +\paragraph{Facteur de branchement effectif} + +\begin{mydef} + Le facteur de branchement effectif $b^{\star}$ est la facteur de branchement d'un arbre uniforme de profondeur $d$ contenant $n+1$ noeuds. + \begin{equation} + \label{eq:facteurbranchement} + N+1 = \sum_{i=0}^{d}b^{\star} + \end{equation} +\end{mydef} + +Plus $b^{\star} \rightarrow 1$, plus l'heuristique est efficace. + +\paragraph{Dominance} + +\begin{mydef} + Dominance de $h_2$ sur $h_1$: + \begin{equation} + \label{eq:dominanceheuristique} + h_2(n) \geq h_1(n) \forall n \implies h_2 \succ h_1 + \end{equation} +\end{mydef} + +\paragraph{Inventer une heuristique} + +\begin{itemize} +\item Relaxer le problème +\item Le coût de la solution optimale doit être plus petit (admissibilité). +\item Tenir compte aussi de la consistance. +\end{itemize} + +\paragraph{Génération automatique} + +\begin{itemize} +\item Heuristique composite: $h(n)=max(h_1(n),\ldots,h_m{n})$ +\item Bases de données de motifs: solutions pour des sous-problèmes +\end{itemize} + + + + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "notes_de_cours" +%%% End: diff --git a/chapitre4.tex b/chapitre4.tex new file mode 100644 index 0000000..865ac00 --- /dev/null +++ b/chapitre4.tex @@ -0,0 +1,22 @@ +\section{Chapitre 4: Au-delà de l’exploration classique} +\label{sec:ch4} + +\subsection{Amélioration itérative} +\label{sec:ch4amelioration} + +\begin{itemize} +\item Espace de recherche: configuration complètes +\item On part d'une configutation complète et on itère pour améliorer la qualité de la solution (optimalité ou satisfaction de contraintes) +\item Exemple: problème des n reines +\end{itemize} + +\subsection{Escalade} +\label{sec:ch4escalade} + + + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "notes_de_cours" +%%% End: diff --git a/environnementpropriete.png b/environnementpropriete.png index 078ff58..3eefa2b 100644 Binary files a/environnementpropriete.png and b/environnementpropriete.png differ diff --git a/notes_de_cours.tex b/notes_de_cours.tex index f42b52d..310e615 100644 --- a/notes_de_cours.tex +++ b/notes_de_cours.tex @@ -41,6 +41,7 @@ rightsub = \frqq% ]{dirtytalk} \newtheorem{definition}{Définition} +\usepackage[unboxed]{cwpuzzle} \usepackage{array} \usepackage{mathtools,amssymb} \usepackage{float} @@ -69,7 +70,10 @@ \usepackage{cprotect} % Pour pouvoir personaliser la légende des figures \usepackage[normalem]{ulem} \useunder{\uline}{\ul}{} -%---------------------------------------------------------------- +\usepackage{enumitem} +\setlist[itemize,1]{label={$\bullet$}} +\setlist[itemize,2]{label={$\star$}} +% ---------------------------------------------------------------- %graph-colors------------------ @@ -91,6 +95,9 @@ % Le package newclude mis en commentaire permet d'introduire une * pour éviter le saut de page entre les section \include{chapitre1} \include{chapitre2} +\include{chapitre3a} +\include{chapitre3b} +\include{chapitre4} % Ajouter les autres chapitres au besoin \bibliography{bibliographie}