Vous êtes sur la page 1sur 62

Chapitre 1

Automates finis et langages réguliers


Qu’essaie-t-on de faire?
1.  Formaliser la notion de calcul
automatique.
2.  Raisonner à propos de la puissance et
des limites d’un modèle de calcul
donné.

2
Qu’est-ce qu’un calcul?

Machine
Entrée Sortie
Effectuant une tâche
(Données) de calcul
(algorithmme)

Il nous reste à spécifier


1.  Quel type de données la machine reçoit-elle en entrée?
2.  Quel types de données la machine fournit-elle en sortie?
3.  Quelles opérations la machine peut-elle effectuer?

3
Un autre point de vue
•  On s’intéressera aussi aux systèmes
permettant de spécifier de façon
automatique certaines chaînes de
caractères.

4
Alphabet
•  Définition : Un alphabet est un ensemble
fini non vide de symboles. Souvent dénoté
par Σ.
•  Exemple : Σ = {a, b, c}.
•  Un caractère et un symbole sont des
synonymes.
•  Une chaîne, une séquence ou une suite de
caractères sont des synonymes. On peut
aussi utiliser le terme « mot ».
5
Exemples

•  Les caractères ASCII forme un alphabet


de 256 lettres.
•  {a,b,c} est un alphabet.
•  {0,1} est l’alphabet binaire.
•  L’ensemble N n’est pas un alphabet.
•  1100 est un mot ou une chaîne de
l’alphabet binaire.
6
Notations
•  La séquence ne contenant aucun symbole,
également appelée séquence vide, fait partie
des séquences de symboles. Elle est
également dénotée λ.
•  La concaténation de deux séquences s1 et s2
notée s1s2 est une séquence composée de
tous les symboles de s1 suivis de ceux de s2.
•  λs = s λ= s.
7
Définition
•  Soit Σ un alphabet. On dénote par Σ*
l’ensemble de toutes les séquences finies de
symboles de Σ.
•  NB : la séquence vide appartient à Σ* pour
tout alphabet Σ.
•  Exemple : Si Σ = {a,b,c} alors
Σ* = {λ,a,b, c, aa, ab, ac, …, aaa, aab, aac,
…,aaaa, aaab, aaac, …}.
8
Remarque
•  Le symbole * représente un opérateur
unaire, l’opérateur de Kleene, qui, appliqué
à un alphabet Σ, donne un ensemble infini
Σ* de toutes les séquences finies de
symboles de cet alphabet. On dit que Σ* est
la fermeture de l’alphabet Σ.
•  La fermeture d’un alphabet est un ensemble
infini mais dénombrable.
9
Notation
•  Soient Σ un alphabet quelconque, s ∈ Σ* et
n ∈ N. Alors, sn = s…s
n fois
•  Exemple :
a4 = aaaa.
(mn)2t3 = mnmnttt.

10
•  Les exposants permettent de décrire certains
ensembles de manière concise.

Exemple
L’ensemble {amban : m∈N∧ n∈N} est l’ensemble des
séquences ayant un seul b, précédé et suivi d’un nombre
quelconque de a. Le nombre de a qui précède ce b n’est pas
nécessairement le même que celui qui suit.

11
Définition
•  La longueur d’une séquence finie w, notée |
w|, est le nombre de symboles qu’elle
contient.
•  Exemple: Soit Σ = {a, b, c}.
–  |a| = 1,
–  |abc| = 3,
–  |aaa| = 3.

12
Similarité entre Σ* et ℘(Σ)
•  Il y a une certaine similarité entre Σ* et
℘(Σ) mais ces ensembles sont bien
différents.
•  Par exemple:
–  ℘({a}) = {∅, {a}} est fini.
–  {a}* = { λ,a, aa, aaa, aaaa, aaaaa, ... } est infini.

13
Langages
•  Un langage sur un alphabet Σ est un sous-
ensemble de l ’ensemble Σ*.
•  Exemple: Soit l ’alphabet Σ = {a, b, c}. Les
ensembles suivants sont des langages sur Σ:
–  L = {a, b, aa, abc, abbc }.
–  P = { λ, a, aa, aaa, ...}.

14
Remarques sur les langages
•  Un langage peut être fini ou infini.
•  Un langage peut contenir la séquence vide
ou ne pas la contenir.
•  Les séquences d’un langage sont toujours
finies (par définition de Σ*).

15
Remarque sur les langages
•  L’ensemble de tous les langages sur un
alphabet Σ est ℘(Σ*).
•  Comme Σ* est infini et que
•  |Σ*| < |℘(Σ*)|, on voit que l’ensemble des
langages sur un alphabet donné est non
dénombrable.

