Automate fini déterministe

type d'automate fini associant une unique sortie à chaque entrée possible

Un automate fini déterministe, parfois abrégé en AFD (en anglais deterministic finite automaton, abrégé en DFA) est un automate fini dont les transitions à partir de chaque état sont déterminées de façon unique par le symbole d'entrée. Un tel automate se distingue ainsi d'un automate fini non déterministe, où au contraire plusieurs possibilités de transitions peuvent exister simultanément pour un état et un symbole d'entrée donné.

Les automates finis déterministes ont plusieurs aspects avantageux : simplicité de leur définition, facilité de manipulation, aisance de la programmation informatique, élégance des propriétés mathématiques. Leur inconvénient majeur est la taille, mesurée en nombre d'états, qui peut dans certains cas être exponentielle par rapport à leur contrepartie non déterministe. Les deux classes d'automates finis, les automates finis déterministes et non déterministes, ont la même puissance d'expression : elles reconnaissent la même famille de langages, à savoir les langages rationnels, appelés aussi langages réguliers ou langages reconnaissables.

Langages formels

modifier

Un alphabet est, dans ce contexte, tout ensemble   fini, non vide. Les éléments de   sont appelés lettres.

Un mot est une suite finie d'éléments de  ; la longueur d'un mot est le nombre d'éléments qui le composent. Un mot est noté par la juxtaposition de ses lettres. Ainsi, on écrit « oui » plutôt que « (o,u,i) ». Le mot vide, noté souvent  , est l'unique mot de longueur zéro, composé d'aucune lettre. L'ensemble des mots sur   est noté  .

La concaténation de deux mots, notée   ou plus simplement par juxtaposition, est définie pour deux mots   et  par  . On a  , la concaténation est associative :  , par conséquent   est un monoïde.

Automate fini et automate fini déterministe

modifier

Un automate fini est un quintuplet  , où :

  •   est un alphabet,
  •   est un ensemble fini, appelé ensemble des états,
  •   est une partie de   appelée ensemble des transitions,
  •   est une partie de   appelée ensemble des états initiaux,
  •   est une partie de   appelée ensemble des états finaux.

Un automate est déterministe si, d'une part, il a un et un seul état initial et si, d'autre part, la relation   est fonctionnelle au sens suivant :

si   et  , alors  .

S'il en est ainsi, on définit une fonction, appelée fonction de transition et notée traditionnellement  , par :

  si  .

C'est une fonction partielle ; son domaine de définition est l'ensemble des couples   tel qu'il existe   avec  . Dans les manuels, on rencontre aussi la définition suivante d'un automate fini déterministe qui est directe et n’est pas dérivée d'une définition plus générale :

Un automate fini déterministe est un quintuplet  , où :

  •   est un alphabet,
  •   est un ensemble fini, appelé ensemble d'états,
  •   est une fonction (partielle) de   dans   appelée fonction de transitions,
  •   est un élément de   appelé état initial,
  •   est une partie de   appelée ensemble des états finaux.

La fonction de transition   est étendue en une application (partielle)   en posant

  •   pour tout état  . Ici   dénote le mot vide.
  •   pour tout état  , tout mot   et toute lettre  .

On rencontre — notamment dans la littérature francophone — une notation élégante introduite pas Samuel Eilenberg dans son traité[1] : la fonction de transition est notée par un simple point  . Ainsi, au lieu d'écrire  , on écrit  . On a alors les formules :

  •  ;
  •  .

Plus généralement, on a la formule

  •  

pour des mots   et   qui se démontre traditionnellement par récurrence sur la longueur du mont  ; le cas où   est le mot vide ou est une lettre est vérifié par les formules précédent, et plus généralement, si   pour une lettre  , on a

  •  .

Algébriquement, la dernière formule exprime que le monoïde libre   opère à droite sur l'ensemble d'états de l’automate.

Représentation graphique

modifier

Un automate fini, déterministe ou non, est représenté par un graphe dont les sommets sont les états, et les arcs sont les transitions. C'est donc un graphe orienté, étiqueté aux arcs par des lettres de l’alphabet. Une symbolique spéciale distingue les états initiaux et terminaux : un état initial est marqué par une flèche entrante, un état terminal par une flèche sortante ou par un double cercle.

Une transition   est souvent écrite sous la forme  , empruntée à la représentation graphique. Un chemin est une suite de flèches consécutives, notée

 .

