Vous êtes sur la page 1sur 28

Université des Sciences et des Techniques de Rouen

Master 2 ITA

Applications des automates


2004-2005

Généralisation des Automates Généralisés


Automates d’Expression

Samuel Grau
<samuel.grau@club-internet.fr>
Table des matières

Introduction 3

1 Rappels et Définitions 4
1.1 Rappel Historique . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Préliminaires . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 Automates . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2 L’idée d’Eilenberg . . . . . . . . . . . . . . . . . . . . 7
1.2.3 Automates Généralisés Déterministes . . . . . . . . . . 8

2 Applications 10
2.1 Automates d’expression . . . . . . . . . . . . . . . . . . . . . 10
2.1.1 Élimination des états . . . . . . . . . . . . . . . . . . . 13
2.2 Automates d’expression Déterministes . . . . . . . . . . . . . 17
2.2.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.2 Propriétés . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3 Minimisation des Automates d’expression . . . . . . . . . . . 21
2.3.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3.2 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . 23
2.4 Langages Rationnels sans préfixes, premiers . . . . . . . . . . 24

Conclusion 26

2
Introduction

Ce document aura comme conséquence, l’étude de l’article de Y. Hann


et D. Wood [3] pour lequel nous suivrons le plan proposé par l’article origi-
nal. Nous tenterons d’apporter quelques preuves à celles introuvables dans
l’article, sachant que celles-ci sont nombreuses et leur absence, intention-
nelle.

Nous explorerons dans ce papier, les Automates d’expression en ce


qui concerne leur déterminisme, leur minimisation et leur primalité. Nous
verrons comment définir le déterminisme de ces automates d’expression
en utilisant la notion de liberté de préfixe. Cette approche est d’une certaine
manière, similaire à la définition proposée par Giammarresi et Montalbano
pour les automates d’expression déterministes et nous y verrons comment
la nouvelle définition est plus fine.

Nous prouverons aussi que les langages reconnus par les automates
d’expression déterministes forment une sous-famille propre des langages
rationnels ainsi que certaines méthodes permettant de définir la minimisa-
tion et le déterminisme des automates d’expression. Il sera enfin discuté
des langages rationnels sans préfixes.

Partant de ces idées, nous nous évertuerons d’expliciter les passages


sombres de l’article, en apportant la traduction en pseudo-code des algo-
rithmes proposés et nous apprécierons l’intérêt de ces nouveaux automa-
tes dans la mesure de nos capacités.

3
Chapitre 1

Rappels et Définitions

Récemment, nous avons pu constater un regain d’intérêt pour les auto-


mates à nombre fini d’états permettant la présence d’étiquettes plus com-
plexes au niveau des transitions. Giammarresi et Montalbano [2] ont ef-
fectué une étude sur les automates généralisés en ce qui concerne le
déterminisme. Mais, avant de n’en dire plus à ce sujet, il est nécessaire
d’effectuer un petit rappel aussi bien historique, afin de mieux comprendre
de quoi nous allons traiter, que rafraı̂chissant du point de vue théorique.

1.1. Rappel Historique


Les automates généralisés furent introduit pour la première fois par S.
Eilenberg [1]. Dans ce papier, nous utiliserons les notations anglaises conven-
tionnelles pour indiquer de quel type d’automate nous parlons. Et nous
commencerons dès maintenant avec les automates généralisés (GA pour Ge-
neralized Automaton). Donc, S. Eilenberg chercha un modèle permettant la
représentation des langages rationnels, et ce furent les GA qui servirent de
modèle de représentation, dont nous verrons la définition.

La complexité d’un langage, pour un modèle donné est habituellement


considérée comme la taille de la représentation minimale du langage dans
ce modèle. En général, la complexité d’un automate à nombre fini d’états
est proportionnelle à son nombre d’états. Calculer la complexité du langage
représenté revient donc à calculer le nombre d’états de l’automate minimal
le reconnaissant. Ce dernier problème a été démontré comme décidable il y
a une quinzaine d’année.

Un problème relativement proche consiste effectivement à calculer la


représentation minimale d’un langage donné, dans un certain modèle. Dans
le cas des automates finis déterministes, il peut-être démontré que l’automate
minimal est unique et un algorithme le calculant à partir d’un quelconque

4
autre automate déterministe équivalent peut-être obtenu grâce au théorème
de Myhill-Nerode. Cependant, pour les automates non déterministes, nous
ne connaissons que des résultats partiels tels que la non unicité de l’automate
minimal.

Le but du jeu est donc le suivant. Il s’agit de trouver un automate mini-


mal en nombre d’états parmis tous les automates reconnaissant le langage.
Et nous sommes bel et bien face à un problème puisque la minimisation en
elle même, est problème difficile.

Les automates généralisés permettent, en général, de construire plus fa-


cilement un automate. Un exemple intéressant est le suivant. Considérant
les mots réservés du langage C++, l’utilisation des automates généralisés afin
de construire un automate fini, reconnaissant tous les mots réservés du C++
dans un programme ou un morceau de programme, rend les choses beaucoup
plus simples. Nous tenterons d’expliciter cet exemple afin de mieux cerner
le gain de faciliter.

Mais avant toutes choses, rappelons quelques définitions concernant, les


mots, les automates finis, généralisés, et leurs équivalents déterministes.

1.2. Préliminaires
Nous allons tout d’abord définir un alphabet fini de caractères que nous
appelerons Σ. Nommons par la même occasion Σ∗ l’ensemble de tous les
mots formés sur cet alphabet. Les éléments de Σ∗ sont appelés chaı̂nes,
mots ou blocs. Nous utiliserons beaucoup plus souvent le terme mot dans
ce document. Un langage sur Σ est un sous-ensemble de Σ∗ que l’on peut
aussi noter L ⊆ Σ∗ . Afin de mieux apprécier les notions avec lesquelles nous
allons travailler, nous profitons de cette section afin de faire quelques rappels
concernant les propriétés des mots.

Définition 1.2.1 (Préfixe). Soient x, y ∈ Σ∗ . On dit que x est un préfixe


de y si et seulement si il existe un mot w ∈ Σ∗ tel que xw = y.

Nous noterons dans toute la suite du document que x est préfixe (resp.
suffixe) de y de la manière suivante : x < y (resp. x = y). Si nous souhaitons
ne pas tenir compte des factorisations possibles à l’aide du mot vide pour le
cas d’une factorisation préfixe, nous devons alors donner la définition d’un
préfixe propre pour un mot.

