Automate fini déterministe

Un article de Wikipédia, l'encyclopédie libre.

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

Accessibilité[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

É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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

Bibliographie[modifier | modifier le code]

Ouvrages
Cours

Notes et références[modifier | modifier le code]

  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 )