Sa longueur est le nombre   de ses transitions, son étiquette (ou trace) est le mot   formé des étiquettes de ses arcs.

On dit qu'un chemin est réussi lorsque   et  . Un mot est reconnu lorsqu'il est l'étiquette d'un chemin réussi. Le langage accepté ou reconnu par l’automate est l’ensemble des mots qu'il reconnaît.

Langage reconnu

modifier

Dans le cas d'un automate fini déterministe, il n'y a, pour un mot   et pour un état  , au plus un chemin partant de   et d'étiquette  ; s'il existe, ce chemin a pour sommet d'arrivée  . Dire qu'un mot   est reconnu s'exprime donc par le fait que   est un état final lorsque   est l'état initial. En d'autres termes, le langage accepté ou reconnu par l’automate   est

 .

Avec la notation par point, cette expression s'écrit

 .

Si on utilise la notation par point, on omet le symbole   dans la définition de l’automate.

Exemple

modifier
 
Automate fini reconnaissant les mots commençant par ab.
Table de transitions
a b
1 2 -
2 - 3
3 3 3

L'automate ci-contre est composé de trois états; l'état 1 est le seul état initial, distingué par une flèche entrante, l'état 3 est le seul état terminal, distingué par une flèche sortante. C'est un automate déterministe. Il reconnaît les mots, sur deux lettres a et b, qui commencent par ab. La fonction de transition est donnée par sa table de transitions. L'absence de flèche est représentée par un tiret : la présence d'un tiret montre que la fonction de transition est partielle.

Propriétés

modifier

Accessibilité

modifier

Un état   est dit :

  • accessible s'il existe un chemin partant d'un état initial et allant jusqu'à   ;
  • coaccessible s'il existe un chemin partant de l'état   et allant jusqu'à un état final.

Un automate est dit :

  • accessible si tous ses états sont accessibles ;
  • coaccessible si tous ses états sont coaccessibles ;
  • émondé s'il est à la fois accessible et coaccessible.

Une fois l'automate rendu accessible, on peut tester si le langage reconnu est vide ou non : pour qu'il soit vide, il faut et il suffit qu'aucun état final ne soit accessible.

Complétude

modifier

Un automate est complet s'il possède au moins un état initial et si, pour chaque état et pour chaque lettre, il existe au moins une flèche sortante, c’est-à-dire si, pour tout état   et toute lettre  , il existe un état   tel que  . On reconnaît la complétude sur la table de transition d'un automate déterministe par le fait qu'aucune case du tableau n'est vide.

Émondage et complétion

modifier