Définition 1.2.2 (Préfixe propre). Soient x, y ∈ Σ∗ . On dit que x est un


préfixe propre de y si et seulement si il existe un mot w ∈ Σ∗ tel que
xw = y et tel que x 6= ǫ et x 6= y.

5
Comme nous aurons besoin, lorsque nous parlerons des automates d’ex-
pression déterministes, des ensembles sans préfixes, nous pouvons alors don-
ner la définition suivante :
Définition 1.2.3. Un langage (rationnel) L sur un alphabet Σ est dit sans
préfixe si, pour toutes chaı̂nes distinctes x et y appartenant à L, x n’est pas
préfixe de y et y n’est pas préfixe de x.
Nous avons une bonne quantité d’éléments à présent. Ces éléments nous
permettent maintenant de travailler sur les automates de manière plus adroi-
te. Il va nous falloir nous occuper des automates, les définir, leur trouver des
propriétés et finalement les généraliser, car là, se trouve le but de ce papier.

1.2.1 Automates
Les automates, nous allons les étudier, et pour cela, nous avons besoin
d’effectuer quelques rappels concernant leurs propriétés et définitions. Nous
pourrons, de cette manière, mieux apprécier les nouvelles notions qui seront
introduites dans ce papier. Nous verrons ainsi, durant la progression de notre
investigation, subtilités, qui différencient les automates finis, des automates
généralisés et des automates d’expression.

Mais comme chaque chose débute quelque part, commençons par l’au-
tomate que nous connaissons le mieux et pour lequel nous connaissons un
grand nombre de propriétés, à savoir, l’automate à nombre fini d’états, dont
voici la définition.
Définition 1.2.4 (Automate à nombre fini d’états). Un automate A à
nombre fini d’états, traditionnel, est défini par un quintuplet :
• δ ⊆ Q × Σ × Q, ensemble (fini) de transitions,
• Q un ensemble fini d’états,

 
A = Q, Σ, δ, I, T

• Σ est l’alphabet d’entrée,


• I ⊆ Q l’ensemble des états initiaux,
• T ⊆ Q l’ensemble des états terminaux.

Maintenant, que nous savons ce qu’est un automate, voyons quelques pro-


priétés de ceux-ci et plus particulièrement, ceux des automates dits utiles.
Les automates dits utiles sont en fait des automates qui ne possèdent pas
d’états inutiles. Donnons alors une définition formelle d’un automate utiles
(réduit, propre). Pour cela, nous allons maintenant introduire la notion d’ac-
cessibilité pour un automate donné.

6
Définition 1.2.5 (Automate accessible). Soit A = (Q, Σ, δ, I, T ) un auto-
mate. Alors, on dit que A est accessible si, pour tout état q ∈ Q il existe
un chemin c allant de l’état i à l’état q avec i ∈ I.

L’accessibilité étant, passons alors à la co-accessibilité. D’après Eilen-


berg [1], la co-accessibilité peut-être définie comme l’accessibilité de l’au-
tomate renversé. Mais nous n’entrerons pas si loin dans les détails car la
co-accessibilité peut aussi être définie de la manière suivante, qui découle
bien sûr de celle du renversé.

Définition 1.2.6 (Automate co-accessible). Soit A = (Q, Σ, δ, I, T ) un au-


tomate. Alors, on dit que A est co-accessible si, pour tout état q ∈ Q il
existe un chemin c partant de l’état q vers un état t avec t ∈ T .

L’automate A est dit utile si celui-ci est à la fois accessible et coaccessible.

Proposition 1.2.1. Pour tout automate A, les propriétés suivantes sont


équivalentes :
(i) A est utile.
(ii) Tout état de A appartient à un chemin réussi.
(iii) Tout chemin dans A appartient à un segment de chemin accepté.

Démonstration. Il suffit de montrer les équivalences suivantes, dans l’ordre


indiqué, (i) ⇒ (iii) ⇒ (ii) ⇒ (i).

Donc, en fait, si nous venions à considérer un automate A, alors, nous


pouvons obtenir un automate utile At en éliminant les états pour lesquels
la condition (ii) de la proposition 1.2.1 n’est pas réalisée. Il est tout de
même possible de s’interroger quand à l’intérêt d’être en présence d’un au-
tomate utile. Cette notion sera pour nous, peut-être aussi importante que
le déterminisme d’un automate. Nous verrons alors que la combinaison de
ces deux notions, de manière simultanée offre un automate puissant, dans
la mesure ou celui-ci, lorsque nous le parcourerons nous donnera d’énormes
informations. Il est toujours plaisant de savoir que nous sommes sur la bonne
route et que celle-ci est unique.

1.2.2 L’idée d’Eilenberg


L’idée d’Eilenberg est la suivante. Plutôt que de ne considérer que des
lettres comme étiquettes de transitions pour les automates à nombre finis
d’états traditionnels, celui-ci va étendre les transitions afin que les étiquettes
de celles-ci ne soient plus exclusivement composées de lettres mais aussi
de chaı̂nes de caractères que l’on appelle mots, ou encore blocs. Ces
automates, ce sont les automates généralisés (GA) et ceux-ci peuvent
être définis de manière plus formelle, de la manière suivante.

7
Définition 1.2.7 (Automate Généralisé). Un automate généralisé A est
défini par un quintuplet :
• δ ⊆ Q × Σ∗ × Q, ensemble (fini) de transitions,
• Q un ensemble fini d’états,

 
A = Q, Σ, δ, i, T

• Σ est l’alphabet d’entrée,


• i ∈ Q est l’état initial de l’automate,
• T ⊆ Q l’ensemble des états terminaux.

La première remarque que nous pouvons apporté est que, formellement,


la définition des GA est très proche de celle des NFA. En effet, les transitions
ne sont plus exclusivement sur l’ensemble δ ⊆ Q × Σ × Q mais sur δ ⊆
Q × Σ∗ × Q. Autrement dit, nous acceptons les mots ainsi que les lettres.
C’est bien là l’idée que nous recherchions. De plus l’autre différence présente
est portée sur l’état initial des GA, celui-ci est unique, alors que plusieurs
sont permis pour les NFAs.

Tout comme cela est le cas pour les automates conventionnels, nous
allons maintenant pouvoir introduire la notion de déterminisme pour ces
nouveaux types d’automate.

1.2.3 Automates Généralisés Déterministes


Giammarresi et Montalbano [2] donnent la définition suivante pour un
automate généralisé déterministe. Un automate généralisé A est déterministe
s’il ne possède qu’un seul et unique état initial et si l’ensemble des mots
formés par les transitions sortantes pour tout état q de l’automate est sans
préfixe. Pour cela, une notion de liberté de préfixe locale est utilisée.

Bien que cette définition paraisse agréablement proche de celle proposée


pour le déterminisme des automates traditionnels, celle-ci n’assure pas le
déterminisme de tous les automates. Afin de recouvrir un réel déterminisme
pour ces automates, ce sont Han et Wood [3] qui apportent un complément
à cette définition.

En effet, un automate généralisé A est déterministe si pour tout état q


de A, les deux conditions sont réalisées :
1. L’ensemble de tous les blocs parmis les transitions sortantes de q sont
sans préfixe.
2. Pour tout couple de transitions sortantes (q, x, p) et (q, y, r) de q, si
x = y alors, nécessairement, p = r.

8
Il faut donc noter maintenant que comme Giammarresi et Montalbano
ne nécessitent pas la condition 2, le résultat rapide en est que certains DGAs
(Deterministic Generalized Automaton) sont donc non déterministes. Mais
la condition 2 nous apporte la restriction suivante en fait. On évite la re-
dondance des transitions et on assure l’unicité des transitions pour un bloc
donné.

Définition 1.2.8. Un langage L (rationnel) sur un alphabet Σ est sans


préfixe si, pour tout couple distinct de mots x et y de L, x n’est pas préfixe
de y et y n’est pas préfixe de x.

Définition 1.2.9. Une expression rationnelle α est sans préfixe si, L(α) est
sans préfixe.

Lemme 1.2.1. Un langage rationnel L est sans préfixe si et seulement si


il existe un automate déterministe (DFA) utile A pour le langage L qui ne
possède aucune transition sortante pour chacun des états terminaux.

Comme la preuve de ce lemme n’est pas présente dans l’article de Han


et Wood [3], ainsi que toutes les autres preuves d’ailleurs, nous allons tenter
d’en apporter quelques unes dans la mesure de nos capacités, bien évidem-
ment.

Démonstration. Avant toute chose, nous pouvons rappeler le théorème sui-


vant :
Théorème 1.2.1. Tout langage reconnu par un automate non déterministe
l’est également par un automate déterministe.
Supposons tout d’abord qu’il existe un automate déterministe utile A
possédant une transition sortante pour au moins un état terminal t ∈ T
de A. Soit donc t, c, q cette transition avec c ∈ Σ et q ∈ Q. Soit x le mot
reconnu par l’automate et accepté par t. L’automate étant utile, le mot xcw
avec w ∈ Σ∗ appartient aussi à L(A). Et dans ce cas, x < xcw.

Traitons l’autre implication à présent et supposons que le langage ra-


tionnel est préfixe. Autrement dit, il existe au moins un couple de mots x et
y de Σ∗ tel que x < y (sans perte de généralités). Sachant que l’automate
reconnaissant le langage est déterministe et utile, supposons que celui-ci ne
possède aucune transition sortante d’aucun état terminal. C’est absurde car
x étant un chemin réussi, celui-ci s’achève en un certain état t ∈ T mais
comme x < y, alors y est aussi un chemin réussi et doit par conséquent
passer lui aussi par cet état t. Si y = ǫ la question ne se pose même pas mais
si y 6= ǫ alors il existe nécessairement une transition sortante de t.

9
Chapitre 2

Applications

Maintenant que nous avons pu effectuer un rappel sur quelques notions


utiles, entrons dès maintenant dans le vif du sujet, à savoir la généralisation
des automates généralisés. Nous verrons durant l’étude de ce modèle et
de ses opérations que malgré les définitions, l’étude même n’en est qu’à
ces premiers balbutiements.

Il nous faudra étudier le déterminisme de ces automates, ainsi que les


méthodes permettant de réduire leur taille afin de trouver, espérons-le un
automate minimal équivalent.

2.1. Automates d’expression


Qu’il s’agisse des expressions rationnelles ou des automates à nombre
fini d’états (déterministes), tous deux possèdent la même puissance d’ex-
pression [4]. Qu’entendons-nous par puissance d’expression ? A vrai dire, la
même puissance d’expression signifie simplement que pour une expression
rationnelle donnée, et un automate fini déterministe donné reconnaissant le
même langage que celui de l’expression rationnelle, aucun des deux ne re-
connais plus ou moins de mots du langage. Tous deux reconnaissent le même
langage.

Nous avons vu que partant d’un automate fini, celui-ci ne peut pas por-
ter plus d’une lettre par transition. Eilenberg [1] a ensuite proposé une
généralisation pour ces automates en leur permettant d’accepter aussi des
mots ou la chaı̂ne vide en ce qui concerne les transitions. Maintenant que
ces deux entités ont été étudiées, pourquoi ne pas étendre à nouveau les au-
tomates afin que leur transitions acceptent une notion un peu plus générale
que les mots, à savoir, des expressions rationnelles. Cela n’est pas du tout
contradictoire cela dit. En effet, n’oublions pas qu’une lettre ou un mot est

10
une expression rationnelle, fort simple, mais une expression rationnelle, tout
de même.

Les automates d’expression, malgré leur généralisation qui, en général


laisse présager à une multitude de paramètre formels, se définissent très
bien et leur définition est fortement proche de celle des automates finis et
généralisés, tout en restant aussi simple.
Définition 2.1.1 (Automate d’Expression). Un automate d’expression A
est défini par un quintuplet :
• δ ⊆ Q × RΣ × Q, ensemble (fini) de transitions d’expressions,
• Q un ensemble fini d’états,

 
A = Q, Σ, δ, i, t

• Σ est l’alphabet d’entrée,


• i ∈ Q est l’état initial de l’automate,
• t ∈ Q est l’état terminal de l’automate.

RΣ est l’ensemble de toutes les expressions rationnelles sur Σ. (Il est à


noter que nous n’avons besoin que d’un seul état final). Il est aussi nécessaire
que pour tout couple d’état p et q, il existe une unique transition d’expression
(p, α, q) appartenant à δ avec α une expression rationnelle sur Σ.
Nous pouvons utiliser la notation fonctionnelle pour les transitions si
l’on souhaite utiliser le formalisme sous-jacent des automates d’expression
à d’autres fins. Plutôt que de représenter les transitions sous la forme d’un
triplet (p, α, q) ∈ Q × RΣ × Q, nous pouvons représenter une transition de
la manière suivante :

δ : Q × Q → RΣ
(p, q) 7→ α

Cette nouvelle notation n’est pas sans nous rappeler les notations uti-
lisées en compilation. Et si l’on se rappelle un peu de ce qui a été vu dans
des cas pratiques d’utilisation de ces automates, nous avons vu que ceux-ci
pouvaient apporter un gain considérable pour l’utilisation d’un compilateur
C++ par exemple. On peut aussi remarquer que δ contient exactement |Q|2
transitions, une pour chaque couple d’état, et même si (p, , q) fait partie de
δ, pour un certain p et q de Q, l’automate A ne peut pas aller de p à q
directement.

Comme nous avons vu qu’il était possible de généraliser les automates


traditionnels ainsi qu’un nombre de propriétés les concernant, voyons main-
tenant comment il est possible de généraliser la notion de chemin réussi

11
vers des suites de transitions d’expression acceptantes et vers des suites de
transitions de langages acceptants. Autrement dit, plutôt que de reconnaı̂tre
lettre par lettre lors des passages par transitions, nous allons voir comment il
devient possible d’accepter des suites d’expression ou des suites de langages.
Définition 2.1.2. Une séquence acceptante de transition d’expres-
sion est une suite de transitions de la forme :

(p0 = i, α1 , p1 ) · · · (pm−1 , αm , pm = t)

En considérant un chemin de longueur m ≥ 1 où i est l’état initial et t l’état


terminal.
La seconde notion, qui suit celle de séquence acceptante de transition
d’expression, est celle qui s’étend aux langages. Comme nous ne faisons que
de la généralisation, nous étendons ces transitions d’expressions aux suites
de transitions de langages, dont voici la définition.
Définition 2.1.3. Une suite acceptante de transitions de langage est
une suite de transitions de la forme :

(p0 = i, L(α1 ), p1 ) · · · (pm−1 , L(αm ), pm = t)

En considérant un chemin de longueur m ≥ 1 où i est l’état initial et t l’état


terminal.
Nous allons voir maintenant qu’il existe une certaine bijection entre NFA
utiles et EA utiles. En effet, nous tenterons d’apporter la preuve que tout
automate fini peut-être convertit en un automate d’expression équivalent et
vice versa. Pour cela, nous utiliserons le lemme 2.1.1.
Lemme 2.1.1. Tout NFA utile peut-être convertit en un automate d’expres-
sion (EA) utile équivalent. Il en découle que tout langage rationnel est donc
le langage d’un automate d’expression.
Ce lemme est tout de même important, dans la mesure où celui-ci nous
permet d’établir qu’il est possible de convertir tout automate à nombre fini
d’états A en un automate d’expression (EA) équivalent. Comme nous venons
de le voir en parlant de la bijection inhérentes aux deux types d’automates,
nous aurons que tous deux possèdent la même puissance d’expression.

La preuve proposée est un preuve constructive. Il suffit, pour cela, de


construire une expression rationnelle α de manière à ce que L(α) = L(A).
Nous souhaitons donc que le langage reconnu par l’expression rationnelle α
soit le même que celui reconnu par l’automate fini A.

Considérons l’automate d’expression utile A = (Q, Σ, δ, i, t). Celui-ci


est non-retournant si δ(q, i) = ∅, pour tous les états q ∈ Q. Autrement

12
dit, il n’existe pas de transition ni entrantes ni bouclantes pour l’état initial
ou plus simplement, il n’existe aucun chemin passant par l’état initial. Il
est alors facile de montrer que tout automate d’expression utile A peut-être
convertit en un automate d’expression utile non-retournant, reconnaissant
le même langage L(A).

2.1.1 Élimination des états


Ayant vu qu’il était désormais possible de “jongler” entre les différents
automates équivalents, il est alors légitime de présenter comment y par-
venir. Nous allons présenter dans cette partie une méthode permettant de
transformer tout automate en un automate d’expression équivalent.

ei q ej
(ei · ej ) + ek
p r p r
ek

Fig. 2.1 – Un exemple d’élimination d’état : état q.

On définit l’élimination d’un état q ∈ Q\{s, f } dans l’automate A


comme le “court-circuit” des flèches entrantes en q, sortantes de q et bouclant
sur q lui-même à l’aide de suites de transitions d’expression. Les opérations à
réaliser peuvent être facilement transformées en algorithme. Voici les grandes
étapes de l’opération atomique concernant l’élimination d’un état.

Pour chaque transition entrante (pi , αi , q) avec i ∈ {1, · · · , m}, pour


chaque transition sortante (q, γj , rj ) avec j ∈ {1, · · · , n} et pour chaque
transition bouclant sur l’état q, (q, β, q) de δ, on construit alors une nouvelle
transition :
δ(pi , rj ) = αi · β ∗ · γj
Puisque il existe toujours une transition (p, ν, r) dans δ, pour un expres-
sion ν, nous fusionnons les deux transitions afin de donner la transition de
contournement (p, (αi · β ∗ · γj ) + ν, r). Il nous suffit alors de supprimer l’état
q et toutes les transitions entrantes et sortantes de q dans δ. On appelle alors
l’automate d’expression Aq = (Q\{q}, Σ, δq , i, t) résultant de l’élimination
de l’état q.

Lemme 2.1.2. Soit A = (Q, Σ, δ, i, t) un automate réduit et sans cycle


avec au moins trois états et soit q un de ses états dans q ∈ Q\{i, t}. On
définit alors Aq = (Q\{q}, Σ, δq , i, t) un automate réduit et sans cycle tel
que, pour tout couple p et r d’états dans Q\{q},

δq (p, r) = δ (p, r) + (δ (p, q) · δ (q, q)∗ · δ (q, r))

13
De cette manière, nous avons maintenant que L(Aq ) = L(A) avec Aq
utile et non retournant.

a
a a a
aa∗ b
a b a
b b
b b

ab
a(ab)∗ (aa∗ b + ab)
a
aa∗ b

ab

Fig. 2.2 – Un EA pour le langage rationnel L(a(ab)∗ (aa∗ b + ab)) et l’élimi-


nation de ses états.

L’élimination d’un état q préserve tous les chemins étiquetés à partir des
prédécesseurs de q à ses successeurs. Par conséquent, l’élimination d’états
ne change pas le langage accepté par l’automate d’expression A.

Pour compléter la construction d’une expression rationnelle équivalente,


nous répétons l’opération atomique qu’est l’élimination d’un état jusqu’à
ce qu’on ai Q = {i, t}. De cette manière, nous nous retrouvons avec un
automate d’expression utile et non-retournant Ā, qui possède exactement
deux états i et t. On peut aussi remarquer que δ(i, i) = ∅ et δ(t, i) = ∅
puisque Ā est utile et non-retournant. Donc, seules les transitions δ(i, t) et
δ(t, t) peuvent-être non triviales.
Théorème 2.1.1. Un langage L est le langage d’un automate d’expression
si et seulement si L est un langage rationnel.
L’algorithme d’élimination des états venant d’être décrit, nous pouvons
admettre que l’implémentation, même si l’algorithme est assez naı̈f, peut po-
ser certains problèmes. Afin d’effectuer toutes les étapes de l’élimination, de
manière cohérente, nous allons présenter l’algorithme sous forme de pseudo-
code. De cette manière, l’implémentation en sera plus aisée. Il s’agit de
l’algorithme 2.

Nous venons de décrire l’algorithme effectuant la micro-opération de


manière détaillée puis sous forme de pseudo-code, nous pouvons alors pré-

14
Algorithme 1 : Éliminer état
Entrées : A un EA utile non retournant et q ∈ Q\{i, t} l’état à
éliminer.
début
{ Sauvegarde des transitions entrantes, sortantes et
bouclantes pour l’état q passé en paramètre };
δe ← {(p, α, q) ∈ δ | p ∈ Q\{t, q}, α ∈ RΣ };
δs ← {(q, γ, r) ∈ δ | r ∈ Q\{i, q}, γ ∈ RΣ };
δb ← {(q, β, q) ∈ δ | q ∈ Q\{i}, β ∈ RΣ };
pour tous les (p, α, q) ∈ δ avec p 6= q faire
{ Pour chacune des transitions entrantes };
pour tous les (q, γ, r) ∈ δ avec r 6= q faire
{ Pour chacune des transitions sortantes };
si ∃ (q, β, q) ∈ δ alors
{ S’il existe une transition bouclant };
Étiquette ← α · β ∗ · γ;
sinon
{ S’il n’existe pas de transition bouclant };
Étiquette ← α · γ;
finsi
si ∃ (p, ν, r) ∈ δ alors
{ Doit-on combiner deux transitions };
Étiquette ← ((Étiquette) + ν);
finsi
Ajouter Transition (A, (p, Étiquette, r));
finprts
finprts
{ Suppression des transitions devenues inutiles };
δ ← δ\(δe ∪ δs ∪ δb );
{ Suppression de l’état q};
Supprimer Etat (A, q);
retourner A;
fin

senter l’algorithme général qui est du coup, on ne peut plus simple. Il s’agit
de l’algorithme 2.

Un autre point important qu’il est nécessaire de soulever ici est l’ordre
dans lequel à lieu l’élimination des états. Ceci peut paraı̂tre annodin au
premier abord mais en y réfléchissant bien, nous allons aboutir à un résultat
intéressant. Nous avons vu que la complexité d’un langage était fortement lié
à la représentation de l’automate minimal le représentant. Nous venons aussi
de montrer que tout langage rationnel peut-être représenté par un automate
d’expression le reconnaissant et que celui-ci peut toujours se réduire en un

15
Algorithme 2 : Élimination totale
Entrées : A un automate d’expression utile non retournant.
Sorties : A un automate d’expression utile non retournant minimal.
début
Q′ ← Q\{i, t};
tant que Q′ 6= ∅ faire
q ← Obtenir Etat Suivant(Q′ );
Eliminer Etat(A, q);
Q′ ← Q′ \{q };
fintq
retourner A;
fin

automate comportant deux états (un final et un initial) et une, voire deux,
transitions. N’est-il pas formidable de se retrouver en présence d’un si petit
automate ?

A vrai dire, la complexité du langage devrait être modélisée différem-


ment. Il faudrait aussi tenir compte de la taille des étiquettes afin de définir
un bon compromis entre nombre d’états et tailles (en nombre de caractères)
des étiquettes de transitions. En introduisant cette nouvelle notion, l’ordre
d’élimination des états ainsi que la complexité du langage représenté prend
une importance plus grande. C’est un autre problème bien connu, que celui
de réduire la taille d’une expression rationnelle.

Si l’on reprend l’exemple de la figure 2.1, et que nous effectuons l’élimi-


nation des états dans l’ordre des entiers représentant les états, nous pouvons
aboutir à l’expression rationnelle suivante :

e1 = (aa (ba)∗ (baa∗ b + b)) + (aaa∗ b)

Alors que celle proposée est :

e2 = a (ab)∗ (aa∗ b + ab)

Et qu’il en existe une autre équivalente mais un peu plus factorisée :

e3 = a (ab)∗ aa∗ b

Nous devons alors remarquer la chose suivante :

|e3 | < |e2 | < |e1 |

On peut alors remarquer que suivant l’ordre d’élimination des états,


nous pourrions augmenter ou réduire la taille de l’étiquette de la transition

16
finale représentant l’expression et que nous pourrions, par la même occasion,
modifier la complexité du langage dans ce nouveau modèle qui tient compte
de la taille des étiquettes de transitions.

Nous verrons, lorsque nous nous occuperons de la minimisation des au-


tomates d’expression que cette idée devrait être approfondie, si ce n’est déjà
fait.

Rappelons aussi qu’avant de pouvoir effectuer l’élimination des états de


l’automate d’expression, nous nous devons d’être en présence d’un automate
particulier. Celui-ci doit-être :

– Déterministe
– Minimal
– Accessible et Co-accessible (Utile)

2.2. Automates d’expression Déterministes


Nous en connaissons maintenant assez sur les automates d’expression,
pour pouvoir nous permettre de nous intéresser aux versions déterministes de
ces automates. Ce sont donc les automates d’expression déterministes
(DEAs) que nous allons étudier ainsi que leurs propriétés.

On dit qu’un automate fini est déterministe si pour chaque état, l’état
suivant est défini de manière unique par l’état courant et par le caractère
d’entrée courant ou plus formellement :

Définition 2.2.1 (Automate fini déterministe). Un automate à nombre fini


d’états A = (Q, Σ, δ, I, T ) est déterministe si et seulement si les deux condi-
tions suivantes sont remplies :
• |I| = 1 (unique état initial).
• ∀p ∈ Q, ∀a ∈ Σ, |δ(p, q) = a| ≤ 1 (pour chaque état, il existe au plus,
une transition par lettre).

Lorsque l’on travaille avec les automates d’expression, la situation n’est


