Lemme d'Arden

Lemme d'Arden

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

Il permet de résoudre des équations du type :

X = A \cdot X \cup B

A et B sont deux langages rationnels et X l'inconnue recherchée. 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é.

Sommaire

Énoncé

Soient A un langage rationnel ne contenant pas le mot vide \epsilon, et B un autre langage rationnel. A^* \cdot B est l'unique solution de l'équation

X = A \cdot X \cup B

Preuve

  • Que A contienne \epsilon ou pas, A^* \cdot B est solution. En effet,
A \cdot A^* \cdot B \cup B = A \cdot A^* \cdot B \cup \{\epsilon\} \cdot B = ((A \cdot A^*) \cup \{\epsilon\}) \cdot B

Par définition,

A^* = \bigcup_{n \ge 0} A^n

d'où :

(A \cdot A^*) \cup \{\epsilon\} = (A \cdot \bigcup_{n \ge 0} A^n) \cup \{\epsilon\} = (\bigcup_{n \ge 1} A^n) \cup \{\epsilon\} = A^*

et ainsi

A \cdot A^* \cdot B \cup B = A^* \cdot B
  • Si A ne contient pas \epsilon, alors cette solution est la seule. Supposons en effet qu'il existe deux solutions distinctes Y et Z. On peut supposer par exemple Y \setminus Z \ne \varnothing.

Soit alors m \in  Y \setminus Z de longueur minimale (non nécéssairement unique).

Comme m \not\in Z et B \subset Z puisque Z = A \cdot Z \cup B, on a  m \not\in B. Alors, vu que Y = A \cdot Y \cup B, m \in A \cdot Y et m = a.n avec (a,n) \in A \times Y.

Comme a.n \not\in Z et A \cdot Z \subset Z puisque Z = A \cdot Z \cup B, on a n \not\in Z d'où n \in  Y \setminus Z.

m ayant été choisi de longueur minimale, on en déduit que a=\epsilon, et donc \epsilon \in A.

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.

Soit  \mathcal{A} = \left( Q, \Sigma, T, I, F \right) un automate fini. On énumère les états de Q : Q = {1,...,n}. On pose alors, pour q \in Q, Lq le langage reconnu à partir de l'état q, c'est-à-dire le langage reconnu par l'automate \left( Q, \Sigma, T, \{q\}, F \right). On pose enfin \Sigma_{q,r} = \{c \in Q \mid \left(q, c ,r\right) \in T\}. On écrit

L_q = \Sigma_{q,q}.L_q \cup \left(\bigcup_{r \in Q \setminus \{q\}} \Sigma_{q,r}.L_r \cup F_q\right)F_q = \begin{cases} \left\{ \varepsilon \right\} & q \in F \\ \left\{ \right\} & q \notin F \end{cases}

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 L_i, i \in I qui permettent de déterminer le langage reconnu par l'automate \mathcal{A}.

Exemple

Un automate

On écrit L_1 = \{1\} \cdot L_1 \cup \left(\{0\} \cdot L_2 \cup \{\epsilon\}\right) et L_2 = \{1\} \cdot L_2 \cup \{0\} \cdot L_1.

Le lemme d'Arden donne L_2 = \{1\}^* \cdot \{0\} \cdot L_1. En injectant cette expression de L2 dans l'expression précédente de L1 et en factorisant, on obtient L_1 = \left(\{1\} \cup \{0\} \cdot \{1\}^* \cdot \{0\}\right) \cdot L_1 \cup \{\epsilon\} et par application du lemme d'Arden,

L_1 = \left(\{1\} \cup \{0\} \cdot\ \{1\}^* \cdot \{0\}\right)^*.

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Lemme d'Arden de Wikipédia en français (auteurs)

Игры ⚽ Нужно сделать НИР?

Regardez d'autres dictionnaires:

  • Arden — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom.  Pour l’article homophone, voir Ardennes. Arden est un mot anglo saxon pouvant désigner : Toponyme En Australie : Arden Anglican School Au… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”