Automates minimaux

publicité
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Théorie des Langages Formels
Chapitre 5 : Automates minimaux
Florence Levé
[email protected]
Année 2014-2015
1/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Introduction
Les algorithmes vus précédemment peuvent mener à des
automates relativement gros.
On souhaite obtenir des automates les plus petits possible, en
gardant l’avantage des automates déterministes.
Nous nous intéressons donc ici à l’automate déterministe ayant
le moins d’états possible :
I
I
Nous allons voir qu’il est unique.
Nous verrons deux méthodes pour l’obtenir : une directement à
partir d’une expression rationnelle ; l’autre à partir d’un
automate déjà connu.
2/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Automate minimal
Théorème : Tout langage reconnaissable est reconnu par un
unique (au renommage près des états) automate déterministe
complet tel que tout autre automate déterministe complet a
au moins autant d’états que lui.
L’automate décrit ci-dessus est appelé automate minimal
complet ou plus simplement automate minimal reconnaissant
le langage.
3/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Résiduel
Soient A un alphabet, L ⊆ A∗ un langage et u ∈ A∗ un mot.
Le résiduel (à gauche ou quotient à gauche) de L par rapport
à u est le langage
u −1 L = {v ∈ A∗ | uv ∈ L}.
Exemple :
L = {ab, ba, aab}
I
I
I
a−1 L = {b, ab},
b −1 L = {a},
c −1 L = ∅
Méthode :
I
u −1 L est l’ensemble X tel que L ∩ uA∗ = uX
I
Pour calculer un résiduel u −1 L sur un exemple simple :
1. Trouver les mots de L commençant par u : L ∩ uA∗ ;
2. Enlever les préfixes u −→ u −1 L.
4/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Lemme
A∗
Soit L ⊆
un langage reconnu par un automate déterministe
complet Aut = < A, Q, {d }, F , δ >.
Soit u un mot. Il existe un unique chemin dans Aut partant de d et
étiqueté par u : soit p l’état dans lequel aboutit ce chemin.
Alors :
u −1 L = Lp
Preuve :
uLp ⊆ L implique Lp ⊆ u −1 L
Pour v appartenant à u −1 L, uv ∈ L. Puisque l’automate est
déterministe, l’unique chemin reconnaissant uv dans Aut est
un chemin qui après avoir reconnu u arrive en p et donc
v ∈ Lp . Ainsi u −1 L ⊆ Lp .
Corollaire :
Tout langage reconnaissable a un nombre fini de résiduels.
5/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Lemme
Pour tous mots u et v et pour tout langage L,
(uv )−1 L = v −1 (u −1 L)
Preuve :
(uv )−1 L = {w | uvw ∈ L}
= {w | vw ∈ u −1 L}
= v −1 (u −1 L)
6/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Approche
On peut calculer les résiduels u −1 L pour les longueurs de u
successives : 0, 1, 2,. . .
Comme il y a un nombre fini de résiduels, le calcul ne peut que
s’arrêter.
7/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Calcul des résiduels
Donnée : un langage L ;
Hypothèse : le langage L a un nombre fini de résiduels ;
Résultats : les résiduels de L
(notés L0 , . . . , Lk−1 où k est le nombre de résiduels de L).
Premier résiduel : ε−1 L = L (le noter L0 )
tant que de nouveaux ensembles apparaissent :
I
I
calculer les résiduels par rapport aux lettres de l’alphabet en
partant des ensembles précédemment obtenus ;
numéroter au fur et à mesure les langages distincts rencontrés.
8/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Formules utiles
Dans le formulaire suivant a est une lettre, L, L1 et L2 sont des
ensembles.
1. a−1 (L1 ∪ L2 ) = a−1 L1 ∪ a−1 L2
2. a−1 (L1 L2 ) = (a−1 L1 )L2 si ε 6∈ L1
3. a−1 (L1 L2 ) = (a−1 L1 )L2 ∪ a−1 L2 si ε ∈ L1
4. a−1 (L∗ ) = (a−1 L)L∗
5. a−1 (L1 ∩ L2 ) = a−1 L1 ∩ a−1 L2
6. a−1 (A∗ \ L) = A∗ \ (a−1 L)
7. a−1 (L1 \ L2 ) = (a−1 L1 ) \ (a−1 L2 )
9/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Exemple
Résiduels du langage A∗ ab sur alphabet {a, b}.
L0 = ε−1 L = L
a−1 L0 = a−1 (A∗ ab) = (a−1 A∗ )ab ∪ a−1 {ab} =
(a−1 A)A∗ ab ∪ {b} = εA∗ ab ∪ {b} = A∗ ab + b := L1
b−1 L0 = L0
a−1 L1 = L1
b−1 L1 = ε + A∗ ab := L2
a−1 L2 = L1
b−1 L2 = L0
10/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Remarques
La méthode de calcul précédente n’est pas implémentable dans tous
les cas :
problème 1. Comment est donné le langage L ? Pas
nécessairement par le biais d’une expression rationnelle ?
problème 2. Comment tester l’égalité d’un langage par rapport
aux précédents déjà calculés, en particulier si le langage n’est
pas reconnaissable.... et même quand il l’est.
L’hypothèse “nombre de résiduels fini” n’est pas toujours
évaluable et, sans elle, le calcul précédent ne finit pas.
Par contre, quand elle est implémentable, elle donne directement
un automate déterministe (avec le moins d’états possibles).
11/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Construction de l’automate minimal
Proposition :
1. Un langage L est reconnaissable si et seulement si le nombre
de ses résiduels est fini.
2. L’automate déterministe minimal complet reconnaissant L est
l’automate tel que :
I
I
I
I
I
les états sont numérotés de 0 à n − 1 où n est le nombre de
résiduels de L ;
chaque résiduel Li correspond à un état noté i ;
l’état de départ 0 correspond au résiduel de L par rapport à ε,
c’est-à-dire L lui-même (L0 = ε−1 L = L) ;
il existe une transition (i, a, j) si et seulement si Lj = a−1 Li ;
i est un état d’acceptation si et seulement si ε ∈ Li .
L’automate défini ainsi est appelé automate des résiduels.
12/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Exemple
A∗ ab
L0 = L =
a−1 L0 = L1 = A∗ ab + b
b−1 L0 = L0
a−1 L1 = L1
b−1 L1 = L2 = ε + A∗ ab
a−1 L2 = L1
b−1 L2 = L0
b
L0
(ε ∈ L2 ⇒ L2 état d’acceptation)
a
a
L1
b
L2
a
b
13/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Preuve de la proposition
1. Un langage L est reconnaissable si et seulement si le nombre de
ses résiduels est fini.
⇐ on donne une construction de l’automate résiduel.
⇒ Le premier lemme du chapitre implique que le nombre de
résiduels d’un langage reconnu par un automate fini est fini
puisqu’il est majoré par le nombre d’états de cet automate.
2. L’automate déterministe minimal complet reconnaissant L est
l’automate des résiduels.
Remarquons également que le même lemme associe à chaque
résiduel au moins un état. Ainsi, le nombre d’états d’un
automate déterministe complet reconnaissant un langage est
minoré par le nombre de résiduels (de ce fait, à un état n’est
associé qu’un seul résiduel). Donc l’automate des résiduels a
un nombre minimal d’état.
14/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Preuve de la proposition
2. L’automate déterministe minimal complet reconnaissant L est
l’automate des résiduels.
L’automate des résiduels est déterministe et complet : par
construction, pour chaque état (un résiduel) on calcule une
transition et une seule par chaque lettre.
L’automate des résiduels reconnaît le langage L.
Idée : Si u = a1 . . . an est un mot, il existe un chemin
(L0 , a1 , a1−1 L),
(a1−1 L, a2 , a2−1 (a1−1 L) = (a1 a2 )−1 L),
((a1 a2 )−1 L, a3 , (a1 a2 a3 )−1 L),
...,
(a1 a2 a3 . . . an−1 )−1 L, an , (a1 a2 a3 . . . an−1 an )−1 L
dans l’automate des résiduels.
On a : a1 . . . an ∈ L si et seulement si
ε ∈ (a1 a2 a3 . . . an−1 an )−1 L.
15/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Preuve de la proposition
Il reste à vérifier que tout automate minimal déterministe
complet est isomorphe à l’automate des résiduels i.e. à un
renommage des états est l’automate des résiduels.
Soit donc un automate Aut ayant le même nombre d’états que
l’automate des résiduels.
I
I
I
I
On a vu que chaque résiduel est associé à un unique état
Le résiduel par ε est nécessairement l’état initial.
Les états terminaux correspondent nécessairement aux
résiduels qui contiennent le mot vide.
Considérons à présent une transition (Li , a, Lj ). Cette
transition existe puisque l’automate est complet et est unique
puisque l’automate est déterministe. Par association des
langages aux état, aLj ⊆ Li et donc a−1 Li ⊆ Lj . Soit v un mot
dans Lj , av est alors l’étiquette d’un chemin partant de Li
allant dans un état final : av ∈ Li . Ainsi Lj ⊆ a−1 Li . Donc les
transitions de l’automate Aut sont les mêmes que celles de
l’automate des résiduels.
16/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Une manière de tester la minimalité
Idée : nous avons vu que, pour tout automate déterministe, tout
état était associé à un unique résiduel.
Mais la réciproque n’est pas vraie : deux états peuvent être associés
à un même résiduel. Si c’est le cas l’automate n’est pas minimal.
17/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
États séparés
Soit Aut = < A, Q, {d }, F , δ > un automate fini déterministe
complet. Deux états s, t ∈ Q sont séparés par le mot u ∈ A∗ si
l’une des deux conditions suivantes est vérifiée :
I
I
u ∈ Ls=init et u ∈
6 Lt=init ;
u 6∈ Ls=init et u ∈ Lt=init .
Autrement dit, deux états sont séparés par un mot si le chemin
étiqueté par ce mot et partant de l’un des deux états aboutit
dans un état d’acceptation, tandis que le chemin étiqueté par
ce mot et partant de l’autre état aboutit dans un état qui n’est
pas d’acceptation.
Exemple : < {a, b}, {1, 2, 3}, {1}, {2},
{(1, a, 2), (1, b, 1), (2, a, 3), (2, b, 2), (3, a, 3), (3, b, 1)} >.
Le mot vide sépare les états 1 et 2. Le mot aab ne les sépare
pas.
18/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Test de minimalité
Proposition : Un automate déterministe complet est minimal si et
seulement si pour tout couple d’états (p, q) il existe un mot qui
sépare p et q.
Conséquence :
Le résultat précédent donne un moyen de montrer qu’un
automate est minimal. Il suffit d’exhiber pour chaque couple
d’état (p, q) un mot qui les sépare.
Par exemple, l’automate précédent est minimal : le mot vide
sépare les états 1 et 2 ; il sépare aussi les états 2 et 3 ; le mot
ab sépare les états 1 et 3.
19/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Équivalence de Nérode
Définition : Étant donnés un automate Aut, des états p et q et un
entier n ≥ 0, notons :
1. p ≡ q le fait que p et q ne sont séparés par aucun mot
2. p ≡n q le fait que p et q ne sont séparés par aucun mot de
longueur inférieure ou égale à n.
La relation ≡ (définie sur les états de Aut) est appelée Relation de
Nérode.
Lemme : Étant donné un automate Aut, les relations ≡ et ≡n
(pour tout entier n ≥ 0) sont des relations d’équivalence (i.e.
réflexive, symétrique et transitive).
20/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Partitionnement des états d’un automate
Lemme : Pour un automate de k états :
1. pour tout entier n ≥ 0, p ≡n+1 q si et seulement si p ≡n q et
pour toute lettre a, δ(p, a) ≡n δ(q, a) ;
2. il existe un entier n avec 0 ≤ n ≤ k tel que ≡n =≡n+1 (i.e.
pour tous états p et q, p ≡n q si et seulement si p ≡n+1 q) et
pour tout entier m ≥ n, ≡m =≡n =≡ ;
3. Si ≡n =≡n+1 alors ≡n+1 =≡n+2 .
21/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Algorithme de Moore
Donnée : un automate complet déterministe accessible
Résultat : l’équivalence de Nérode et l’automate minimal
reconnaissant le langage reconnu par l’automate donné
Principe général : l’algorithme calcule lettre par lettre les mots
séparant des états (il calcule donc les classes d’équivalences des
relations ≡n ). Après examen de chaque longueur de mot possible,
un bilan est fait : il consiste à attribuer un numéro (en chiffre
romain) à chaque classe de ≡n .
22/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Algorithme de Moore
Construire un tableau dont les colonnes sont les différents
états de l’automate de départ.
La première ligne de bilan s’obtient en séparant (par ε) les
états d’acceptation et les autres en deux classes.
I
I
Numéroter I l’état de la première colonne ;
Numéroter I ou II les états des autres colonnes de manière que
tous les états d’acceptation soient numérotés de la même
manière, et que tous les états non d’acceptation soient
numérotées de l’autre manière.
Les lignes suivantes du tableau sont construites une par une en
regardant, pour chaque état, dans quel état mène la transition
par une lettre de A et en notant la classe à laquelle appartient
cet état dans la ligne bilan précédente. Cette opération est
réalisée à raison d’une ligne par lettre de A.
23/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Algorithme de Moore
Un nouveau bilan est effectué qui prend en compte le bilan
précédent et toutes les lignes que l’on vient de calculer : deux
colonnes différentes donnent deux classes différentes. La ligne
obtenue fait le bilan de tout ce qui précède et c’est avec elle
que l’on recommence. Là encore, les classes sont numérotées
en chiffres romains à partir de la gauche.
On répète les deux opérations qui précèdent jusqu’à obtenir
deux lignes de bilan successives identiques.
24/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Algorithme de Moore
Les états de l’automate minimal complet sont les classes de la
dernière ligne de bilan.
Les transitions se trouvent dans le tableau entre
l’avant-dernière et la dernière ligne de bilan.
L’état de départ est la classe contenant l’état de départ de
l’automate déterministe.
Les états d’acceptation sont les classes contenant des états
d’acceptation de l’automate initial ; puisque ε sépare les états
d’acceptation des autres, une classe ne contient soit que des
états d’acceptation, soit aucun état d’acceptation.
25/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Exemple
b
b
a
0
a
2
a
3
a
5
6
a
a
b
1
b
a
b
4
b
a
b
7
b
26/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Exemple
b
b
a
0
a
2
a
3
a
5
6
a
a
b
1
b
0
ε
I
a
II
b
II
bilan I
a
III
b
II
bilan I
On s’arrête
a
b
1 2
3
4
II II I
I
II I
II II
II II I
I
II III IV IV
III IV III III
II III IV IV
II III IV IV
car on a deux fois le
a
4
b
5
6
7
II I
I
I
II II
II I
I
III IV IV
IV III III
III IV IV
III IV IV
même bilan.
b
7
b
27/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Exemple : automate minimal
0
I
II
II
I
III
II
I
ε
a
b
bilan
a
b
bilan
1
II
II
II
II
III
II
II
2
II
I
II
III
IV
III
III
3
I
II
I
IV
III
IV
IV
4
I
II
I
IV
III
IV
IV
5
II
I
II
III
IV
III
III
6
I
II
I
IV
III
IV
IV
7
I
II
I
IV
III
IV
IV
b
b
a
I
a
IV
III
a
a
b
II
b
28/29
Automate minimal
Automate des résiduels
Test de minimalité
Algorithme de Moore
Remarques
L’application de l’algorithme de Moore peut éventuellement
mener à la conclusion que tous les états sont séparés. Cela
constitue une preuve que l’automate initial est minimal.
Du point de vue complexité, il y a plus n étapes dans
l’algorithme. Chaque étape fait un calcul en Θ(n × card (A))
(si les transitions données par une table de transitions avec
accès direct). L’algorithme a une complexité en Θ(n2 ) (mais il
peut être appliqué sur des automates très grand par exemple
issus d’une déterminisation.
29/29
Téléchargement