pas si simple. En effet, lorsque l’on traite un mot en entrée, avec un auto-
mate d’expression donné ainsi qu’un état courant donné, nous devons non
seulement, déterminer l’état suivant, mais aussi un préfixe adéquate de la
chaı̂ne résultante après transition car chacune des transitions est étiquetée
par un expression rationnelle (ou un langage rationnel) au lieu de l’être par
une simple lettre.

Il va nous falloir alors un autre moyen de décrire le déterminisme pour


les automates d’expression.

17
Un automate d’expression est déterministe si et seulement si, pour cha-
cun des états p de l’automate, tout couple de transitions sortantes possèdent
des langages rationnels disjoints et chacun des langages rationnels ainsi
considérés, sont des langages sans préfixes.

a∗ a∗ b

(a) (b)

Fig. 2.3 – a. Exemple de non liberté de préfixe. b. Exemple de liberté de


préfixe.

Afin de mieux cerner cette nouvelle notion, nous pouvons nous servir
de l’illustration de la figure 2.3. La transition sortante de la figure 2.3(a)
n’est pas sans préfixe car L(a∗ ) n’est pas sans préfixe. Nous avons ai qui
est préfixe de aj pour tout 1 ≤ i ≤ j. Du coup, on peut directement voir
que cet automate d’expression n’est pas déterministe. Par contre, la figure
2.3(b) présente un automate d’expression déterministe car le langage L(a∗ b)
est bel et bien sans préfixe.

2.2.1 Définition
Nous pouvons désormais, maintenant que nous avons aperçu ce qu’était
un automate d’expression déterministe, donner une définition formelle de ce
fameux déterminisme.
Définition 2.2.2. Un automate d’expression A = (Q, Σ, δ, i, t), où |Q| =
m, est déterministe si et seulement si les trois conditions suivantes sont
respectées :
1. Langages non préfixes : Pour tout état q ∈ Q et pour chaque tran-
sition sortant de l’état q

(q, α1 , q1 ), (q, α2 , q2 ), . . . , (q, αm , qm )

L(α1 ) ∪ L(α2 ) ∪ . . . ∪ L(αm ) est un langage rationnel sans préfixe.


2. Disjonction des langages : Pour tout état q ∈ Q et pour chaque
couple de transitions sortantes de l’état q par αi et alphaj , où i 6= j et
1 ≤ i, j ≤ m,
L(αi ) ∩ L(αj ) = ∅
3. États finaux non-sortants :

∀ q ∈ Q, δ(t, q) = ∅

18
Que ce passerait-il si jamais l’une de ces trois conditions n’était pas
remplie ? On se retrouverait en présence d’un langage préfixe par exemple
si les langages n’étaient pas disjoints par exemple.

2.2.2 Propriétés
Effectuer l’investigation de ces automates particuliers nous amène bien
naturellement à étudier certaines de leurs propriétés et des conséquences que
celles-ci apportent. C’est ce que nous allons voir dans cette partie. Et nous
commencerons par un lemme.

Lemme 2.2.1. Si un automate d’expression déterministe utile A =


(Q, Σ, δ, i, t) possède au moins trois états, alors, pour tout état q ∈ Q\{i, t},
Aq est déterministe. Néanmoins, l’inverse n’est pas vrai.

Démonstration. Ce résultat est dans la prolongation du lemme 2.1.2 puisque


la concaténation de langages sans préfixes est un langage sans préfixe. Par
conséquent, l’élimination des états pour un automate d’expression détermi-
niste, préserve le déterminisme.

Lemme 2.2.2. Il existe un automate d’expression A utile qui est détermi-


niste si et seulement si L(A) est sans préfixe.

Théorème 2.2.1. La famille des langages rationnels sans préfixes est fer-
mée par la concaténation et l’intersection mais pas par l’union, complémen-
tarité ou l’étoile.

Ces résultats de fermeture et de non fermeture peuvent être montrés


simplement. Tentons alors d’en démontrer quelques uns. Commençons par
démontrer que cette famille n’est pas fermée par l’union.

Union. Soit les deux langages rationnels sans préfixes suivants :

L1 = L(a∗ b) et L2 = L(a∗ bc)

Le langage résultant de l’union de L1 et L2 est le langage :

L1 ∪ L2 = L(a∗ b) ∪ L(a∗ bc)


= L(a∗ b + a∗ bc)
= L(a∗ (b + bc))
= L3

Soit maintenant les deux mots suivants :

x = b ∈ L3 et y = bc ∈ L3

Les deux mots x et y appartiennent bien à L3 mais x < y.

19
Un résultat relativement simple, comme cela venait d’être dit, il en est
de même pour le cas de la fermeture par complémentarité.

Complémentarité. Soit le langage rationnel sans préfixes suivant et son com-


plémentaire sur l’alphabet Σ = {a, b} :

L(a∗ b) et L(a∗ b) = L(ǫ + aa∗ )

Soit maintenant les deux mots suivants :

x = a ∈ L(a∗ b) et y = aa ∈ L(a∗ b)

Les deux mots x et y appartiennent bien à L(a∗ b) mais x < y.

Comme nous avons traiter deux cas de non fermeture, nous allons appor-
ter la preuve que la fermeture par concaténation de deux langages rationnels
sans préfixe reste bien dans la famille des langages rationnels sans préfixe.

Concaténation. Cette fois, nous allons démontrer un cas de fermeture, celui


de la concaténation. Commençons par considérer deux langages rationnels
sans préfixes L1 et L2 . Le langage résultant de la concaténation de ces deux
langages est le langage L1 .L2 = L. Donc, tout mot de L s’écrit sous la forme
d’un mot w = x.y avec x ∈ L1 , y ∈ L2 et bien sûr w ∈ L.

Traitons maintenant les différents cas possibles qui s’offrent à nous. Soit
X = x1 .x2 ∈ L et Y = y1 .y2 ∈ L, nous avons les différents cas suivants
où pour chacun, X 6= Y , X 6= ǫ et Y 6= ǫ mais nous n’en traiterons que la
moitié sans perte de généralités :
cas 1 : |X| = |Y | et |x1 | > |y1 | Or, par définition, on a y1 6< x1 donc X 6< Y et

x1 x2

y1 y2

comme |x1 | > |y1 | on a Y 6< X.


cas 2 : |X| < |Y | et |x1 | > |y1 | Or, par définition, on a y1 6< x1 donc x1 tronqué

x1 x2

y1 y2

aux |y1 | première lettres est différent de y1 donc, X 6< Y et comme |X| < |Y | on a
Y 6< X.
Les autres cas sont symétriques et tous donnent le même résultat à peu
de choses près, par symétrie ou évidence.

