\section{Chapitre 5: Recherche avec un adversaire}
\label{sec:ch5}

\subsection{Particularités des jeux avec adversaires}
\label{sec:ch5jeuxadversaires}

\begin{itemize}
\item Plusieurs agents qui modifient l'environnement
\item Imprévisibilité
\item Temps de réaction limité
\item Relation entre les joueurs:
  \begin{itemize}
  \item Coopératifs: même but
  \item Compétitifs: un gain pour un est une perte pour l'autre:
    \begin{itemize}
    \item Cas particulier: jeux à somme nulle (utilité de +1 ou -1)
    \end{itemize}
  \item Mixte: alliances
  \end{itemize}
\item Jeux à tour de rôle:
  \begin{itemize}
  \item Joueurs coopératifs ou rivaux
  \item Connaissance partielle ou totale de l'état du jeu
  \end{itemize}
\end{itemize}

\paragraph{Hypothèses pour le cours}

\begin{enumerate}
\item Deux adversaires (\textsc{Max} et \textsc{Min})
\item Tour de rôle
\item Somme nulle (Récompense positive ou négative)
\item Complètement observables
\item Déterministes
\end{enumerate}

\subsection{Arbre de recherche}
\label{sec:ch5arbrerecherche}

\begin{itemize}
\item Noeud initial
\item Fonction de transition
\item Test de terminaison
\item Fonction d'utilité
\end{itemize}

\subsection{Algorithme \textsc{MiniMax}}
\label{sec:ch5minimax}

À chaque tout, choisir l'action menant à la plus grande valeur minimax. Meilleure action optimale contre un joueur optimal. C'est un algorithme de recherche en profondeur.

\paragraph{Algorithme}

Programmation récursive jusqu'à la racine de l'arbre

\begin{align}
  E[\textsc{MiniMax}(n)] &=
              \begin{cases}
                U(n)&\text{$n$ est terminal}\\
                max_{s \in Child(n)}\textsc{MiniMax}(s)&\text{$n$ est Max}\\
                min_{s \in Child(n)}\textsc{MiniMax}(s)&\text{$n$ est Min}\\
              \end{cases}
\end{align}

\begin{table}[h]
  \centering
\begin{tabular}{p{4cm}|p{3cm}|p{4cm}}
  Propriété&Valeur&Conditions\\
  \hline
  Complétude&Oui&Si l'arbre est fini\\
  Complexité en temps &$O(b^m)$&\\
  Complexité en espace&$O(bm)$&\\
  Optimalité&Oui&Contre un adversaire optimal\\
\end{tabular}
\caption{\textsc{MiniMax}: propriétés}
\end{table}

\subsection{Accélérer la recherche}
\label{sec:ch5accelerer}

Deux approches:
\begin{itemize}
\item Élagage Alpha-Beta: élaguer les chemins explorés inutilement
\item Remplacer la fonction d'utilité par une évaluation heuristique: recherche la plus profonde possible + prédiction du résultat ensuite
\end{itemize}

\subsection{Élagage Alpha-Béta}
\label{sec:ch5alphabeta}

\begin{itemize}
\item $\alpha$ est la valeur du meilleur choix pour \textsc{Max} (plus grande valeur trouvée jusqu'ici)
\item $\beta$ et la valeur du meilleur choix pour \textsc{Min} (plus petite valeur trouvée jusqu'ici)
\end{itemize}

Couper dans un noeud
\begin{itemize}
\item \textsc{Min}: Si $f(n)<\alpha$ (pire que $\alpha$ pour \textsc{Max})
\item \textsc{Max}: Si $f(n)>\beta$ (pire que $\beta$ pour \textsc{Min})
\end{itemize}

\href{http://inst.eecs.berkeley.edu/~cs61b/fa14/ta-materials/apps/ab_tree_practice/}{Simulation (Berkeley)}

\subsection{Negamax}
\label{sec:ch5negamax}

\begin{function}[ht]
  \Sortie{valeur}
  \Deb{
    \Si{profondeur=0 $\lor$ noeud est terminal}{
      \Retour{joueur*valeur}\;
    }
    noeudsEnfants $\leftarrow$ trierActions(genererActions(noeud))\;
    valeur <- $-\infty$\;
    \PourCh{noeudEnfant $\in$ noeudsEnfants}{
      valeur <- max(valeur, -\textsc{NegaMax}(noeudEnfant, profondeur-1, -$\beta$, -$\alpha$, -joueur))\;
      $\alpha$ <- max($\alpha$,valeur)\;
      \Si{$\alpha \geq \beta$}{
        Couper(noeudEnfant)\;
      }
    }
    \Retour{valeur}
  }
  \caption{NegaMax(noeud, profondeur, $\alpha$, $\beta$, joueur=1)}
\end{function}

\begin{table}[ht]
  \centering
\begin{tabular}{p{4cm}|p{3cm}|p{4cm}}
  Propriété&Valeur&Conditions\\
  \hline
  Complétude&Oui&Si solution atteignable\\
  Complexité en temps &$O(b^m)$ à $O(b^m)$&Du meilleur cas au pire cas\\
  Complexité en espace&$O(bm)$&\\
  Optimalité&Oui&Si solution optimale atteignable\\
\end{tabular}
\caption{$SMA^{\star}$: propriétés}
\end{table}

\subsection{Décision en temps réel}
\label{sec:ch5tempsreel}

Approche standard:
\begin{itemize}
\item Limiter la profondeur
\item Modifier l'algorithme \textsc{MiniMax} avec élagage $\alpha-\beta$ pour utiliser une fonction heuristique au lieu du coût (H-minimax).
\item Modifier la fonction d'évaluation à l'aide d'apprentissage machine (Ex: fonction linéaire avec un poids pour chaque figure du jeu d'échecs)
\item Recherche par faisceau
\end{itemize}

\subsection{Actions aléatoires}
\label{sec:ch5actionsaleatoires}

\begin{itemize}
\item Ajout de noeuds \textsc{Chance} aux noeuds \textsc{Max} et
  \textsc{Min}.
\item L'utilité d'un noeud chance est l'utilité espérée, la
  moyenne de l'utilité de ses enfants.
\end{itemize}

\subsection{\textsc{Expectimax}}
\label{sec:ch5expectimax}

On modélise le comportement de l'opposant à l'aide d'un modèle probabiliste.

\begin{align}
  E[\textsc{ExpectiMax}(n)] &=
              \begin{cases}
                U(n)&\text{$n$ est terminal}\\
                max_{s \in Child(n)}\textsc{MiniMax}(s)&\text{$n$ est Max}\\
                min_{s \in Child(n)}\textsc{MiniMax}(s)&\text{$n$ est Min}\\
                \sum_{s \in Child(n)}P(s) \times \textsc{ExpectiMax}(s)&\text{$n$ est Chance}\\
              \end{cases}
\end{align}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "notes_de_cours"
%%% End:
