\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{multicol}
\columnseprule 0.4pt\raggedcolumns
\usetheme{Warsaw}

\title{Programmation Dynamique \\ Recherche du plus grand carré}
\author{Todaro Cédric et Bertrand Benjamin}
\date{}

\begin{document}

\begin{frame}
  \titlepage
\end{frame}

\begin{frame}[fragile]{Approche déconnecté}
    \begin{minipage}{0.6\linewidth}
    \begin{block}{Trouver la taille d'un côté du plus grand carré blanc dans une grille}
        \includegraphics[scale=0.4]{./fig/grids} 
        
        (Bonus) Avoir la position des plus grand carrés par leur coin inférieur droit.
    \end{block}
    \end{minipage}
    \hfill
    \begin{minipage}{0.35
        \linewidth}
        \textbf{Consignes}
        \begin{itemize}
            \item Résoudre le problème à la main sur les grilles données.
            \item Trouver et rédiger une méthode pour résoudre le problème pour n'importe quelle grille.
            \item Trouver une façon d'encoder une grille.
        \end{itemize}
    \end{minipage}
\end{frame}

\begin{frame}[fragile]{Programmation}
    \textbf{Consignes} choisir une méthode et l'implémenter.

    \begin{block}{Spécifications}
        \begin{minipage}{0.6\linewidth}
            Le module doit avoir une fonction nommé \verb|taille_plus_grand_carre|.

            \textbf{paramètre}:
            \begin{itemize}
                \item une grille (liste de liste avec 0 si blanc et 1 si noir)
            \end{itemize}
            \textbf{retourne}:
            \begin{itemize}
                \item la taille d'un côté du plus grand carré.
            \end{itemize}
        \end{minipage}
        \hfill
        \begin{minipage}{0.3\linewidth}
            \includegraphics[scale=0.4]{./fig/grid}
        \end{minipage}
    \end{block}
    \paragraph{Aide:} Dans le module...
    
\end{frame}

\begin{frame}{Comparaison}
    \textbf{Consignes}
    \begin{itemize}
        \item Choisir 3 implémentations
        \item Exécuter ces trois implémentations sur des grilles de tailles différentes
        \item Noter les temps d'exécutions
        \item Tracer une graphique représentant ces temps d'exécutions
        \item Comparer ces trois implémentations
        \item Que peut-on dire sur la complexité des algorithmes mis en oeuvre?
    \end{itemize}
\end{frame}

\begin{frame}{Programmation dynamique de l'algorithme}
    \begin{block}{Récurrence}
        \begin{minipage}{0.45\linewidth}
            \includegraphics[scale=0.5]{./fig/recurence}
        \end{minipage}
        \hfill
        \begin{minipage}{0.45\linewidth}
            On note \texttt{gc(i, j)} la taille du plus grand carré possible qui a le coin inférieur droit en position $(i,j)$.
        \end{minipage}
        \[
            \scriptstyle
            gc(i, j) = \left\{ 
                \begin{array}{ll}
                    0 & \mbox{Si noir}\\
                    \min(gc(i-1, j), gc(i, j-1), gc(i-1, j-1)) +1 & \mbox{Si blanc}
                \end{array}
        \]
    \end{block}
    \begin{block}{Stockage des valeurs}
        \begin{center}
            \includegraphics[scale=0.4]{./fig/sauvegarde}
        \end{center}
    \end{block}
\end{frame}

\end{document}