20
2.3. Minimisation des Automates d’expression
Comme certaines propriétés concernant les automates d’expression ont
pu être vues, nous allons à présent, nous occuper de la minimisation des
automates d’expression. Il est naturel de tenter de réduire la taille d’un au-
tomate autant qu’il nous est possible afin d’économiser de l’espace mémoire
ainsi que de la lisibilité.

Il existe des algorithmes bien connus qui réduisent efficacement la taille


des DFAs dans la mesure où ceux-ci produisent des DFAs minimaux, uniques
(au renommage près des états). Récemment, Giammarresi et Montalbano [2]
ont suggéré un algorithme de minimisation pour les automates généralisés
déterministes (DGAs). Hélas, leur technique n’assure pas l’unicité de
l’automate généralisé déterministe minimal. Pour un DGA donné, ils in-
troduisent deux opérations dans la recherche de l’automate minimal. Nous
pourrions voir cette méthode comme la suite d’opérations, regroupement
puis suppression. Voyons maintenant la méthode de Giammarresi et Mon-
talbano reprise par Han et Wood [3].

2.3.1 Définition
Nous définissons la minimisation d’un DEA (Automate d’Expression
Déterministe) comme la transformation d’un DEA donné en un DEA équi-
valent mais possédant un nombre inférieur d’états. On peut remarquer que
pour tout DEA donné, nous sommes en mesure de construire un DEA mi-
nimal consistant en un état initial et un état final reliés entre eux par une
unique transition en utilisant l’élimination des états pour les DEA vu en
2.1.1.

Étant donné un DEA utile A = (Q, Σ, δ, i, t), on définit, pour un état




q ∈ Q, le langage droit Lq comme l’ensemble des mots définis par l’auto-


mate utile Aq = (Q′ , Σ′ , δ ′ , q, t), où Q′ ⊆ Q, Σ′ ⊆ Σ et δ ′ ⊆ δ. On définit


de manière similaire, le langage gauche Lq comme l’ensemble des mots
←−
définis par l’automate utile Aq = (Q′ , Σ′ , δ ′ , q, t), où Q′ ⊆ Q, Σ′ ⊆ Σ et
δ ′ ⊆ δ.

Nous ajoutons alors la définition suivante permettant de différentier deux


états. On dit que deux états p et q sont indifférentiables si :

→ − →
Lp = Lq

Nous noterons par la suite, l’indifférentiabilité de deux états, p ∼ q, par


soucis de concision. Expliqué de manière moins formelle, on dit que deux
états sont indifférentiables si, il nous est impossible, pour un mot donné, de
savoir si, le chemin emprunté à un moment de la lecture passa par l’état p ou

21
l’état q. On peut alors se demander la chose suivante. Si p ∼ q, cela signifie-
t-il qu’il existe un couple d’états indifférentiables dans les états suivants du
DFA ? Cette propriété est loin d’être vraie, la preuve en est visible en figure
2.4.

a
p bcad r
a b
c
s f
b db

q a b u ca v

Fig. 2.4 – Un exemple d’états indifférentiables

Ce problème concernant l’unicité de la décomposition des chemins est


sûrement très proche de celle des mots et de la la théorie des codes [5].

Nous définissons alors un DEA minimal, en se basanr sur la notion de


langage droit. Nous pouvons alors donner la définition suivante.

Définition 2.3.1. Un DEA utile A est minimal si tous les états de A sont
différentiables les uns par rapport aux autres.

Donc, l’algorithme ne s’occupe principalement que de fusionner les états


indifférentiables afin de minimiser un DEA. Nous allons maintenant détailler
comment, partant de deux états p et q indifférentiable, nous aboutissons à,
disons, un état p.

La méthode en elle-même est assez simple. Si p et q sont tels que p ∼ q,


alors, nous commençons par supprimer l’état q ainsi que ses transitions sor-
tantes, puis, nous redirigeons ces transitions entrantes vers l’état p. Une fois
cette micro-opération définie, il ne nous reste plus qu’à répéter l’opération
à chaque fois et quand on trouve deux états indifférentiables. La finitude de
la méthode est belle et bien vérifiée puisque il existe un nombre fini d’état.
On peut ainsi garantir l’arrêt et la minimalité.

Nous devons maintenant prouver que la micro-opération effectuée sur



→ −→
p ∼ q dans A ne modifie pas L(A). Puisque Lp = Lq , nous pouvons en-
lever l’état q et ses transitions sortantes, puis rediriger ses transitions en-
trantes afin qu’elles deviennent de nouvelles transitions entrantes pour l’état
←− ←−
p. Maintenant, soit Lp et Lq respectivement, les langages gauche de p et q.
On voit très bien que la redirection des transitions entrantes de q en tant que
nouvelles transitions entrantes de p implique que le nouveau langage gauche

22
←− ← −
de p est maintenant Lp ∪ Lq alors que juste avant le langage gauche de p est
←− ←− −→ − →
Lp et celui de q, Lq . Néanmoins, puisque Lp = Lq , une fois qu’on a enlevé
l’état q le langage droit de p reste, par conséquent, inchangé. Finalement,
nous concaténons les langages et nous obtenons le langage initial, avant la
suppression de l’état q.


− ← − − → ←−− → ←
−− →
     
Lp ∪ Lq .Lq = Lp .Lp ∪ Lq .Lp
←−− → ←
−− →
   
= Lp .Lp ∪ Lq .Lq

e1 + e2
e1
e2 p
p e3 + e4
e3
e4
e5 q e5 + e6
q
e6

Fig. 2.5 – Exemple de fusion d’états indiférrentiables p et q. Les pointillés


représentent les transitions supprimées.

Tout comme pour les DGAs, il n’est pas possible d’assurer l’unicité d’un
DEA minimal pour un DEA donné. En revanche, nous pouvons garantir que
nous obtenons bel et bien “un” DEA minimal. Par exemple, l’automate en
figure 2.4 peut-être minimisé, au moins, de deux manières distinctes.

2.3.2 Algorithme
Le plus difficile dans cette partie, ce n’est pas l’application de l’algo-
rithme en général mais surement l’opération consistant à comparer deux
langages droits. Nous pourrions effectuer une copie de l’automate et elimi-
ner tous les états de l’automate distincts du couple considéré. Il ne resterait
alors qu’à comparer les expressions. Mais, est-ce vraiment judicieux ?

De toute manière, voici donc la méthode de minimisation des DEAs


