133 lines
5.1 KiB
TeX
133 lines
5.1 KiB
TeX
\documentclass[a4paper,french]{article}
|
|
|
|
\title{Mathématiques pour l'informatique}
|
|
\author{}
|
|
\date{Dernière compilation~: \today{} à \currenttime}
|
|
|
|
\usepackage{../cours}
|
|
|
|
\begin{document}
|
|
|
|
\maketitle
|
|
\tableofcontents
|
|
|
|
\clearpage
|
|
\section{Automates finis}
|
|
|
|
Automate = fonction qui dépend d'un état et d'un changement d'état.
|
|
Par exemple ON / OFF, la machine est en état d'arrêt ou en état de marche.
|
|
|
|
Autre exemple~: téléphone.
|
|
|
|
\begin{tabular}{l|ll}
|
|
\toprule
|
|
Mode & Évènement & Nouvel état \\
|
|
\midrule
|
|
avion & appel émis & avion \\
|
|
avion & bouton téléphonie & téléphonie \\
|
|
\midrule
|
|
téléphonie & bouton décrocher & communication \\
|
|
\midrule
|
|
communication & bouton raccrocher & téléphonie \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
|
|
L'automate est sous un état, il a des entrées qui le font peut-être passer d'un état à un autre ou effectuer des actions.
|
|
|
|
Il faut en plus de cela définir un état initial (quel état avoir quand l'automate est mis en marche~?) et final (quel état avoir pour éteindre l'automate proprement~?)
|
|
|
|
Un nouvel état peut dépendre de l'état précédent ou pas.
|
|
On peut très bien trouver une action qui mette l'automate dans un état Y sans se soucier d'un autre état X dans lequel se trouve l'automate à un moment donné.
|
|
|
|
\subsection{Automates accepteurs}
|
|
|
|
Valide une suite d'entrée en fonction de certains critères.
|
|
Le changement d'état est interne à l'automate, et c'est une fois que toutes les entrées ont été analysées que la sortie se fait connaître.
|
|
|
|
Exemple~: déterminer si une suite de chiffres en entrée constitue un mois de l'année.
|
|
|
|
\subsection{Définitions}
|
|
|
|
\begin{itemize}
|
|
|
|
\item \textbf{Alphabet}~:
|
|
Ensemble des éléments en entrée de l'automate.
|
|
|
|
\item \textbf{Mot}~:
|
|
Suite d'éléments issus de l'alphabet.
|
|
Cas particulier~: le mot vide, noté $\epsilon$.
|
|
On a du coup $x = x\epsilon = \epsilon x$.
|
|
|
|
\item \textbf{Langage}~:
|
|
Ensemble de tous les mots pouvants être construits sur un alphabet donné.
|
|
On note $A^*$ tous les mots y compris le mot vide.
|
|
On note $A^+$ tous les mots sauf le mot vide.
|
|
|
|
On appelle \emph{langage reconnu} l'ensemble des mots que l'automate a validé.
|
|
|
|
\end{itemize}
|
|
|
|
\subsection{Reconnaissance de mot}
|
|
|
|
\begin{itemize}
|
|
|
|
\item Principe
|
|
|
|
\item ...
|
|
|
|
\end{itemize}
|
|
|
|
\subsection{Automate déterministe}
|
|
|
|
À un état donné, il n'y a qu'une seule transition possible.
|
|
|
|
\subsubsection{Automate complet}
|
|
|
|
\subsubsection{Automate non complet}
|
|
|
|
\subsection{Automate non déterministe}
|
|
|
|
À un état donné, il y a plusieurs transitions possibles.
|
|
|
|
Un automate non déterministe est plus difficile à mettre en \oe{}uvre en algorithmique qu'un automate déterministe.
|
|
En effet, il faudra en plus des pointeurs d'état et de symbole courant maintenir une pile des opérations possibles.
|
|
|
|
\subsection{Accessibilité}
|
|
|
|
\begin{itemize}
|
|
|
|
\item Un automate accessible ne contient que des états qui peuvent être atteints.
|
|
|
|
\item Un automate coaccessible ne contient que des états pouvant mener à un état terminal.
|
|
|
|
\item Un automate émondé est à la fois accessible et coaccessible.
|
|
|
|
\end{itemize}
|
|
|
|
\subsection{Automate standard}
|
|
|
|
Un automate standard ne contient qu'un seul état initial.
|
|
Aucune transition n'arrive sur cet état initial.
|
|
|
|
\subsection{Déterminisation d'un automate}
|
|
|
|
Pour passer d'un automate non déterministe vers un automate déterministe, on va dérouler toutes les étapes de l'automate de départ en partant des états initiaux.
|
|
S'il y a plusieurs états initiaux, on crée un nouvel état initial qu'on note comme l'ensemble des états initiaux de l'automate de départ.
|
|
Ensuite, pour chaque transition possible on recopie les transitions en partant du nouvel état courant vers un ensemble d'états de l'automate de départ.
|
|
Cela nous fait créer de nouveaux états, qu'on utilise comme état courant pour trouver les nouveaux états qu'on peut rejoindre.
|
|
|
|
\begin{enumerate}
|
|
|
|
\item Création de l'état initial~: ensemble de tous les états initiaux de l'automate non déterministe de départ.
|
|
|
|
\item Repérage des lignes dans le tableau de transitions concernant les états initiaux déterminés précédemment.
|
|
|
|
\item Pour chaque transition de chacune de ces lignes, identification des états cibles, et renseignement des ensembles d'états cibles dans le nouveau tableau de transitions.
|
|
|
|
\item Retour à l'étape de repérage des états déterminés précédemment.
|
|
|
|
\item Identification des ensembles contenant au moins un état terminal dans l'automate de départ.
|
|
|
|
\end{enumerate}
|
|
|
|
\end{document}
|