Huiti me Partie: Automates finis

publicité
INFO-F-302, Cours d’Informatique Fondamentale
INFO-F-302, Cours d’Informatique Fondamentale
Emmanuel Filiot
Département d’Informatique
Faculté des Sciences
Université Libre de Bruxelles
Année académique 2014-2015
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Automates Finis
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Rappels sur les langages
I
un alphabet est un ensemble fini, que l’on notera Σ
I
ses éléments sont appelés lettres ou symboles
I
un mot est une suite finie de symboles, dénotant le mot vide.
I
l’ensemble des mots sur Σ est noté Σ∗
I
un langage L est un sous-ensemble de Σ∗ , i.e. L ⊆ Σ∗
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Rappels sur les langages
I
un alphabet est un ensemble fini, que l’on notera Σ
I
ses éléments sont appelés lettres ou symboles
I
un mot est une suite finie de symboles, dénotant le mot vide.
I
l’ensemble des mots sur Σ est noté Σ∗
I
un langage L est un sous-ensemble de Σ∗ , i.e. L ⊆ Σ∗
Exemple : avec Σ = {a, b}, l’ensemble {an | n est un entier pair} est un
langage.
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Automates et complexité
I
les langages permettent de représenter des problèmes de décisions
(OUI si le mot est dans le langage, NON sinon)
PAIR = {b ∈ {0, 1}∗ | b est un entier pair en binaire}
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Automates et complexité
I
les langages permettent de représenter des problèmes de décisions
(OUI si le mot est dans le langage, NON sinon)
PAIR = {b ∈ {0, 1}∗ | b est un entier pair en binaire}
I
on a vu que certains langages (donc problèmes de décision) sont
indécidables
HALT = {c#u ∈ UTF8∗ | c est le code d’un programme qui termine sur l’entrée u}
I c’est-à-dire qu’il n’existe pas de machine de Turing permettant de
les décider
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Automates et complexité
I
les langages permettent de représenter des problèmes de décisions
(OUI si le mot est dans le langage, NON sinon)
PAIR = {b ∈ {0, 1}∗ | b est un entier pair en binaire}
I
on a vu que certains langages (donc problèmes de décision) sont
indécidables
HALT = {c#u ∈ UTF8∗ | c est le code d’un programme qui termine sur l’entrée u}
I c’est-à-dire qu’il n’existe pas de machine de Turing permettant de
les décider
I les automates, étudiés depuis les années 50, sont des modèles de
machines simples, dont le pouvoir de calcul est restreint
I initialement, le but était de définir des classes de
problèmes/langages/programmes pouvant être analysés
algorithmiquement
I nous allons voir les automates finis, un modèles très simple
d’automates.
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Un premier exemple
Un automate fini
I
lit la séquence des lettres de gauche à droite,
I
possède un nombre fini d’états,
I
en fonction de l’état courant et de la lettre lue, se déplace vers un
autre état,
I
possède un état initial (représenté par une flèche sans source), et des
états finaux (ou acceptants, représentés par des doubles cercles)
I
il accepte le mot ssi, lorsqu’il arrive à la fin du mot, il se trouve dans
un état final
b
b
a
q0
q1
a
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Un premier exemple
b
b
a
q0
q1
a
Exemple d’exécutions (appelées run en anglais)
entrée
aabaa
abb
bbaa
exécution
accepté
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Un premier exemple
b
b
a
q0
q1
a
Exemple d’exécutions (appelées run en anglais)
entrée
q0
aabaa
abb
bbaa
a q
1
a
exécution
q b q
0
0
accepté
a q
1
a
q0
oui
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Un premier exemple
b
b
a
q0
q1
a
Exemple d’exécutions (appelées run en anglais)
entrée
q0
a q
1
a
exécution
q b q
0
0
accepté
a q
1
q0
bbaa
q0
oui
aabaa
abb
a
a q
1
b q
1
b q
1
non
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Un premier exemple
b
b
a
q0
q1
a
Exemple d’exécutions (appelées run en anglais)
entrée
q0
a q
1
exécution
q b q
a
0
accepté
0
a q
1
a
q0
a q
1
b q
1
b q
1
abb
non
q0
bbaa
q0
oui
aabaa
b q
0
b q
0
a q
1
a
q0
oui
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Un premier exemple
b
b
a
q0
q1
a
Exemple d’exécutions (appelées run en anglais)
entrée
q0
a q
1
exécution
q b q
a
0
accepté
0
a q
1
a
q0
oui
aabaa
q0
a q
1
b q
1
b q
1
abb
non
q0
b q
0
b q
0
a q
1
a
q0
oui
bbaa
q0
oui
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Un premier exemple
b
b
a
q0
q1
a
Langage accepté (ou reconnu)
Le langage accepté (ou reconnu) par l’automate A ci-dessous, noté L(A),
est l’ensemble des mots qui contiennent un nombre pair de lettres a :
L(A) = {w ∈ {a, b}∗ | w contient un nombre pair de a}
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Question
Question
Donner un automate dont le langage reconnu est l’ensemble des mots sur
l’alphabet Σ = {a, b} qui contiennent au moins une lettre.
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Question
Question
Donner un automate dont le langage reconnu est l’ensemble des mots sur
l’alphabet Σ = {a, b} qui contiennent au moins une lettre.
Réponse
a
a
q0
q1
b
b
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Quelques applications
I
nombreuses applications en informatique théorique
I
modélisation de protocoles réseau
I
analyse de texte, recherche textuelle
I
compilation (analyseur lexicaux)
I
preuve automatique de programmes (théorie du model-checking)
I
jeux vidéos (chaque agent est un automate)
I
...
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Autres exemple : Recherche Textuelle
I
on veut trouver toutes les occurrences de 101 dans une séquence de
bits
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Autres exemple : Recherche Textuelle
I
on veut trouver toutes les occurrences de 101 dans une séquence de
bits
0
0
I
à chaque fois qu’on va dans l’état 101, on sort la position
correspondante dans le mot.
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Autres exemple : Recherche Textuelle
I
on veut trouver toutes les occurrences de 101 dans une séquence de
bits
0
0
I
1
1
à chaque fois qu’on va dans l’état 101, on sort la position
correspondante dans le mot.
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Autres exemple : Recherche Textuelle
I
on veut trouver toutes les occurrences de 101 dans une séquence de
bits
1
0
0
I
1
1
à chaque fois qu’on va dans l’état 101, on sort la position
correspondante dans le mot.
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Autres exemple : Recherche Textuelle
I
on veut trouver toutes les occurrences de 101 dans une séquence de
bits
1
0
0
I
1
1
0
10
à chaque fois qu’on va dans l’état 101, on sort la position
correspondante dans le mot.
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Autres exemple : Recherche Textuelle
I
on veut trouver toutes les occurrences de 101 dans une séquence de
bits
1
0
0
1
1
0
10
0
I
à chaque fois qu’on va dans l’état 101, on sort la position
correspondante dans le mot.
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Autres exemple : Recherche Textuelle
I
on veut trouver toutes les occurrences de 101 dans une séquence de
bits
1
0
1
0
1
1
0
10
0
I
à chaque fois qu’on va dans l’état 101, on sort la position
correspondante dans le mot.
101
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Autres exemple : Recherche Textuelle
I
on veut trouver toutes les occurrences de 101 dans une séquence de
bits
1
0
1
0
1
1
0
10
0
0
I
à chaque fois qu’on va dans l’état 101, on sort la position
correspondante dans le mot.
101
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Autres exemple : Recherche Textuelle
I
on veut trouver toutes les occurrences de 101 dans une séquence de
bits
1
0
1
0
1
1
0
I
0
10
0
1
à chaque fois qu’on va dans l’état 101, on sort la position
correspondante dans le mot.
101
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Avantages/Inconvénients des automates
Avantages
I
I
classe de programmes simples mais ayant de nombreuses applications
beaucoup de problèmes indécidables pour les machines de Turing
deviennent décidables pour les automates. Exemples :
I
I
est-ce que deux automates font la même chose (i.e. reconnaissent le
même langage) ?
étant donné un automate, est-ce qu’il en existe un plus petit (un
nombre d’état) qui fait la même chose ?
I
“plus petite” classe de machines avec laquelle on peut définir et
étudier de manière précise des notions importantes en théorie de la
calculabilité : non-déterminisme, alternance, ambiguité, etc.
I
bien compris, nombreux résultats, nombreux algorithmes pour les
analyser
I
robustes : beaucoup de caractérisations (expressions rationnelles,
logique, régularité, algébrique ...), clôture par opérations Booléennes
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Avantages/Inconvénients des automates
Inconvénients
I
peu puissants
I
peu compacts
INFO-F-302, Cours d’Informatique Fondamentale
Automates Finis
Introduction
Dans ce cours ...
I
définition, exemples
I
opérations Booléennes
I
minimisation
I
expressions rationnelles
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Définition
Définition
Un automate fini 1 A sur un alphabet Σ est un 4-uplet (Q, q0 , F , δ) où
I
Q est un ensemble fini d’éléments appelé états,
I
q0 ∈ Q est appelé état initial,
I
F ⊆ Q est un ensemble d’états dits finaux (ou acceptants),
I
δ : Q × Σ → Q est une fonction (pas nécessairement totale) appelé
fonction de transition.
1. Par la suite, on dira simplement automate
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Définition
Définition
Un automate fini 1 A sur un alphabet Σ est un 4-uplet (Q, q0 , F , δ) où
I
Q est un ensemble fini d’éléments appelé états,
I
q0 ∈ Q est appelé état initial,
I
F ⊆ Q est un ensemble d’états dits finaux (ou acceptants),
I
δ : Q × Σ → Q est une fonction (pas nécessairement totale) appelé
fonction de transition.
Lorsqu’il lit une entrée w ∈ Σ∗ , l’automate A commence son exécution
dans l’état q0 , et suit la fonction de transition δ, qui lui indique, en
fonction de l’état où il se trouve et de la lettre qu’il lit, l’état suivant où il
doit aller (si la fonction n’est pas définie, alors l’automate d’arrête et le
mot n’est pas accepté). Si, à la fin de son exécution, il atteint un état
final, alors le mot est accepté, sinon il est rejeté.
1. Par la suite, on dira simplement automate
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Exécution
Définition
Une exécution de A est une suite finie e = p0 σ1 p1 σ2 . . . pn−1 σn pn (n ≥ 0)
telle que :
I
p0 = q0
I
pour tout i ∈ {0, . . . , n}, pi ∈ Q
I
pour tout i ∈ {1, . . . , n}, σi ∈ Σ
I
pour tout i ∈ {0, . . . , n − 1}, δ(pi , σi+1 ) est définie et vaut pi+1 .
On dit l’exécution e est une exécution sur le mot σ1 . . . σn , et que e est
acceptante si l’état atteint est final, i.e. pn ∈ F .
Remarque : la suite q0 est une exécution sur le mot vide . Elle est
acceptante ssi q0 est final.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Langage accepté par un automate fini
Définition
Etant donné un automata A, le langage accepté (ou reconnu) par A, noté
L(A), est l’ensemble des mots pour lesquels il existe une exécution
acceptante de A.
L(A) = {w ∈ Σ∗ | il existe une exécution acceptante de A sur w }
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Exemples
Σ = {0, 1}.
0
0
1
1
1
0
10
1
101
0
Question
Quel est le langage accepté par cet automate ?
L(A) = {w ∈ {0, 1}∗ | w contient le facteur 101}
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Exemples
Σ = {0, 1}.
0
0
0
1
1
1
0
0
10
1
101
1
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Exemples
Σ = {0, 1}.
0
0
0
1
1
1
0
10
0
Question
Quel est le langage accepté par cet automate ?
1
101
1
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Exemples
Σ = {0, 1}.
0
0
0
1
1
1
0
10
1
101
0
Question
Quel est le langage accepté par cet automate ?
L(A) = {w ∈ {0, 1}∗ | w contient le facteur 101}
1
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Exemples
Σ = {a, b}.
q7
a
q8
a
q4
b
q5
a
q6
q1
a
q2
a
q3
a
q0
b
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Exemples
Σ = {a, b}.
q7
a
q8
a
q4
b
q5
a
q6
q1
a
q2
a
q3
a
q0
b
Question
Quel est le langage accepté par cet automate ?
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Exemples
Σ = {a, b}.
q7
a
q8
a
q4
b
q5
a
q6
q1
a
q2
a
q3
a
q0
b
Question
Quel est le langage accepté par cet automate ?
L(A) = {a, ba, aa, aba, baa, aaa}
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Complétion d’un automate
Définition
Un automate A est dit complet si sa fonction de transition est totale.
Exemple : l’automate précédent n’est pas complet, alors que l’automate
qui accepte les mots contenant 101 est complet.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Complétion d’un automate
Définition
Un automate A est dit complet si sa fonction de transition est totale.
Exemple : l’automate précédent n’est pas complet, alors que l’automate
qui accepte les mots contenant 101 est complet.
Lemme
On peut toujours transformer un automate A en un automate B complet
qui accepte le même langage, i.e. tel que L(A) = L(B).
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Complétion d’un automate
Définition
Un automate A est dit complet si sa fonction de transition est totale.
Exemple : l’automate précédent n’est pas complet, alors que l’automate
qui accepte les mots contenant 101 est complet.
Lemme
On peut toujours transformer un automate A en un automate B complet
qui accepte le même langage, i.e. tel que L(A) = L(B).
Idée de la preuve : ajouter un état supplémentaire (appelé état puits)
non final et ajouter les transitions manquantes vers cet état.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Complétion d’un automate : Exemple
q7
a
q8
a
q4
b
q5
a
q6
q1
a
q2
a
q3
a
q0
I
b
les nouvelles transitions sont indiquées en pointillés.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Complétion d’un automate : Exemple
b
q7
a
q8
a, b
b
a
a, b
q4
b
q5
a
q6
a, b
a
q0
b
q1
a
q2
a
q3
b
I
b
les nouvelles transitions sont indiquées en pointillés.
p
a, b
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Test du vide
Test du vide
Problème
Le problème VIDE est le suivant.
I
ENTREE : un automate A sur un alphabet Σ,
I
SORTIE : est-ce que L(A) = ∅ ?
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Test du vide
Test du vide : comment feriez-vous avec l’automate
suivant ?
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Test du vide
Test du vide
Définition (Etats atteignables)
Soit A = (Q, q0 , F , δ) un automate sur un alphabet Σ. Un état q ∈ Q est
dit atteignable s’il existe un mot w ∈ Σ∗ et une exécution de A sur w qui
se termine en q.
Remarque : l’ensemble des états atteignables d’un graphe peut être
calculer en temp O(n + m) par des algorithmes de graphe classiques
(parcours en largeur par exemple), où n est le nombre d’états de
l’automate, et m le nombre de transitions.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Test du vide
Test du vide
Définition (Etats atteignables)
Soit A = (Q, q0 , F , δ) un automate sur un alphabet Σ. Un état q ∈ Q est
dit atteignable s’il existe un mot w ∈ Σ∗ et une exécution de A sur w qui
se termine en q.
Remarque : l’ensemble des états atteignables d’un graphe peut être
calculer en temp O(n + m) par des algorithmes de graphe classiques
(parcours en largeur par exemple), où n est le nombre d’états de
l’automate, et m le nombre de transitions.
Théorème
Etant donné un automate A avec n états m transitions, on peut tester en
O(n + m) si L(A) 6= ∅.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Test du vide
Test du vide
Définition (Etats atteignables)
Soit A = (Q, q0 , F , δ) un automate sur un alphabet Σ. Un état q ∈ Q est
dit atteignable s’il existe un mot w ∈ Σ∗ et une exécution de A sur w qui
se termine en q.
Remarque : l’ensemble des états atteignables d’un graphe peut être
calculer en temp O(n + m) par des algorithmes de graphe classiques
(parcours en largeur par exemple), où n est le nombre d’états de
l’automate, et m le nombre de transitions.
Théorème
Etant donné un automate A avec n états m transitions, on peut tester en
O(n + m) si L(A) 6= ∅.
Algorithme
1. calculer l’ensemble des états atteignables R de A
2. tester si R ∩ F 6= ∅.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Opérations Booléennes sur les langages
Définition (Complément)
Le complément d’un langage L ⊆ Σ∗ est le langage, noté L, défini par
L = {w ∈ Σ∗ | w 6∈ L} = Σ∗ \ L.
Exemple : si L est l’ensemble des mots sur {a, b} qui contiennent au
moins un a, alors L est l’ensemble des mots qui contiennent au moins
deux a, ou pas de a.
Définition (Union, Intersection)
Soient L1 , L2 ⊆ Σ∗ deux langages. L’union et l’intersection de L1 et L2
sont définies respectivement par :
L1 ∪ L2
L1 ∩ L2
= {w ∈ Σ∗ | w ∈ L1 ou w ∈ L2 }
= {w ∈ Σ∗ | w ∈ L1 et w ∈ L2 }
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Clôture des automates par opérations Booléennes
Théorème
Soient A, A1 , A2 des automates finis sur un alphabet Σ. Il existe des
automates Ac , U et I tels que :
L(Ac )
L(U)
L(I )
= L(A)
= L(A1 ) ∪ L(A2 )
= L(A1 ) ∩ L(A2 )
Dans la suite, nous allons montrer comment construire Ac , U et I à
partir de A, A1 et A2 .
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Clôture par complément
I
Si A = (Q, q0 , F , δ) est complet, alors il suffit de prendre
Ac =
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Clôture par complément
I
Si A = (Q, q0 , F , δ) est complet, alors il suffit de prendre
Ac = (Q, q0 , Q \ F , δ).
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Clôture par complément
I
Si A = (Q, q0 , F , δ) est complet, alors il suffit de prendre
Ac = (Q, q0 , Q \ F , δ).
I
Si A n’est pas complet, alors il faut le compléter avant.
I
Par exemple, si A =
b
b
a
q0
q1
a
I
alors Ac =
b
b
a
q0
q1
a
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Clôture par complément
I
Par exemple, si A =
0
0
1
1
1
0
10
1
101
0
I
alors Ac =
0
0
1
1
1
0
0
0
10
1
101
1
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Clôture par complément
I
Par exemple, si A =
0
0
0
1
1
1
0
10
1
0
I
101
1
alors Ac =
0
0
1
1
1
0
0
0
10
1
101
1
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Clôture par complément
Exercice
Donner un exemple d’automate A = (Q, q0 , F , δ) non complet sur un
alphabet Σ, tel que l’automate B = (Q, q0 , Q \ F , δ) ne satisfait pas
L(B) = L(A).
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Clôture par complément
Exercice
Donner un exemple d’automate A = (Q, q0 , F , δ) non complet sur un
alphabet Σ, tel que l’automate B = (Q, q0 , Q \ F , δ) ne satisfait pas
L(B) = L(A).
q0
On prend Σ = {a} et A =
I L(A) = {}, L(B) = ∅ 6= {}
q0
Alors B =
.
a
a
q0
0
Il faut d’abord compléter A en A =
.
a
q0
Et on obtient Ac =
q1
a
q1
.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Produit d’Automates
On appelera pré-automate sur Σ un triplet (Q, q0 , δ), où Q est un
ensemble fini, q0 ∈ Q, et δ : Q × Σ → Q est une fonction.
Définition
Soient A1 = (Q1 , q01 , F1 , δ1 ) et A2 = (Q2 , q02 , F2 , δ2 ) deux automates sur
Σ. Le produit de A1 et A2 , noté A1 ⊗ A2 , est le pré-automate défini par :
A1 ⊗ A2 = (Q1 × Q2 , (q01 , q02 ), δ12 )
où, pour tout (q1 , q2 ) ∈ Q1 × Q2 , pour tout σ ∈ Σ,

si δ1 (q1 , σ) est indéfinie
 indéfini
indéfini
si δ2 (q2 , σ) est indéfinie
δ12 ((q1 , q2 ), σ) =

(δ1 (q1 , σ), δ2 (q2 , σ)) sinon.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Exemple de produit
b
A2
b
a
q0
a
p0
A1
b
b
p1
a
a
q1
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Exemple de produit
A2
b
b
a
q0
q1
a
a
a
p0 , q0
p0
p0 , q1
a
A1
b
b
p1
b
b
a
b
p1 , q0
p1 , q1
a
A1 ⊗ A2
a
b
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Exemple de produit
I
L(A1 ) est l’ensemble des mots qui contiennent un nombre pair de b
I
L(A2 ) est l’ensemble des mots qui contiennent un nombre pair de a
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Exemple de produit
I
L(A1 ) est l’ensemble des mots qui contiennent un nombre pair de b
I
L(A2 ) est l’ensemble des mots qui contiennent un nombre pair de a
toute exécution de A1 ⊗ A2 sur un mot w simule en parallèle
l’exécution de A1 sur w , ainsi que celle de A2 .
I
I
I
I
I
exemple avec w = abba
sur A1 , on a e1 = p0 a p0 b p1 b p0 a p0
sur A2 , on a e2 = q0 a q1 b q1 b q1 a q0
sur A1 ⊗ A2 , on a (p0 , q0 )a(p0 , q1 )b(p1 , q1 )b(p0 , q1 )a(p0 , q0 ).
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Exemple de produit
I
L(A1 ) est l’ensemble des mots qui contiennent un nombre pair de b
I
L(A2 ) est l’ensemble des mots qui contiennent un nombre pair de a
toute exécution de A1 ⊗ A2 sur un mot w simule en parallèle
l’exécution de A1 sur w , ainsi que celle de A2 .
I
I
I
I
I
I
exemple avec w = abba
sur A1 , on a e1 = p0 a p0 b p1 b p0 a p0
sur A2 , on a e2 = q0 a q1 b q1 b q1 a q0
sur A1 ⊗ A2 , on a (p0 , q0 )a(p0 , q1 )b(p1 , q1 )b(p0 , q1 )a(p0 , q0 ).
comment définir, à partir du produit, un automate qui accepte
L(A1 ) ∩ L(A2 ) ? et L(A1 ) ∪ L(A2 ) ?
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Exemple de produit
I
L(A1 ) est l’ensemble des mots qui contiennent un nombre pair de b
I
L(A2 ) est l’ensemble des mots qui contiennent un nombre pair de a
toute exécution de A1 ⊗ A2 sur un mot w simule en parallèle
l’exécution de A1 sur w , ainsi que celle de A2 .
I
I
I
I
I
exemple avec w = abba
sur A1 , on a e1 = p0 a p0 b p1 b p0 a p0
sur A2 , on a e2 = q0 a q1 b q1 b q1 a q0
sur A1 ⊗ A2 , on a (p0 , q0 )a(p0 , q1 )b(p1 , q1 )b(p0 , q1 )a(p0 , q0 ).
I
comment définir, à partir du produit, un automate qui accepte
L(A1 ) ∩ L(A2 ) ? et L(A1 ) ∪ L(A2 ) ?
I
pour avoir L(A1 ) ∩ L(A2 ), il suffit de prendre F∩ = F1 × F2 pour
états finaux de A1 ⊗ A2 ,
I
pour avoir L(A1 ) ∪ L(A2 ), il suffit de prendre
F∪ = (F1 × Q2 ) ∪ (Q1 × F2 ) pour états finaux de A1 ⊗ A2 .
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Clôture par intersection
A2
b
b
a
q0
q1
a
a
a
p0
p0 , q0
p0 , q1
a
A1
b
b
p1
b
b
a
b
p1 , q0
p1 , q1
a
A1 ⊗ A2
a
b
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Clôture par union
A2
b
b
a
q0
q1
a
a
a
p0
p0 , q0
p0 , q1
a
A1
b
b
p1
b
b
a
b
p1 , q0
p1 , q1
a
A1 ⊗ A2
a
b
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Clôture par union et intersection
Théorème
Soient A1 = (Q1 , q01 , F1 , δ1 ) et A2 = (Q2 , q02 , F2 , δ2 ) deux automates. Soit
A1 ⊗ A2 = (Q1 × Q2 , (q01 , q02 ), δ12 ) le pré-automate produit.
I
Si A1 et A2 sont complets 2 , et
U = (Q1 × Q2 , (q01 , q02 ), (F1 × Q2 ) ∪ (Q1 × F2 ), δ12 ), alors
L(U) = L(A1 ) ∪ L(A2 ).
I
Si I = (Q1 × Q2 , (q01 , q02 ), F1 × F2 δ12 ), alors
L(I ) = L(A1 ) ∩ L(A2 ).
La preuve est laissée en exercice.
2. sinon on les complète avant de faire le produit
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Inclusion et Equivalence
I
on peut se servir des résultats précédents pour définir un automate
permettant de tester si deux automates définissent le même langage
(équivalence)
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Inclusion et Equivalence
I
on peut se servir des résultats précédents pour définir un automate
permettant de tester si deux automates définissent le même langage
(équivalence)
Définition
Soient A1 et A2 deux automates sur un alphabet Σ. On dit que A1 et A2
sont équivalents si L(A1 ) = L(A2 ).
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Inclusion et Equivalence
I
on peut se servir des résultats précédents pour définir un automate
permettant de tester si deux automates définissent le même langage
(équivalence)
Définition
Soient A1 et A2 deux automates sur un alphabet Σ. On dit que A1 et A2
sont équivalents si L(A1 ) = L(A2 ).
Théorème
Etant donnés deux automates A1 et A2 , il est décidable en temps
polynomial si L(A1 ) ⊆ L(A2 ), et si L(A1 ) = L(A2 ).
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Inclusion et Equivalence
Idée de l’algorithme ?
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Inclusion et Equivalence
Idée de l’algorithme ? L(A1 ) = L(A2 ) ssi L(A1 ) ⊆ L(A2 ) et
L(A2 ) ⊆ L(A1 ). On peut donc se concentrer sur l’inclusion. Si les
automates A1 et A2 ne sont pas complets, on commence par les
complèter. Ensuite, on a :
L(A1 ) ⊆ L(A2 ) ssi L(A1 ) ∩ L(A2 ) = ∅
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Inclusion et Equivalence
Idée de l’algorithme ? L(A1 ) = L(A2 ) ssi L(A1 ) ⊆ L(A2 ) et
L(A2 ) ⊆ L(A1 ). On peut donc se concentrer sur l’inclusion. Si les
automates A1 et A2 ne sont pas complets, on commence par les
complèter. Ensuite, on a :
L(A1 ) ⊆ L(A2 ) ssi L(A1 ) ∩ L(A2 ) = ∅
1. construire Ac tel que L(Ac ) = L(A2 ) (temps polynomial)
2. construire I tel que L(I ) = L(A1 ) ∩ L(Ac ) avec le produit A1 ⊗ Ac
(temps polynomial)
3. tester le vide de I (temps polynomial)
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Exemple
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Exemple
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Opérations Booléennes
Exemple
L(A1 ) ⊆ L(A2 ) ?
On peut vérifier sur le produit ci-dessus que L(A1 ) ∩ L(A2 ) = ∅, donc on
a bien L(A1 ) ⊆ L(A2 ).
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Minimisation
I
étant donné un automate A, l’objectif de la minimisation est de
construire un automate complet M tel que M a un nombre d’états
minimal, et M est équivalent à A.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Minimisation
I
étant donné un automate A, l’objectif de la minimisation est de
construire un automate complet M tel que M a un nombre d’états
minimal, et M est équivalent à A.
[
Question ?]
1. est-ce qu’il existe un automate minimal complet unique ?
2. si oui, comment le calculer à partir de A ?
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Minimisation
I
étant donné un automate A, l’objectif de la minimisation est de
construire un automate complet M tel que M a un nombre d’états
minimal, et M est équivalent à A.
[
Question ?]
1. est-ce qu’il existe un automate minimal complet unique ?
2. si oui, comment le calculer à partir de A ?
Nous allons d’abord répondre à la première question, puis à la deuxième.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Exemples
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Exemples
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Relation de Myhill-Nerode
Remarque
Soit L ⊆ Σ∗ un langage, et u, v ∈ L deux mots de L.
I
I
I
si pour tout mot w ∈ Σ∗ , on a uw ∈ L si et seulement si vw ∈ L,
alors cela veut dire que peut importe la manière de compléter u et v
par un mot w , les deux extensions uw et vw seront rejetées en
même temps, ou acceptées en même temps.
⇒ un automate déterministe minimale, après avoir lu u, ou v ,
devrait arriver dans le même état.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Relation de Myhill-Nerode
Remarque
Soit L ⊆ Σ∗ un langage, et u, v ∈ L deux mots de L.
I
I
I
si pour tout mot w ∈ Σ∗ , on a uw ∈ L si et seulement si vw ∈ L,
alors cela veut dire que peut importe la manière de compléter u et v
par un mot w , les deux extensions uw et vw seront rejetées en
même temps, ou acceptées en même temps.
⇒ un automate déterministe minimale, après avoir lu u, ou v ,
devrait arriver dans le même état.
Exemple : Avec
PAIR = {w ∈ {a, b}∗ | w contient un nombre pair de a}. Soit u = ababb
et v = baa. Clairement, pour tout mot w ∈ {a, b}∗ ,
I
uw ∈ L ssi w contient un nombre pair de a (car u contient un
nombre pair de a) ssi vw ∈ L (car v contient un nombre pair de a).
I
uw 6∈ L ssi w contient un nombre impar de a ssi vw 6∈ L.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Relation de Myhill-Nerode
Définition
Soit L ⊆ Σ∗ un langage, et u, v ∈ L deux mots de L. Les mots u et v
sont dits équivalents pour L, noté u ≡L v , si pour tout w ∈ Σ∗ , uw ∈ L
ssi vw ∈ L.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Relation de Myhill-Nerode
Définition
Soit L ⊆ Σ∗ un langage, et u, v ∈ L deux mots de L. Les mots u et v
sont dits équivalents pour L, noté u ≡L v , si pour tout w ∈ Σ∗ , uw ∈ L
ssi vw ∈ L.
Exemple : les mots u = ababb et v = baa sont équivalents pour le
langage PAIR. Pour ce langage, deux mots sont équivalents si et
seulement si il contiennent tous les deux un nombre pair de a, ou tous les
deux un nombre impair de a.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Relation de Myhill-Nerode
Définition
Soit L ⊆ Σ∗ un langage, et u, v ∈ L deux mots de L. Les mots u et v
sont dits équivalents pour L, noté u ≡L v , si pour tout w ∈ Σ∗ , uw ∈ L
ssi vw ∈ L.
Exemple : les mots u = ababb et v = baa sont équivalents pour le
langage PAIR. Pour ce langage, deux mots sont équivalents si et
seulement si il contiennent tous les deux un nombre pair de a, ou tous les
deux un nombre impair de a.
Proposition
La relation ≡L est une relation d’équivalence.
Preuve :
I symmétrie (u ≡L v ssi v ≡L u) : immédiat.
I réflexivité (u ≡L u) : immédiat.
I transitivité : soit u1 , u2 , u3 ∈ Σ∗ tels que u1 ≡L u2 et u2 ≡L u3 .
Alors, pour tout w ∈ Σ∗ , u1 w ∈ L ssi u2 w ∈ L (car u1 ≡L u2 ), et
u2 w ∈ L ssi u3 w ∈ L (car u2 ≡L u3 ), donc u1 ≡L u3 .
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Théorème de Myhill-Nerode
Rappel : étant donné un mot u ∈ Σ∗ , la classe d’équivalence de u pour
≡L , notée [u]L , est l’ensemble des mots équivalents à u :
∀u ∈ Σ∗ , [u]L = {v ∈ Sigma∗ | u ≡L v }.
On note Σ∗ /≡L l’ensemble quotient de Σ∗ par ≡L , i.e. l’ensemble des
classes d’équivalences.
Théorème
Soit L ⊆ Σ∗ . Alors L est reconnaissable par un automate si et seulement
si Σ∗ /≡L est un ensemble fini.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Théorème de Myhill-Nerode
Rappel : étant donné un mot u ∈ Σ∗ , la classe d’équivalence de u pour
≡L , notée [u]L , est l’ensemble des mots équivalents à u :
∀u ∈ Σ∗ , [u]L = {v ∈ Sigma∗ | u ≡L v }.
On note Σ∗ /≡L l’ensemble quotient de Σ∗ par ≡L , i.e. l’ensemble des
classes d’équivalences.
Théorème
Soit L ⊆ Σ∗ . Alors L est reconnaissable par un automate si et seulement
si Σ∗ /≡L est un ensemble fini.
Exemple : Avec le langage PAIR, on a exactement deux classes
d’équivalences :
{a, b}∗ /≡PAIR
=
=
{{, aa, aba, baa, aaaa, . . .}, {a, ab, ba, aaa, aaba, baaba, . . .}}
{[]≡PAIR , [a]≡PAIR }
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Application du Théorème de Myhill-Nerode
On note an = aa . . . a (n fois), avec a0 = .
Prenons le langage suivant :
L = {an b n | n ≥ 0}
I
Pour tout i 6= j ≥ 0, ai 6≡L aj . En effet, il suffit de prendre w = b i ,
et on a ai b i ∈ L mais aJ b i 6∈ L, car i 6= j.
I
Conséquence : {a, b}∗ /≡L est infini, donc L n’est reconnaissable par
aucun automate.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Automate Quotient
Soit L ⊆ Σ∗ un langage reconnaissable par un automate. Donc Σ∗ /≡L est
un ensemble fini.
Définition
L’automate quotient de L est l’automate complet AL = (Q, q0 , F , δ) où
I
Q = Σ∗ /≡L est l’ensemble des états,
I
q0 = []L est l’état initial,
I
F = {[u]L | u ∈ L} sont les états finaux,
I
δ est la fonction de transition définie par δ([u]L , a) = [ua]L .
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Automate Quotient
Soit L ⊆ Σ∗ un langage reconnaissable par un automate. Donc Σ∗ /≡L est
un ensemble fini.
Définition
L’automate quotient de L est l’automate complet AL = (Q, q0 , F , δ) où
I
Q = Σ∗ /≡L est l’ensemble des états,
I
q0 = []L est l’état initial,
I
F = {[u]L | u ∈ L} sont les états finaux,
I
δ est la fonction de transition définie par δ([u]L , a) = [ua]L .
Ainsi, l’automate quotient est initialisé à la classe du mot , puis, s’il lit
un a, va dans la classe de a, puis s’il lit un b va dans la classe de ab, etc.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Automate Quotient
Soit L ⊆ Σ∗ un langage reconnaissable par un automate. Donc Σ∗ /≡L est
un ensemble fini.
Définition
L’automate quotient de L est l’automate complet AL = (Q, q0 , F , δ) où
I
Q = Σ∗ /≡L est l’ensemble des états,
I
q0 = []L est l’état initial,
I
F = {[u]L | u ∈ L} sont les états finaux,
I
δ est la fonction de transition définie par δ([u]L , a) = [ua]L .
Ainsi, l’automate quotient est initialisé à la classe du mot , puis, s’il lit
un a, va dans la classe de a, puis s’il lit un b va dans la classe de ab, etc.
Il reste à démontrer que la fonction δ est bien définie, i.e. que c’est bien
une fonction. Autrement dit, il faut démontrer que sa définition ne
dépend pas du choix de u.
Lemme
Pour tout u, v ∈ Σ∗ et a ∈ Σ, on a u ≡L v =⇒ ua ≡L va.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Automate quotient
Lemme
Pour tout u, v ∈ Σ∗ et a ∈ Σ, on a u ≡L v =⇒ ua ≡L va.
Preuve. Comme u ≡L v , on sait que pour tout w ∈ Σ∗ , uw ∈ L ssi
vw ∈ L.
On veut démontrer que pour tout w 0 ∈ Σ∗ , on a uaw 0 ∈ L ssi vaw 0 ∈ L.
Soit un tel w 0 , alors en appliquant l’hypothèse avec w = aw 0 , on obtient
ce qu’on veut.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Automate Quotient
Théorème
Soit L ⊆ Σ∗ . L’automate quotient AL est le plus petit automate complet
(en nombre d’états) qui reconnaı̂t L, et il est unique (modulo renommage
des états).
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Exemples d’automates quotients
I
Avec L = PAIR, on avait exactement deux classes, []L et [a]L . On
peut vérifier que [b]L = []L , donc δ([]L , b) = []L . On a aussi
δ([]L , a) = [a]L . On a [ab]L = [a]L , donc δ([a]L , b) = [a]L . Enfin
δ([a]L , a) = []L . Finalement, []L ∈ F car ∈ L, et [a]L 6∈ F car
a 6∈ L.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Exemples d’automates quotients
I
Avec L = PAIR, on avait exactement deux classes, []L et [a]L . On
peut vérifier que [b]L = []L , donc δ([]L , b) = []L . On a aussi
δ([]L , a) = [a]L . On a [ab]L = [a]L , donc δ([a]L , b) = [a]L . Enfin
δ([a]L , a) = []L . Finalement, []L ∈ F car ∈ L, et [a]L 6∈ F car
a 6∈ L.
I
Avec L = {a, b}∗ , on a u ≡L v pour tout u, v ∈ Σ∗ . Donc
l’automate minimal complet n’a qu’un seul état :
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Idée sur la preuve du théorème
I Pourquoi l’automate quotient pour ≡L est minimal ?
Supposons qu’il y ait un automate complet B avec strictement moins
d’états que AL qui reconnaı̂t L. Nécessairement, il existe deux mots u et
v tels que u 6≡L v tels que B les envoie dans le même état q. Comme
u 6≡L v , il existe aussi un mot w tel que uw ∈ L et vw 6∈ L, ou uw 6∈ L et
vw ∈ L. Prenons le premier cas (l’autre état symétrique). On a alors
uw ∈ L(B), donc à partir de l’état q, il existe une exécution de B sur w
qui va dans un état accepteur. Mais alors, comme B envoie u et v dans
le même état q, le mot vw est aussi accepté par B, donc L(B) 6= L.
Contradiction.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Calcul de l’automate minimal à partir d’un automate
I
I
ce qu’on a vu précédemment ne donne pas un moyen effectif de
calculer l’automate complet minimal pour un langage
nous allons définir une procédure qui, étant donné un automate
complet A, construite l’automate minimal qui accepte L(A)
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Calcul de l’automate minimal à partir d’un automate
I
I
ce qu’on a vu précédemment ne donne pas un moyen effectif de
calculer l’automate complet minimal pour un langage
nous allons définir une procédure qui, étant donné un automate
complet A, construite l’automate minimal qui accepte L(A)
Définition
Soit A = (Q, q0 , F , δ) un automate complet sur un alphabet Σ. Pour tout
mot u ∈ Σ∗ , pour tout état q ∈ Q, on note :
I
q · u l’état atteint par A après lecture de u à partir de q (il existe car
A est complet)
I
Lq le langage formé des mots u tels que q · u ∈ F , i.e.
Lq = {u ∈ Σ∗ | q · u ∈ F } est le langage des mots acceptés à partir
de q.
I
pour tout p, q ∈ Q, p ≡A q si Lp = Lq .
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Calcul de l’automate minimal à partir d’un automate
I
I
ce qu’on a vu précédemment ne donne pas un moyen effectif de
calculer l’automate complet minimal pour un langage
nous allons définir une procédure qui, étant donné un automate
complet A, construite l’automate minimal qui accepte L(A)
Définition
Soit A = (Q, q0 , F , δ) un automate complet sur un alphabet Σ. Pour tout
mot u ∈ Σ∗ , pour tout état q ∈ Q, on note :
I
q · u l’état atteint par A après lecture de u à partir de q (il existe car
A est complet)
I
Lq le langage formé des mots u tels que q · u ∈ F , i.e.
Lq = {u ∈ Σ∗ | q · u ∈ F } est le langage des mots acceptés à partir
de q.
I
pour tout p, q ∈ Q, p ≡A q si Lp = Lq .
Remarques : Lq0 =
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Calcul de l’automate minimal à partir d’un automate
I
I
ce qu’on a vu précédemment ne donne pas un moyen effectif de
calculer l’automate complet minimal pour un langage
nous allons définir une procédure qui, étant donné un automate
complet A, construite l’automate minimal qui accepte L(A)
Définition
Soit A = (Q, q0 , F , δ) un automate complet sur un alphabet Σ. Pour tout
mot u ∈ Σ∗ , pour tout état q ∈ Q, on note :
I
q · u l’état atteint par A après lecture de u à partir de q (il existe car
A est complet)
I
Lq le langage formé des mots u tels que q · u ∈ F , i.e.
Lq = {u ∈ Σ∗ | q · u ∈ F } est le langage des mots acceptés à partir
de q.
I
pour tout p, q ∈ Q, p ≡A q si Lp = Lq .
Remarques : Lq0 = L,
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Calcul de l’automate minimal à partir d’un automate
I
I
ce qu’on a vu précédemment ne donne pas un moyen effectif de
calculer l’automate complet minimal pour un langage
nous allons définir une procédure qui, étant donné un automate
complet A, construite l’automate minimal qui accepte L(A)
Définition
Soit A = (Q, q0 , F , δ) un automate complet sur un alphabet Σ. Pour tout
mot u ∈ Σ∗ , pour tout état q ∈ Q, on note :
I
q · u l’état atteint par A après lecture de u à partir de q (il existe car
A est complet)
I
Lq le langage formé des mots u tels que q · u ∈ F , i.e.
Lq = {u ∈ Σ∗ | q · u ∈ F } est le langage des mots acceptés à partir
de q.
I
pour tout p, q ∈ Q, p ≡A q si Lp = Lq .
Remarques : Lq0 = L, ∈ Lq pour tout q ∈ F .
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Calcul de l’automate minimal à partir d’un automate
I
I
ce qu’on a vu précédemment ne donne pas un moyen effectif de
calculer l’automate complet minimal pour un langage
nous allons définir une procédure qui, étant donné un automate
complet A, construite l’automate minimal qui accepte L(A)
Définition
Soit A = (Q, q0 , F , δ) un automate complet sur un alphabet Σ. Pour tout
mot u ∈ Σ∗ , pour tout état q ∈ Q, on note :
I
q · u l’état atteint par A après lecture de u à partir de q (il existe car
A est complet)
I
Lq le langage formé des mots u tels que q · u ∈ F , i.e.
Lq = {u ∈ Σ∗ | q · u ∈ F } est le langage des mots acceptés à partir
de q.
I
pour tout p, q ∈ Q, p ≡A q si Lp = Lq .
Remarques : Lq0 = L, ∈ Lq pour tout q ∈ F . Pensez-vous que ≡A est
une relation d’équivalence ?
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Calcul de l’automate minimal à partir d’un automate
I
I
ce qu’on a vu précédemment ne donne pas un moyen effectif de
calculer l’automate complet minimal pour un langage
nous allons définir une procédure qui, étant donné un automate
complet A, construite l’automate minimal qui accepte L(A)
Définition
Soit A = (Q, q0 , F , δ) un automate complet sur un alphabet Σ. Pour tout
mot u ∈ Σ∗ , pour tout état q ∈ Q, on note :
I
q · u l’état atteint par A après lecture de u à partir de q (il existe car
A est complet)
I
Lq le langage formé des mots u tels que q · u ∈ F , i.e.
Lq = {u ∈ Σ∗ | q · u ∈ F } est le langage des mots acceptés à partir
de q.
I
pour tout p, q ∈ Q, p ≡A q si Lp = Lq .
Remarques : Lq0 = L, ∈ Lq pour tout q ∈ F . Pensez-vous que ≡A est
une relation d’équivalence ? oui.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Equivalence entre états, et équivalence entre mots
Proposition
Soit A un automate complet. Alors pour tout u, v ∈ Σ∗ , u ≡L(A) v ssi
q0 · u ≡A q0 · v .
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Equivalence entre états, et équivalence entre mots
Proposition
Soit A un automate complet. Alors pour tout u, v ∈ Σ∗ , u ≡L(A) v ssi
q0 · u ≡A q0 · v .
Preuve
I
supposons que u ≡L(A) v , alors soit p = q0 · u et q = q0 · v . On veut
démontrer que p ≡A q, i.e. Lp = Lq . Soit w ∈ Lp . On a donc
uw ∈ L, donc par hypothèse, vw ∈ L, donc w ∈ Lq . La réciproque
est symétrique.
I
supposons que p = q0 · u ≡A q0 · v = q. Alors Lp = Lq . On veut
démontrer que u ≡L(A) v . Soit w ∈ Σ∗ tel que uw ∈ L(A), alors
w ∈ Lp , donc w ∈ Lq , donc vw ∈ L(A). La réciproque est
symétrique.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Equivalence entre états, et équivalence entre mots
Proposition
Soit A un automate complet. Alors pour tout u, v ∈ Σ∗ , u ≡L(A) v ssi
q0 · u ≡A q0 · v .
Cette proposition suggère qu’il existe une bijection φ de Σ∗ /≡L(A) vers
Q/≡A . En effet, et elle est donnée par φ([u]L(A) ) = [q0 · u]≡A , où
[q0 · u]≡A est la classe de l’état q0 · u.
=⇒ les états de l’automate minimal sont les classes d’équivalence, pour
≡A de Q.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Calcul de l’automate minimal à partir d’un automate
I
il suffit de calculer les classes d’équivalences de Q pour ≡A , ce qui
donnera les états
I
la classe de q0 est l’état initial
I
toute classe qui contient un état final est finale (en fait, si une classe
contient un état final, alors tous ces états sont finaux)
I
on met une transition de l’état [q]≡A à l’état [q · a]≡A en lisant a,
pour tout a ∈ Σ, et tout q ∈ Q.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Calcul de l’automate minimal à partir d’un automate
I
il suffit de calculer les classes d’équivalences de Q pour ≡A , ce qui
donnera les états
I
la classe de q0 est l’état initial
I
toute classe qui contient un état final est finale (en fait, si une classe
contient un état final, alors tous ces états sont finaux)
I
on met une transition de l’état [q]≡A à l’état [q · a]≡A en lisant a,
pour tout a ∈ Σ, et tout q ∈ Q.
La fonction de transition est-elle bien définie ? Autrement dit, est-elle
indépendante du choix du représentant dans la classe ?
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Calcul de l’automate minimal à partir d’un automate
I
il suffit de calculer les classes d’équivalences de Q pour ≡A , ce qui
donnera les états
I
la classe de q0 est l’état initial
I
toute classe qui contient un état final est finale (en fait, si une classe
contient un état final, alors tous ces états sont finaux)
I
on met une transition de l’état [q]≡A à l’état [q · a]≡A en lisant a,
pour tout a ∈ Σ, et tout q ∈ Q.
La fonction de transition est-elle bien définie ? Autrement dit, est-elle
indépendante du choix du représentant dans la classe ? oui
Proposition
Si p ≡A q, alors p · a ≡A q · a pour tout a ∈ Σ.
Preuve : Si p ≡A q, alors Lp = Lq par définition. Soit a ∈ Σ. Soit
p 0 = p · a et q 0 = q · a. Soit w ∈ Lp0 , alors aw ∈ Lp , donc aw ∈ Lq , donc
w ∈ Lq0 . La réciproque est symétrique.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Exemples de calcul de l’automate minimal à partir d’un
automate
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Exemples de calcul de l’automate minimal à partir d’un
automate
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Exemples de calcul de l’automate minimal à partir d’un
automate
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Exemples de calcul de l’automate minimal à partir d’un
automate
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Exemples de calcul de l’automate minimal à partir d’un
automate
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
Exemples de calcul de l’automate minimal à partir d’un
automate
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Minimisation
En pratique ...
I
pour décider si p ≡A q, on peut tester l’équivalence de l’automate A
où on remplace l’état initial par p, et de l’automate A où on
remplace l’état initial par q ;
I
en pratique ce n’est pas très efficace, et on peut faire mieux, sans
passer par le test d’équivalence, et par raffinement successif de
relations d’équivalence qui convergent vers ≡A . Cela est même
possible en O(n.log2 n) où n est le nombre d’états de l’automate.
I
cette dernière méthode, non abordée dans le cours, donne aussi une
autre façon de tester l’équivalence de deux automates A et B :
construire l’automate minimal pour L(A), l’automate minimal pour
L(B), et tester qu’ils sont égaux (à renommage des états près).
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Expressions Rationnelles
Expressions Rationnelles
Définition
Une expression rationnelle E sur un alphabet Σ est une expression qui
respecte la grammaire suivante :
E ::= | a | ∅ | (E + E ) | (E .E ) | E ∗
pour tout a ∈ Σ.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Expressions Rationnelles
Expressions Rationnelles
Définition
Une expression rationnelle E sur un alphabet Σ est une expression qui
respecte la grammaire suivante :
E ::= | a | ∅ | (E + E ) | (E .E ) | E ∗
pour tout a ∈ Σ.
Exemple : ((a + b)∗ .a)
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Expressions Rationnelles
Autres opérations sur les langages
Afin de donner une sémantique en terme de langage aux expressions
rationnelles, nous définissons des nouvelles opérations :
Définition
Soient L, L1 , L2 ⊆ Σ∗ trois langages. Alors
I
L1 .L2 = {u1 u2 | u1 ∈ L1 ∧ u2 ∈ L2 } (on écrira aussi L1 L2 )
I
L∗ = {u n | u ∈ L ∧ n ≥ 0} (en particulier ∈ L∗ si L 6= ∅)
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Expressions Rationnelles
Autres opérations sur les langages
Afin de donner une sémantique en terme de langage aux expressions
rationnelles, nous définissons des nouvelles opérations :
Définition
Soient L, L1 , L2 ⊆ Σ∗ trois langages. Alors
I
L1 .L2 = {u1 u2 | u1 ∈ L1 ∧ u2 ∈ L2 } (on écrira aussi L1 L2 )
I
L∗ = {u n | u ∈ L ∧ n ≥ 0} (en particulier ∈ L∗ si L 6= ∅)
Exemples : Si L1 = PAIR, alors L1 L1 = L1 . Si L1 = {a, b} et
L2 = {a, bb}, alors L1 L2 = {aa, abb, ba, bbb}. Si L = {a}, alors
L∗ = {an | n ≥ 0}.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Expressions Rationnelles
Sémantique des expressions rationnelles
Définition
La sémantique d’une expression rationnelle E sur Σ est donnée par un
langage, noté L(E ), défini inductivement par :
I
L() = {},
I
L(a) = {a} pour tout a ∈ Σ,
I
L(∅) = ∅,
I
L((E1 + E2 )) = L(E1 ) ∪ L(E2 ),
I
L((E1 .E2 )) = L(E1 ).L(E2 ),
I
L(E ∗ ) = L(E )∗ .
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Expressions Rationnelles
Sémantique des expressions rationnelles
Définition
La sémantique d’une expression rationnelle E sur Σ est donnée par un
langage, noté L(E ), défini inductivement par :
I
L() = {},
I
L(a) = {a} pour tout a ∈ Σ,
I
L(∅) = ∅,
I
L((E1 + E2 )) = L(E1 ) ∪ L(E2 ),
I
L((E1 .E2 )) = L(E1 ).L(E2 ),
I
L(E ∗ ) = L(E )∗ .
On pourra omettre les parenthèses dans les expressions régulières lorsque
cela est possible.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Expressions Rationnelles
Exemples
Sur Σ = {a, b}.
I
L((a + b)∗ a(a + b)∗ ) est
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Expressions Rationnelles
Exemples
Sur Σ = {a, b}.
I
L((a + b)∗ a(a + b)∗ ) est l’ensemble des mots qui contiennent au
moins un a,
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Expressions Rationnelles
Exemples
Sur Σ = {a, b}.
I
L((a + b)∗ a(a + b)∗ ) est l’ensemble des mots qui contiennent au
moins un a,
I
L((b ∗ ab ∗ ab ∗ )∗ ) =
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Expressions Rationnelles
Exemples
Sur Σ = {a, b}.
I
L((a + b)∗ a(a + b)∗ ) est l’ensemble des mots qui contiennent au
moins un a,
I
L((b ∗ ab ∗ ab ∗ )∗ ) = PAIR,
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Expressions Rationnelles
Exemples
Sur Σ = {a, b}.
I
L((a + b)∗ a(a + b)∗ ) est l’ensemble des mots qui contiennent au
moins un a,
I
L((b ∗ ab ∗ ab ∗ )∗ ) = PAIR,
I
L(aa∗ ) est
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Expressions Rationnelles
Exemples
Sur Σ = {a, b}.
I
L((a + b)∗ a(a + b)∗ ) est l’ensemble des mots qui contiennent au
moins un a,
I
L((b ∗ ab ∗ ab ∗ )∗ ) = PAIR,
I
L(aa∗ ) est l’ensemble des mots qui ne contiennent que des a, et au
moins un
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Expressions Rationnelles
Exemples
Sur Σ = {a, b}.
I
L((a + b)∗ a(a + b)∗ ) est l’ensemble des mots qui contiennent au
moins un a,
I
L((b ∗ ab ∗ ab ∗ )∗ ) = PAIR,
I
L(aa∗ ) est l’ensemble des mots qui ne contiennent que des a, et au
moins un
I
L(a∗ b ∗ ) est
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Expressions Rationnelles
Exemples
Sur Σ = {a, b}.
I
L((a + b)∗ a(a + b)∗ ) est l’ensemble des mots qui contiennent au
moins un a,
I
L((b ∗ ab ∗ ab ∗ )∗ ) = PAIR,
I
L(aa∗ ) est l’ensemble des mots qui ne contiennent que des a, et au
moins un
I
L(a∗ b ∗ ) est l’ensemble des mots qui sont des séquences de a suivies
des séquences de b.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Expressions Rationnelles
Exemples
Sur Σ = {a, b}.
I
L((a + b)∗ a(a + b)∗ ) est l’ensemble des mots qui contiennent au
moins un a,
I
L((b ∗ ab ∗ ab ∗ )∗ ) = PAIR,
I
L(aa∗ ) est l’ensemble des mots qui ne contiennent que des a, et au
moins un
I
L(a∗ b ∗ ) est l’ensemble des mots qui sont des séquences de a suivies
des séquences de b.
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Expressions Rationnelles
Théorème dit de Kleene
Théorème
La classe des langages définissables par automates, et la classe des
langages définissables par expressions rationnelles, sont les mêmes.
Autrement dit, si L ⊆ Σ∗ est un langage, alors il existe un automate A tel
que L = L(A) ssi il existe une expression rationnelle E telle que L = L(E ).
INFO-F-302, Cours d’Informatique Fondamentale
Définitions et Exemples
Expressions Rationnelles
Théorème dit de Kleene
Théorème
La classe des langages définissables par automates, et la classe des
langages définissables par expressions rationnelles, sont les mêmes.
Autrement dit, si L ⊆ Σ∗ est un langage, alors il existe un automate A tel
que L = L(A) ssi il existe une expression rationnelle E telle que L = L(E ).
Ce théorème est effectif : il existe un algorithme qui transforme tout
automate en expression rationnelle, et un algorithme qui transforme toute
expression rationnelle en automate (ce qui donne d’ailleurs un algorithme
pour étant donné un mot décide si ce dernier est dans le langage de
l’expression rationnelle).
Téléchargement