présentée en 2.3.1 réecrite sous forme de pseudo-code afin de rendre plus
agréable la suite nécessaire d’instructions effectuant l’opération.

23
inaccessible
a
p r p bcad r
a+b b
c c
s f s f
db
a+b db
q u ca v q u v
a∗ b
inaccessible

p→q q→p
a
bcad
a+b b
a+b a∗ b ca db
db
c
c

(a) (b)

Fig. 2.6 – Deux automates minimaux distincts pour l’automate en Fig. 2.4

2.4. Langages Rationnels sans préfixes, premiers


Considérons que nous avons deux expressions rationnelles, α1 = b∗ a∗ et
α2 = a∗ b∗ . Si l’on effectue la concaténation de ces deux expressions, nous
obtenons α1 · α2 = b∗ a∗ b∗ où nous ne voyons apparaı̂tre que trois étoiles. Ces
étoiles sont b∗ , a∗ et b∗ , alors que la concaténation sans simplification nous
en aurait laisser quatre visibles. La liberté de préfixe, ou, tout du moins, le
fait que le langage soit sans préfixe, assure qu’il ne peut y avoir de telles
pertes lors de la concaténation. De manière similaire, tout langage rationnel
infini peut-être découpé autant de fois qu’on le souhaite tant que l’on y met
pas de borne. Par exemple, L(a∗ ) = L(a∗ ) · L(a∗ ) · L(a∗ ) · · · L(a∗ ).

Ces deux exemples amènent à se poser la question, de savoir, si une


décomposition non bornée d’un langage rationnel sans préfixe, infini, est
possible ou non. Il existe quelques résultats connus sur la décomposition
première des langages finis ainsi que sur la décomposition des langages ra-
tionnels [6].

Définition 2.4.1. Un langage rationnel sans préfixe L est premier si L 6=


L1 · L2 pour tout langages rationnels sans préfixes, non triviaux L1 et L2 .

On dit qu’un état b dans un DFA A est un état pont si les conditions
suivantes sont maintenues :
1. b est ni un état initial, ni un état final.
2. Pour tout mot w ∈ A, son chemin, dans A, doit passer au moins une
fois par l’état b.

24
Algorithme 3 : Minimisation d’un EA
Entrées : A un EA utile non retournant et q ∈ Q\{i, t} l’état à
éliminer.
début
pour tous les p ∈ Q faire
{ Pour chacun des états p};
pour tous les q ∈ Q faire
{ Pour chacun des états q};
si p 6= q alors
{ Un couple d’états distincts };
si p ∼ q alors
{ Ce couple est indifférentiable };
Supprimer Etat (A, q);
{ Suppression des transitions sortantes };
pour tous les (q, α, r) ∈ δ faire
Supprimer Transition (δ, (q, α, r));
finprts
{ Redirection des transitions entrantes };
pour tous les (r, α, q) ∈ δ faire
Supprimer Transition (δ, (r, α, q));
Ajouter Transition (δ, (r, α, p));
finprts
finsi
finsi
finprts
finprts
retourner A;
fin

Nous partitionnons l’automate A en b en deux sous-automates A1 et A2


tel que toutes les transitions sortantes de b appartiennent à A2 , faisant de
b l’état final de A1 et l’état initial de A2 , respectivement. Ceci nous assure
alors que A1 défini un langage rationnel sans préfixe.

Théorème 2.4.1. Un langage rationnel sans préfixe L est un langage ra-


tionnel sans préfixe premier si et seulement si il n’existe aucun état pont
dans le DFA minimal A pour L.

Le théorème 2.4.1 nous montre enfin que étant donné un langage ration-
nel sans préfixe L, celui-ci ne peut-être décomposé indéfiniment puisque son
DFA minimal possède un nombre fini d’états.

25
Conclusion

Cette étude nous a permis d’explorer un certains nombre de connais-


sances relatives aux automates généralisés et leur extension, les automa-
tes d’expression. Nous y avons remarqué que l’élimination d’états est un
moyen naturel et simple permettant le calcul d’une expression rationnelle
partant d’un automate donné à travers différentes transformations.

Nous avons ensuite abordé de manière formelle, la définition des au-


tomates d’expression ainsi que des DEA basés sur la notion de langage
sans préfixe. Cela nous a ensuite guidé vers un résultat. Celui-ci nous dis
que les langages reconnus par les automates d’expression déterministes
sont en fait, des langages rationnels sans préfixes et que ceux-ci forment
par conséquent, un sous-famille des langages rationnels.

Nous avons ensuite pu vérifier durant l’étude de la minimisation des


automates d’éxpression déterministes, tout comme pour Giammarresi et
Montalbano, qu’en général, l’automate minimal obtenu n’est pas unique.
Puisque le problème de l’équivalence entre expressions rationnelles est un
problème NP-complet, nous pouvons nous attendre à ce que celui de la
minimisation en soit de même. C’est exactement ce problème qui se pose,
aussi bien dans la définition formelle du modèle minimal que dans le calcul
de celui-ci (nombre d’états, taille des étiquettes, etc.).

Enfin, nous avons survolé la décomposition des langages en langages


premiers afin d’espérer trouver une piste ou une idée permettant de “cas-
ser” cette complexité et peut-être aboutir à une définition formelle de la
minimalité des automates.

26
Ce que nous pourrions tenter à présent, serait de généraliser les au-
tomates considérés depuis le début de ce document, ainsi que toutes les
propriétés obtenues, aux automates à multiplicité. Nous pourrions peut-
être obtenir quelques résultats supplémentaires, plus larges, mais qui nous
permettraient, au final, de les réappliquer de la cas précis des automates
d’expression. (Reculer pour mieux sauter)

27
Bibliographie

[1] S. Eilenberg, Automata, languages and machines, Academic Press, 1974.


[2] D. Giammarresi and R. Montalbano, Deterministic generalized auto-
mata, Theoretical Comput. Sci. 215 (1999), 191–208.
[3] Y. Han and D. Wood, The generalization of generalized automata : Ex-
pression automata, Theoretical Comput. Sci. (2004), 08.
[4] J. Hopcroft and J. Ullman, Introduction to automata theory, languages,
and computation, 2nd ed., Addison-Wesley, 1979.
[5] D. Perrin and J. Berstel, Theory of codes, Université de Marne-la-Vallée,
2002.
[6] A. Salomaa and S. Yu, On the decomposition of finite languages, Deve-
lopments in Language Theory (DLT) 99 (2000), 20–31.

28