16
Pourquoi s’intéresser aux langages
•  Considérons des machines M dont les entrées
sont un mot d’un alphabet Σ et dont la sortie
est toujours 0 ou 1. On peut aussi dire que la
machine accepte ou rejette son entrée.
•  L’ensemble des mots acceptés par M est un
langage que l’on notera L(M).
•  En quelque sorte, c’est l’objet fondamental
d’étude en informatique.

17
Diagrammes de transitions
•  Un diagramme de transitions est une
collection finie d’états (cercles) et de
transitions (arcs orientés) telle que:
–  Chaque état peut être étiqueté.
–  Il y a un seul état initial (une petite flèche le
pointe).
–  Les cercles doubles sont les états finaux
(accepteurs). Il peut y en avoir plusieurs.

18
–  Chaque transition relie deux états, pas
obligatoirement différents.
–  Chaque transition est étiquetée par un symbole
d’un alphabet associé au diagramme.

19
Exemple
•  Diagramme de transitions dont l’alphabet
est Σ = {a, b}.
•  Ensemble des états = {1, 2, 3, 4}.
a
3
a b
a
1 2 État initial: 1
b b
État final: 4

4
20
Notation
•  On peut utiliser certaines abréviations pour
ne pas surcharger inutilement un
diagramme.
–  Au lieu d’utiliser plusieurs arcs entre deux
états, on en utilise un seul et on empile les
étiquettes l’une au-dessus de l’autre.

a
a b
b
21
–  L’étiquette abc est la séquence des transitions
a, b et c.

a b c
1 2 3 4

devient

abc
1 4

22
–  Le diagramme de transitions suivant est associé
à l’alphabet Σ = ensemble des caractères
ASCII.
Ses transitions sont étiquetées par des symboles
spéciaux (lettre, chiffre) qui représentent des
sous-ensembles de Σ:
•  lettre = {a, …, z, A, …,Z}
•  chiffre = {0, …, 9}
lettre
chiffre lettre
2 1 3
chiffre
Il représente un identificateur dans plusieurs langages
de programmation.
23
Exercice
–  La figure ci-dessous est un diagramme de
transitions associé à l’alphabet Σ = {a, b}, et
n’ayant pas toutes les caractéristiques exigées.
Énumérer celles qui ne sont pas respectées.
b
2

abb

1 2

R: Il y a plus d’un état initial.


Une transition n’est pas étiquetée.
Deux états ont la même étiquette. 24
Remarque
•  Dans le cas où il y a au plus une transition
étiquetée t qui quitte un état donné s dans un
diagramme de transitions, on peut construire
une représentation tabulaire de ce
diagramme.
•  Cette représentation pourra être utilisée par
un algorithme.

25
Remarque
•  Le diagramme suivant ne respecte pas la
condition mentionnée auparavant puisque
deux transitions étiquetées b quittent
l’état 2: a
3
a b
a
1 2
b b

4
26
Définition
•  Une table de transitions associée à un
diagramme de transitions est une matrice à
deux dimensions telle que:
–  La matrice a une ligne pour chaque état du
diagramme.
–  Elle a une colonne pour chaque symbole utilisé
comme étiquette d’un arc du diagramme.

27
Définition(suite)
–  L’entrée de la nième ligne et de la mième colonne
est l’état atteint dans le diagramme de
transitions en quittant l’état n par l’arc dont
l’étiquette est celle de la colonne m. Si un tel
état n’existe pas, l’entrée contient le mot
ERREUR.
–  On ajoute une colonne indicée par le caractère
spécial de fin de séquence FIN. Une entrée de
cette colonne est le mot ACCEPTE si
l’état(ligne) est final ou ERREUR sinon.

28
Exemple
•  Voici un diagramme de transitions et la
table de transitions qui lui est associée:
lettre
chiffre lettre
2 1 3
chiffre
Lettre Chiffre FIN

1 3 2 ERREUR
2 ERREUR ERREUR ERREUR
3 3 3 ACCEPTE
29
Exercice
•  D’après la table de transitions suivante,
quelle transition doit être effectuée à
l’obtention d’un chiffre dans l’état 2?
Lettre Chiffre FIN

1 3 2 ERREUR

2 ERREUR ERREUR ERREUR


3 3 3 ACCEPTE

Réponse: Aucune transition n’est possible à


partir de l’état 2 car la ligne 2 contient
seulement des entrées ERREUR.
30
Analyseur lexical
–  Voici l’analyseur lexical (sous forme algorithmique) venant
de la table de transitions précédente:
–  État:=1;
Répéter
Lire le symbole d’entrée suivant et le mettre
dans la variable Symbole;
Dans le cas où Symbole est
une lettre: Lu:=« lettre »;
un chiffre:Lu:=« chiffre »;
FIN: Lu:=« FIN »;
Autre: État:=« ERREUR »;
Si État ≠ « ERREUR » alors État:=Table[État,Lu];
jusqu’à ce que État = « ACCEPTE » ou État=« ERREUR ».

