Lemme d'Arden

De testwiki
Aller à la navigation Aller à la recherche

Modèle:Voir homonymes

En théorie des automates, le lemme d'Arden est un résultat concernant les langages rationnels.

Il décrit les solutions de l'équation :

X=AXB

A et B sont deux langages formels et X est une inconnue. Le lemme d'Arden s'utilise notamment dans la méthode des équations linéaires gauches qui permet de calculer le langage reconnu par un automate fini donné.

Le lemme est nommé d'après Dean N. Arden qui l'a décrit en 1961[1]. C'est maintenant un résultat que l’on retrouve dans de nombreux manuels ou supports de cours.

Énoncé

Modèle:Théorème

On peut voir l'équation X=AXB comme la définition récursive d'un langage : un mot de ce langage est soit dans B, soit formé d'un mot dans A suivi d'un autre mot du langage, et on peut interpréter la solution comme une définition itérative : un mot est formé d'une suite de mots dans A, puis d'un mot final dans B.

Exemples

  • L'équation X=aXb, où a et b sont des lettres, a pour unique solution a*b={b,ab,aab,,anb,}.
  • L'équation X=XB, où B est un langage, a pour plus petite solution B. Ici A est composé du mot vide, et A*=A. En fait, tout langage contenant B est solution.
  • L'équation X=AXB, avec A=a*b et B=a* a pour unique solution (a*b)*a*={a,b}*. En effet, l'équation signifie qu'un mot de la solution ou bien n'est formé que de lettres a, ou bien commence par un préfixe formé d'une suite de lettres a suivie d'un b, et d'un autre mot de la solution.

Démonstration

1. Le langage L=A*B est solution. En effet, on a :

ALB=A(A*B)B=(AA*{ε})B=A*B=L.

2. Le langage A*B est la plus petite solution. Soit en effet L une autre solution. Alors on a : L=ALB=A(ALB)B=A2LABB. En continuant à remplacer L par ALB, on obtient pour tout n>0 l'équation

L=An+1LAnBAn1BABB,

ce qui montre que L contient tous les AnB, donc A*B.

3. Si A ne contient pas ε, alors cette solution est la seule. Soit en effet L une autre solution. On sait déjà que L contient A*B. Par ailleurs, on a pour tout n>0 l'équation

L=An+1LAnBAn1BABB.

Soit w un mot de L de longueur n. Il appartient alors au membre droit de l'équation, mais il n'est pas dans An+1L parce que tout mot de ce langage a longueur au moins n+1 (puisque tout mot de A contient au moins une lettre). Donc le mot w appartient à un autre langage de l'union, donc à A*B. Ceci prouve que L est contenu dans A*B, donc l'égalité L=A*B.

Application

Le lemme d'Arden permet, par la résolution d'un système d'équation par substitution, de déterminer le langage reconnu par un automate fini. On procède comme dans la méthode d'élimination de Gauss : on exprime une variable en fonction des autres, on la remplace par cette expression, on résout le système à une variable de moins, et on explicite la valeur de la variable éliminée.

Soit 𝒜=(Q,,I,T) un automate fini sur un alphabet Z. Pour chaque état qQ, soit Lq le langage reconnu à partir de l'état q, c'est-à-dire le langage reconnu en prenant q pour état initial. On pose enfin Zq,r={aZ(q,a,r)T}. Ce sont les étiquettes de transition de q à r. On a alors :

Lq=rQZq,rLrFq

Fq={{ε}qFqF

L'application du lemme d'Arden permet alors d'éliminer une à une les inconnues Lq des n équations de la forme précédente, et d'obtenir une expression explicite des Lq et notamment des Li,iI qui permettent de déterminer le langage reconnu par l'automate 𝒜.

Ce même procédé est le fondement de la méthode de Brzozowski et McCluskey, ou de l'algorithme de McNaughton et Yamada.

Exemple

Un automate à deux états

L'automate ci-contre donne le système d'équations :

L1=1L10L2εL2=1L20L1

Le lemme d'Arden donne

L2=1*0L1.

En injectant cette expression de L2 dans l'expression précédente de L1 et en factorisant, on obtient

L1=(101*0)L1{ε},

et par application du lemme d'Arden,

L1=(101*0)*.

Modèle:Clr

Notes et références

Références

Modèle:Références

Bibliographie

Liens externes

Modèle:Portail

  1. Erreur de référence : Balise <ref> incorrecte : aucun texte n’a été fourni pour les références nommées Arden