Étant donné un automate fini déterministe (les mêmes algorithmes s'appliquent aux automates non déterministes)  , les algorithmes de parcours usuels en théorie des graphes permettent d'émonder et de compléter un automate :

  • on détermine les états accessibles par un calcul des descendants de l’état initial, donc par un parcours du graphe à partir du sommet qui est l'état initial; un algorithme linéaire en   permet de les calculer. Le graphe de l’automate, et sa fonction de transition, est alors réduit aux sommets accessibles;
  • on détermine ensuite les sommets coaccessibles par un calcul des ascendants des sommets terminaux. Les mêmes algorithmes de parcours permettent de réaliser cette opération en temps linéaire;
  • la complétion d'un automate, s'il est incomplet, se fait par l’adjonction d'un nouvel état, disons   (souvent appelé « état puits », « sink state » en anglais) forcément non final. La fonction de transition   est étendu en   posant
    •   si   est indéfinie;
    •   pour toute lettre  .

Opérations booléennes

modifier

Pour ces opérations, on considère un automate déterministe et complet : la fonction de transition sera représentée par un point.

Complémentation

Soit   un automate fini déterministe et complet et soit   le langage reconnu par  . Le langage complémentaire   est reconnu par le même automate, où on a échangé les états terminaux et non terminaux, soit par l'automate  .

Produit direct d'automates

Soient   et Soit   deux automates finis déterministes complets, reconnaissant des langages notées respectivement L et M. Le produit direct des deux automates est l’automate

 

avec la fonction de transition définie par

 .

Cette fonction s'étend aux mots et on a

 

et  . Comme

 

le langage reconnu par   est l’intersection des langages   et  . C'est pourquoi on rencontre aussi la notation   à la place  

Union, intersection, complément relatif

On peut modifier la définition du produit direct en choisissant d'autres états terminaux. Ainsi, selon l'ensemble d'états terminaux   choisi, l'automate   reconnait la réunion   ou  . Le langage réunion   est reconnu pour  , le langage  , complément de   dans   est reconnu avec  .

Inclusion et équivalence

L'inclusion   est donc facilement testable : il suffit de tester si   est vide. De même, l'équivalence des automates, donc la question si   et   sont égaux, est facile à tester puisqu'elle se ramène à deux inclusions.

Complexité des opérations booléennes

modifier

La complexité d’un langage rationnel L peut se mesurer de diverses façons ; dans le cadre des automates finis déterministes, il est nature de la définir comme le nombre d’états de l’automate déterministe complet minimal reconnaissant ce langage. Par le théorème de Myhill-Nerode, c'est aussi le nombre de résiduels ou quotients gauches du langage. On note ce nombre   avec Brzozowski[2].

La complexité d'une opération binaire   sur des langages L et M est notée  . C'est une fonction de   et de  . Les opérations booléennes et leurs composées à considérer sont notamment

  • complémentation  
  • union  
  • intersection  
  • différence symétrique  
  • différence  

On a par exemple   puisque les automates minimaux ne diffèrent que par les états terminaux dont les ensembles sont complémentaire. La complexité d’autres opérations peut s’en déduire, par exemple :

 .

Quand on évalue la complexité des opérations, il faut préciser si les langages sont donnés sur le même alphabet ou non. Soient L et M deux langages rationnels de complexité   et   respectivement, pas nécessairement sur le même alphabet. Les résultats sont les suivants :

  • La complexité de l’union et de la différence symétrique de L et M est au plus   La complexité de l’union de langages L et M sur le même alphabet est au plus mn.
  • La complexité de la différence est au plus  .
  • La complexité de l’intersection est au plus  .
  • La complexité du produit LM est au plus  .

Toutes ces bornes peuvent être atteintes. Pour illustrer l'importance de l'alphabet, on considère les langages   et   formés des mots sur une seule lettre   respectivement  , avec  . Chacun des deux langages est reconnu par un automate à un seul état. La réunion   est de complexité 4=(1+1)(1+1). Si les langages   et   sont considérés comme étant l'un et l'autre sur l'alphabet  , leurs automates minimaux ont chacun 2 états et l'automate de leur union a bien   états.

Produit et étoile

modifier

Les algorithmes pour le calcul de l'automate reconnaissant le produit ou l’étoile d'un langage décrits pour les automates non déterministes sont bien entendu applicables aussi quand on part d'un automate déterministe, mais le résultat est un automate non déterministe, et même avec des ε-transitions. Autant le non déterminisme ne s'élimine que dans une deuxième étape, autant on peut, avec un peu de soin, éviter l'introduction des ε-transitions dont l'élimination ultérieure constitue une phase supplémentaire dans la construction[3].

Automate pour le produit

Soient   et   deux automates finis déterministes reconnaissant des langages   et   respectivement. Un automate non déterministe   reconnaissant le langage produit   est défini comme suit : l'ensemble de ses états est   (on suppose ces deux ensembles disjoints), l'état initial est   (l'état initial de  , l'ensemble des états terminaux est   (états terminaux de  ). Les transitions sont celles définies par les fonctions de transitions de   et  , avec en plus des transitions   pour toute paire   formée d'un état de   et d'une lettre telle que  . Ainsi, chaque fois que l’automate   arrive dans un état qui peut déboucher sur in de ses états finaux, la transition ajoutée permet aussi d'anticiper le début d'un calcul dans l’automate  .

Automate pour l'étoile

La construction est analogue. Partant d'un automate  , on construit un automate

 ,

  est un nouvel état qui est son état initial et aussi un état final. La fonction de transition de   est étendue à   par

  pour toute lettre  ;

de plus, on ajoute les transitions   pour quand  , et la transition   si  .

Automate minimal

modifier

Deux automates finis déterministes sont équivalents s'ils reconnaissent le même langage. C'est un résultat remarquable de la théorie qu'il existe, pour tout automate fini, un seul automate fini déterministe minimal (c'est-à-dire ayant un nombre minimal d'état) qui est équivalent à l'automate donné. De plus, cet automate, appelé automate minimal, possède une description algébrique simple et élégante. Par ailleurs, l'automate se calcule efficacement par l'algorithme de Moore ou l'algorithme de Hopcroft. L'unicité de l'automate ayant un nombre minimal d'état n'est plus vraie pour les automates non déterministes.

Définition algébrique

modifier

Soit   un langage formel sur un alphabet fini  . Pour tout mot  , le quotient gauche ou résiduel de   par   de   par  , est l'ensemble noté   et défini par

 .

On a

  et  

pour tout  .

L'automate fini déterministe minimal reconnaissant  , aussi appelé automate des quotients[4] et noté parfois  , est défini comme suit :

  • son ensemble d'états est l'ensemble   des quotients gauche de   ;
  • son état initial est   ;
  • les états terminaux   sont les états contenant le mot vide ;
  • la fonction de transition est définie, pour tout état   et   par  .

On a   pour tout mot  . Il en résulte que

 .

Ceci prouve que l'automate  , reconnaît bien le langage  .

Relation de Myhill-Nerode et résiduels

modifier

On définit une relation   sur le mots, appelée relation de Myhill-Nerode, par la règle :   si et seulement si  . inséparables. La relation   est une relation d'équivalence sur les mots, et donc partitionne l'ensemble de tous les mots en classes d'équivalences. Les classes de l'équivalence de Myhill-Nerode sont donc en bijection avec les résiduels de  . Il en résulte qu'un langage est rationnel si et seulement si l'ensemble de ses résiduels est fini[5].

Minimalité

modifier

La minimalité de l'automate   peut être établie de plusieurs façons équivalentes. Soit   un automate déterministe complet accessible reconnaissant le langage  . Pour tout état  , on note  . C'est donc l'ensemble des mots w qui étiquettent un chemin de q vers un état final. Soit   un mot tel que  . Un tel mot existe parce que tout état de l'automate est accessible. On a alors   puisque

 .

En d'autres termes, les états de tout automate   déterministe complet accessible reconnaissant le langage   s'identifient aux quotients gauches, deux états qui sont équivalents dans l'automate   sont les mêmes dans l'automate minimal.

Morphisme d'automates

modifier

Selon le degré de généralité recherché, il y a des variations dans la définition d'un morphisme d'automate. Soient   et   deux automates finis déterministes accessibles et complets. Un morphisme de   dans   est une application   telle que :

  •  
  •  , pour tout lettre  ,
  •  .

La deuxième propriété s'étend aux mots par récurrence : on a   pour tout mot  . Le langage   reconnu par   est contenu dans le langage   reconnu par   puisque pour un mot   de  , on a  , et  .

Si de plus  , on dit que le morphisme est surjectif, et alors   ; en effet, soit  , et soit   l'état terminal tel que  . Soit   l'état tel que  . Alors  , et donc  .

Soit maintenant   un automate reconnaissant un langage   et soit   l'automate minimal de   défini ci-dessus. On définit un morphisme d'automate

 

comme suit : pour tout état  , soit   un mot tel que  . Alors

 .

La définition est indépendante du mot   choisi, et c'est bien un morphisme surjectif.

Il résulte de cette construction que

  • l'automate minimal, image homomorphe de tout automate équivalent, a bien le plus petit nombre possible d'états;
  • l'automate minimal est unique à un renommage des états près puis qu'étant donné deux tels automates, il existe un morphisme de l’un sur l'autre, donc un isomorphisme entre les deux.

Cette propriété remarquable des automates finis déterministes n'est plus vraie pour des automates finis non déterministes.

Voir aussi

modifier

Bibliographie

modifier
Ouvrages
Cours

Notes et références

modifier
  1. Eilenberg 1974.
  2. Janusz Brzozowski, « Unrestricted State Complexity of Binary Operations on Regular Languages », dans Descriptional Complexity of Formal Systems, coll. « Lecture Notes in Computer Science » (no 9777), (arXiv 1602.01387v3), p. 60-72 — La version de arXiv contient des corrections mineures.
  3. Ces constructions se trouvent dans le livre de John E. Hopcroft et Jeffrey D. Ullman, Formal languages and their relation to automata, Addison-Wesley, .
  4. Sakarovitch 2003.
  5. C'est sous cette forme que le théorème est énoncé dans le traité d'Eilenberg (Eilenberg 1974, Théorème 8.1 (The Quotient Criterion), page 55.)
  6. « computer sciences - Compilation (SMI S5) », sur SiteW.com (consulté le )