31
Remarque
•  Cet algorithme peut facilement se généraliser à
des diagrammes de transitions plus complexes.
•  Lorsqu’il termine dans l’état ACCEPTE, on dit
que la séquence d’entrée est acceptée ou
reconnue.
•  Une séquence acceptée correspond à une suite
d’étiquettes menant de l’état initial à un état final.

32
Automates finis déterministes
•  Premier modèle de calcul que nous allons
étudier.
•  Simple (voire primitif)
•  Facile à comprendre et à étudier
•  Permet de modéliser un grand nombre de
systèmes.

33
Définition
•  Un diagramme de transitions avec un
alphabet Σ est dit complètement défini si,
pour chaque symbole s ∈ Σ et chaque état e,
il y a au moins une transition étiquetée s qui
quitte e.

34
Exemple
•  Diagramme complètement défini, sur l’alphabet Σ =
{a,b} :

a
a
2 3 b

a b
b
1

35
Définition
•  Un diagramme de transitions avec un
alphabet Σ est dit non ambigu si, pour
chaque état et chaque symbole s ∈ Σ, il
existe au plus une transition quittant e et
étiquetée s.

36
Définition
•  Un diagramme de transitions déterministe
par rapport à un alphabet donné est un
diagramme complètement défini et non
ambigu.

37
Exemple
•  Le diagramme ci-dessous, dont l’alphabet
est Σ = {a, b}, n’est pas déterministe car il
n’est pas complètement défini.

b
a
a
1 3

38
Remarque
•  Pour rendre déterministe un diagramme de
transitions non ambigu, on peut procéder
comme suit:
–  On ajoute un état non final (état poubelle) au
diagramme.
–  Pour chaque symbole de l’alphabet, on ajoute
un arc qui part de l’état poubelle et qui se rend
à ce même état.
–  On ajoute des arcs qui partent des autres états et
qui se rendent à l’état poubelle, si nécessaire,
jusqu’à ce que le diagramme de transitions soit
complètement défini.
39
Exemple
Alphabet Σ = {1, 0}

0
1
2 0
2 4

1 1 1 1
0 0
0 0
1 3 1 3

40
Exercice
•  Rendre déterministe le diagramme suivant.
L’alphabet est Σ = {a,b}.
a
b
s4
s0 b a
a
s0 s1 a
a a b b
s2 s3
b a
b s2 s3
s1 b

41
Définition
•  Un automate fini déterministe consiste en
un quintuple de la forme (S, Σ, δ, ι, F) où:
–  S est un ensemble fini d’états.
–  Σ est l’alphabet de l’automate.
–  δ est une fonction (appelée fonction de
transition) de S× Σ dans S.
–  ι ∈ S est l’état initial.
–  F ⊆ S est l’ensemble des états finaux (ou
accepteurs ou acceptants).
42
Exemple

•  Le quintuple ({A, B, C}, {a, b, c}, δ, A, {A, B})


où la fonction
•  δ: {A, B, C}×{a, b, c}→{A, B, C} est définie par
δ(A, a) = B δ(A, b) = C δ(A, c) = A
δ(B, a) = A δ(B, b) = B δ(B, c) = C
δ(C, a) = A δ(C, b) = B δ(C, c) = C,

est un automate.
43
•  Cet automate a:
–  un ensemble d’états {A, B, C},
–  un alphabet {a, b, c},
–  une fonction de transtion δ,
–  un état initial A,
–  un ensemble d’états finaux {A, B}.

44
•  Diagramme de transitions de l’automate.
c
C
a
c b b c
b
a
A a B

On aurait pu définir δ comme suit:


δ = { ((A, a), B), ((A, b), C), ((A, c), A),
((B, a), A), ((B, b), B), ((B, c), C),
((C, a), A), ((C, b), B), ((C, c), C)}
45
Exercice
–  Donner le diagramme de transitions de l’automate
suivant:
({0, 1, 2, 3}, {f, g, h}, δ , 0, {2}) où δ est définie par
δ(0, f) = 3 δ(0, g) = 1 δ(0, h) = 1
δ(1, f) = 1 δ(1, g) = 2 δ(1, h) = 3
δ(2, f) = 0 δ(2, g) = 3 δ(2, h) = 3
δ(3, f) = 3 δ(3, g) = 3 δ(3, h) = 3.

f
g
3
f h
R: h
g g
0 h 1 h
g
f
f 2
46
Exercice
–  Soit Σ = {a, b}. Donner l’automate correspondant
au diagramme de transition ci-dessous. a
b
a
2 4
b
b b
a
a
1 3

R:({1, 2, 3, 4}, {a, b}, δ, 1, {2})


