Automate fini déterministe

De testwiki
Aller à la navigation Aller à la recherche

Modèle:Article général Modèle:Voir homonymes

Un automate fini déterministe, parfois abrégé en AFD (en anglais Modèle:Lang, 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

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 u=a1an et v=b1bnpar uv=a1anb1bn. On a uε=εu=u, la concaténation est associative : u(vw)=(uv)w, par conséquent (Σ*,) est un monoïde.

Automate fini et automate fini déterministe

Un automate fini est un quintuplet 𝒜=Σ,Q,R,I,F, où :

  • Σ est un alphabet,
  • Q est un ensemble fini, appelé ensemble des états,
  • R est une partie de Q×Σ×Q appelée ensemble des transitions,
  • I est une partie de Q appelée ensemble des états initiaux,
  • F est une partie de Q 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 R est fonctionnelle au sens suivant :

si (p,a,q)R et (p,a,q)R, alors q=q.

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

δ(p,a)=q si (p,a,q)R.

C'est une fonction partielle ; son domaine de définition est l'ensemble des couples (p,a)Q×Σ tel qu'il existe qQ avec (p,a,q)R. 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 𝒜=Σ,Q,δ,q0,F, où :

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

La fonction de transition δ est étendue en une application (partielle) Q×Σ*Q en posant

  • δ(q,ε)=q pour tout état q. Ici ε dénote le mot vide.
  • δ(q,wa)=δ(δ(q,w),a) pour tout état q, tout mot w et toute lettre a.

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 δ(q,w), on écrit qw. On a alors les formules :

  • qε=q;
  • qwa=(qw)a.

Plus généralement, on a la formule

  • quv=(qu)v

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

  • quv=quza=(quz)a=((qu)z)a=(qu)za=(qu)v.

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

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 (p,a,q)R est souvent écrite sous la forme paq, empruntée à la représentation graphique. Un chemin est une suite de flèches consécutives, notée

q0a1q1a2q2anqn.

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

On dit qu'un chemin est réussi lorsque q0I et qkF. 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

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

L(𝒜)={wΣ*δ(q0,w)F}.

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

L(𝒜)={wΣ*q0wF}.

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

Exemple

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

Accessibilité

Un état qQ est dit :

  • accessible s'il existe un chemin partant d'un état initial et allant jusqu'à q ;
  • coaccessible s'il existe un chemin partant de l'état q 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

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 p et toute lettre a, il existe un état q tel que paq. 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

Étant donné un automate fini déterministe (les mêmes algorithmes s'appliquent aux automates non déterministes) 𝒜=Σ,Q,δ,q0,F, 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 |Q|×|Σ| 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 s (souvent appelé « état puits », Modèle:Citation étrangère en anglais) forcément non final. La fonction de transition δ est étendu en Δ posant
    • Δ(q,a)=s si δ(q,a) est indéfinie;
    • Δ(s,a)=s pour toute lettre a.

Opérations booléennes

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 𝒜=Σ,Q,q0,F un automate fini déterministe et complet et soit L=L(𝒜) le langage reconnu par 𝒜. Le langage complémentaire L¯=Σ*L est reconnu par le même automate, où on a échangé les états terminaux et non terminaux, soit par l'automate 𝒜¯=Σ,Q,q0,QF.

Produit direct d'automates

Soient 𝒜=Σ,Q,q0,F et Soit =Σ,P,p0,G deux automates finis déterministes complets, reconnaissant des langages notées respectivement L et M. Le produit direct des deux automates est l’automate

𝒞=𝒜×=Σ,Q×P,(q0,p0),H

avec la fonction de transition définie par

(q,p)a=(qa,pa).

Cette fonction s'étend aux mots et on a

(q,p)w=(qw,pw)

et H=F×G. Comme

(q0,p0)wHq0wF,p0wG

le langage reconnu par 𝒞 est l’intersection des langages L et M. 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 H choisi, l'automate 𝒞 reconnait la réunion LM ou LM. Le langage réunion LM est reconnu pour H=F×PQ×G, le langage LM=L(A*M), complément de M dans L est reconnu avec H=F×(PG).

Inclusion et équivalence

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

Complexité des opérations booléennes

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 κ(L) avec Brzozowski[2].

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

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

On a par exemple κ(L)=κ(L) 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 :

κ(LM)=κ(L¯M)=κ(LM)=κ(LM).

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é κ(L)=m et κ(M)=n 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 (m+1)(n+1) 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 (m+1)n.
  • La complexité de l’intersection est au plus mn.
  • La complexité du produit LM est au plus m2n2n1.

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

Produit et étoile

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 𝒜=Σ,Q,q0,F et =Σ,P,p0,T deux automates finis déterministes reconnaissant des langages L et M respectivement. Un automate non déterministe 𝒞 reconnaissant le langage produit LM est défini comme suit : l'ensemble de ses états est QP (on suppose ces deux ensembles disjoints), l'état initial est q0 (l'état initial de 𝒜, l'ensemble des états terminaux est T (états terminaux de ). Les transitions sont celles définies par les fonctions de transitions de 𝒜 et , avec en plus des transitions (q,a,p0) pour toute paire (q,a) formée d'un état de 𝒜 et d'une lettre telle que qaF. 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 𝒜=Σ,Q,q0,F, on construit un automate

=Σ,Qp0,p0,Fp0,

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

p0a=q0a pour toute lettre a;

de plus, on ajoute les transitions (q,a,q0) pour quand qaF, et la transition (p0,a,q0) si q0aF.

Automate minimal

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

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

x1L={zA*xzL}.

On a

ε1L=L et (xy)1L=y1(x1L)

pour tout x,y.

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

  • son ensemble d'états est l'ensemble {x1LxA*} des quotients gauche de L ;
  • son état initial est iL=ε1L=L ;
  • les états terminaux TL sont les états contenant le mot vide ;
  • la fonction de transition est définie, pour tout état M et aA par Ma=a1M.

On a Mx=x1M pour tout mot x. Il en résulte que

iLxTLx1LTLεx1LxL.

Ceci prouve que l'automate 𝒜(L), reconnaît bien le langage L.

Relation de Myhill-Nerode et résiduels

On définit une relation L sur les mots, appelée relation de Myhill-Nerode, par la règle : xLy si et seulement si x1L=y1L. inséparables. La relation L 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 L. Il en résulte qu'un langage est rationnel si et seulement si l'ensemble de ses résiduels est fini[5].

Minimalité

La minimalité de l'automate 𝒜(L) peut être établie de plusieurs façons équivalentes. Soit 𝒜=(Q,i,T) un automate déterministe complet accessible reconnaissant le langage L. Pour tout état q, on note Lq={wA*qwT}. C'est donc l'ensemble des mots w qui étiquettent un chemin de q vers un état final. Soit x un mot tel que ix=q. Un tel mot existe parce que tout état de l'automate est accessible. On a alors Lq=x1L puisque

wLqqwTixwT=ixwTxwLwx1L.

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

Morphisme d'automates

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

  • f(i)=i
  • f(qa)=f(q)a, pour tout lettre a,
  • f(T)T.

La deuxième propriété s'étend aux mots par récurrence : on a f(qx)=f(q)x pour tout mot x. Le langage L(𝒜) reconnu par 𝒜 est contenu dans le langage L(𝒜) reconnu par 𝒜 puisque pour un mot x de L(𝒜), on a ixT, et f(ix)=f(i)x=ixT.

Si de plus f(T)=T, on dit que le morphisme est surjectif, et alors L(𝒜)=L(𝒜) ; en effet, soit xL(𝒜), et soit tT l'état terminal tel que ix=t. Soit tQ l'état tel que ix=t. Alors f(t)=t, et donc tT.

Soit maintenant 𝒜=(Q,i,T) un automate reconnaissant un langage L=L(𝒜) et soit 𝒜(L) l'automate minimal de L défini ci-dessus. On définit un morphisme d'automate

f:𝒜𝒜(L)

comme suit : pour tout état qQ, soit w un mot tel que iw=q. Alors

f(q)=w1L.

La définition est indépendante du mot w 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

Bibliographie

Ouvrages
Cours

Notes et références

Modèle:Références

Modèle:Palette Automates finis et langages réguliers Modèle:Portail

  1. Modèle:Harvsp.
  2. Modèle:Chapitre — La version de arXiv contient des corrections mineures.
  3. Ces constructions se trouvent dans le livre de Modèle:Ouvrage.
  4. Modèle:Harvsp.
  5. C'est sous cette forme que le théorème est énoncé dans le traité d'Eilenberg (Modèle:Harvsp, Théorème 8.1 (The Quotient Criterion), page 55.)
  6. Modèle:Lien web