où δ = {((1, b), 2), ((1, a), 3), ((2, a), 4), ((2, b), 4),
((3, a), 3), ((3, b), 4), ((4, a), 4), ((4, b), 4)}.
47
Remarque
•  Un diagramme de transitions n’est pas un
automate; il n’est que la représentation de
la fonction de transition de l’automate.
•  Malgré cela, nous dirons souvent d’un
diagramme de transitions est un automate à
cause du lien direct entre les deux.

48
Automate fini déterministe
•  Un automate fini déterministe possède les
caractéristiques suivantes:
–  Pour chaque couple (p, x) ∈ S×Σ, il existe un et un seul
q tel que δ(p, x) = q. (déf. d ’une fonction)
–  À tout automate fini déterministe correspond un
diagramme de transitions déterministe
(parce que δ est totale et non ambiguë).
–  Le qualificatif “fini” signifie que l’automate possède
un nombre fini d’états, que son alphabet et que son
ensemble de transitions sont finis.

49
Machine à ruban
•  On peut voir un automate comme une
machine avec un ruban contenant une
séquence de symboles à analyser, une tête
de lecture et un mécanisme de contrôle qui
peut changer d’état.

x1 x2 ... xn Ruban
...

Direction de la tête de lecture:

Mécanisme de contrôle et indicateur d’état


50
•  Le ruban est divisé en cases et est infini vers
la droite. La séquence finie à analyser est
placée au début du ruban. La tête de lecture
pointe le prochain symbole à lire.
Initialement, elle est sur la case la plus à
gauche.
•  Les symboles sont analysés
séquentiellement, i.e. l’un après l’autre, en
commençant par la gauche.

51
•  Le mécanisme de contrôle choisit un nouvel
état à partir de l’état actuel et du symbole
lu.
•  L’automate accepte la séquence d’entrée si
et seulement si la transition effectuée lors de
la lecture du dernier symbole l’amène dans
un état final (accepteur).

52
Définition

•  L’automate fini déterministe M = (S, Σ, δ, ι,


F) accepte (ou reconnaît) la séquence
x1x2x3...xn (où n ∈N) si et seulement si il y a
une séquence d’états s0 , s1 , s2 , ... , sn tels que
s0 = ι, sn ∈ F, et pour tout j=1,...,n
δ(sj-1, xj ) = sj.
•  Dans le cas contraire, on dit que l’automate
rejette la séquence.
53
•  Un automate accepte une séquence de
symboles ssi la séquence, lue de gauche à
droite, correspond à une suite d’arcs allant
de l’état initial à un état final (accepteur).

54
Définition
•  Soit M un automate fini déterministe qui a
pour alphabet Σ. L(M) est l’ensemble de
toutes les séquences de symboles reconnues
par l’automate M. Nous dirons que L(M)
est le langage reconnu (ou accepté) par
l’automate fini M.

55
Définition
•  Un langage est dit régulier s’il existe un
automate fini déterministe qui le reconnaît.
•  Une façon de montrer qu’un langage est
régulier est de construire un automate qui
reconnaît ce langage. Il existe d’autres
méthodes que nous verrons plus tard.

56
Exemple
•  Soit M l’automate déterministe décrit par le
diagramme de transitions suivant. Son
alphabet est {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, .}. Le
symbole C remplace n’importe quel chiffre:
C ∈ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.
.
4 C

.
. .
C .
0 1 2 3
C
C C
57
•  Voici une suite de configurations et d’états
de l’automate décrivant l’acceptation de la
séquence 123.45. La tête de lecture est sur
le symbole souligné.
ruban état
123.45 0 .
4 C
123.45 1
. . .
123.45 1
C .
123.45 1 0 1 2 3
C
123.45 2 C C
123.45 3
123.45_ 3 58
•  Le même automate rejette la séquence 88.0.
car il termine à l’état 4 qui n’est pas final.

ruban état .
88.0. 0 4 C

88.0. 1 . . .
88.0. 1 C .
0 1 2 3
88.0. 2 C
C C
88.0. 3
88.0._ 4

59
Exercice
•  Donner les configurations du ruban et les états de
l’automate lors de la lecture des séquences a, b,
aab et aaababb. Dites si les séquences sont
acceptées.
ruban état
a a A a b a
a_ C b b
B D a E
b b A
b_ B b
b
aab aab A a
a
aab C A C
aab C
aab_ D 60
Exercice(suite)

ruban état
a b a
aaababb aaababb A
b b
aaababb C B D E
a
aaababb C
b
aaababb C b
aaababb D a
a
aaababb E A C
aaababb E
aaababb_ E

61
Séquence vide
•  Les conditions d’acceptation d’une
séquence par un automate données
auparavant permettent de dire aussi
comment la séquence vide peut être
acceptée.
•  Si on prend n=0 dans la définition, alors la
séquence d’entrée est la séquence vide et
elle est acceptée si l’état initial est aussi un
état final. Aucune transition n’est faite.
62

Vous aimerez peut-être aussi