Vous êtes sur la page 1sur 66

Langages réguliers ou rationnels

Génération, description et reconnaissance


Plan
Introduction

Les grammaires régulières

Les expressions régulières

Les automates d’états finis

Déterminisation d’un automate d’états finis non

deterministe

2 W.SAADI
Introduction
Une première famille de langages est introduite, la famille des
langages rationnels (réguliers). Cette famille contient en
particulier tous les langages finis, mais également de nombreux
langages infinis
infinis. La caractéristique de tous ces langages est la
possibilité de les décrire par des formules (on dit aussi motifs,
en anglais patterns) très simples. L’utilisation de ces formules,
connues sous le nom d’expressions régulières (rationnelles),
s’est imposée sous de multiples formes comme la « bonne »
manière de décrire des motifs représentant des langages.
3 W.SAADI
Grammaire (rappel)
Les grammaires sont des systèmes de génération de
langages. Elles représentent un moyen qui permet de
décrire un langage d’une manière inductive. Elles
montrent comment les mots du langage sont
construits.

4 W.SAADI
Grammaire régulière
On rappelle qu’une grammaire G = (V, N, S, R) est régulière:

à droite : toutes les règles de production sont de la


forme g → d où g ∈ N et d = aB tel que a ∈ V∗ et B ∈
N ∪ {ε}

à gauche : toutes les règles de production sont de la


forme g → d où g ∈ N et d = Ba tel que a ∈ V∗ et B ∈
N ∪ {ε}

5 W.SAADI
Exemple de grammaire régulière à droite

G1 = (V1, N1, S1, R1) avec

V1 = { a, b }

N1 = { S1, U1 }

R1 = {S1 → aS1| aU1

U1 → bU1 | b }

6 W.SAADI
Exemple de grammaire régulière à gauche

G2 = (V2, N2, S2, R2) avec

V2 = { a, b }

N2 = { S2, U2 }

R2 = {S2 → S2b| U2b

U2 → U2 a | a }

G1 et G2 engendrent le même langage:

L(G1)=L(G2)={anbp/n > 0, p > 0}

7 W.SAADI
Langage régulier ou rationnel (définition 1)

Un langage est régulier si et seulement s’il existe une


grammaire régulière engendrant (générant) ce
langage.

8 W.SAADI
Expression régulière (1)
Une expression régulière est, littéralement, une
présentation formelle d’un langage régulier : elle
définit la forme (ou le motif) qui sert de modèle aux
mots du langage en question.

9 W.SAADI
Expression régulière (1)
Soit Σ un alphabet quelconque ne contenant pas les
symboles {∗,+, |, ., (, )}. Une expression régulière est un
mot défini sur l’alphabet Σ ∪ {∗,+,
∗ |, ., (, )} permettant de
représenter un langage régulier de la façon suivante :
∅ est une expression régulière qui dénote (représente) le
langage vide
L’expression régulière ε dénote le langage L = {ε}
L’expression régulière a (a ∈ Σ) dénote le langage L = {a}

10 W.SAADI
Expression régulière (2)
Si r est une expression régulière qui dénote L alors (r)∗
(respectivement (r)+) est l’expression régulière qui dénote L∗
(respectivement L+)
Si r est une expression régulière dénotant L et s une
expression régulière dénotant L′ alors (r)|(s) est une
expression régulière dénotant L + L′
L’expression régulière (r).(s) (ou simplement (r)(s)) dénote le
langage L.L′

11 W.SAADI
Exemple 1
a∗ : dénote le langage régulier an (n ≥ 0) ;

(a + b)∗ : dénote les mots dans lesquels le symbole a ou b


se répètent un nombre quelconque de fois. Elle dénote
donc le langage de tous les mots sur {a, b} ;

(a+b)∗ab(a+b)∗ : dénote tous les mots sur {a, b} contenant


le facteur ab.

12 W.SAADI
Priorité des operateurs
Afin d’alléger les expressions régulières, on introduit les priorités

suivantes : priorité(*) > priorité(.) > priorité(+)

Les operateurs + et * (l’étoile de Kleen et l’étoile propre) ont

la plus haute priorité.

La concaténation a la deuxième plus haute priorité et est

associative a gauche.

+ ou (|) a la plus faible priorité et est associative a gauche.

13 W.SAADI
Exemple 2
(a) a| ((b)*(c)) equivalent à : a | b*c

(b) L’expression 0+10* est donc équivalente à

(0+(1(0)*)).

14 W.SAADI
Expressions régulières ambiguës
Une expression régulière est dite ambiguë s’il existe au
moins un mot pouvant être mis en correspondance avec
l’expression régulière de plusieurs façons. Cette définition
fait appel à la correspondance entre un mot et une
expression régulière. Il s’agit, en fait, de l’opération qui
permet de dire si le mot appartient au langage décrit par
l’expression régulière.

15 W.SAADI
Exemple 3
prenons l’expression régulière a∗b∗. Soit à décider si le mot
aab est décrit ou non par cette expression. On peut
écrire :

Ainsi, le mot est décrit par cette expression régulière. Il n’y


a qu’une seule façon qui permet de le faire correspondre.
Ceci est valable pour tous les mots de ce langage.
l’expression régulière n’est donc pas ambiguë.

16 W.SAADI
Exemple 4
Considérons l’expression (a|b)∗a(a|b)∗ décrivant tous les
mots sur {a, b} contenant le facteur a. Soit à faire
correspondre le mot aab, on a :

Il existe donc au moins deux façons pour faire correspondre


aab à l’expression précédente, elle est donc ambiguë.

17 W.SAADI
Propriétés sur les expressions régulières
Si p, q et r sont trois expressions régulières alors :

p+q=q+p; (p + ε)*.r = p*.r ;


(p + q) + r = p + (q + r) ; p*.p* = p* = p+ ;
(p.q).r = p.(q.r) ; p* = ε + p.p* ;
p. ∅ = ∅.p
∅ = ∅; ∅ ∅* = ε ;
p. ε = ε.p = p ; (p*) *= p* ;
p + ∅ = ∅ + p =p; (p *+ q*)* = (p + q)* = (p*.q*)*
p*.p = p.p* ;

18 W.SAADI
Langage régulier ou rationnel (définition 2)
Un langage est dit régulier si et seulement s’il est dénoté
(représenté) par une expression régulière.
La correspondance entre expression et langage n’est pas
biunivoque : chaque expression dénote un unique langage,
mais à un langage donné peuvent correspondre plusieurs
expressions différentes.
Ainsi, les deux expressions suivantes : a*(a*ba*ba*)* et
a*(ba*ba*)* sont deux variantes notationnelles du même
langage sur l’alphabet {a, b}.
19 W.SAADI
Expressions équivalentes

Deux expressions régulières sont équivalentes si elles

dénote (engendrent, représente) le même langage.

20 W.SAADI
Exercice
Soit A={a1,a2,….ap} un vocabulaire.

Donner une description en français des langages


donnés par les expressions régulières suivantes :

AA, (ε+A) (ε+A), (AA)*, A*aA*, A*abA*, A* a A* b A*


et (ab)*.

21 W.SAADI
Solution
AA est le langage des mots de longueur 2.
(ε+A) (ε+A) est le langage des mots de longueur au plus 2.
(AA)* est le langage des mots de longueur paire.
A* a A* est le langage des mots ayant au moins une
occurrence de a.
A*abA* est le langage des mots ayant au moins une
occurrence du facteur ab.
A* a A* b A* est le langage des mots ayant au moins une
occurrence de a puis ensuite une occurrence d’un b.
(ab)* est le langage des mots commençant par a, finissant par
b et n’ayant pas deux a ou deux b consécutifs.
22 W.SAADI
Reconnaisseurs de langages (1)

Si on veut vérifier l’appartenance d’un mot w a un langage L


(répondre a la question w ∈ L), on peut le faire par plusieurs
façons. D’abord, on peut vérifier l’existence de w dans la liste
des mots de L (impossible à réaliser si le langage est infini). Si
L est défini par compréhension, on peut alors vérifier si w
respecte la propriété du langage. Si L est défini par une
grammaire, on doit vérifier l’existence d’une chaîne de
dérivation pour w pour conclure que w ∈ L.
23 W.SAADI
Reconnaisseurs de langages (2)
Il existe en réalité un autre moyen permettant de répondre
à cette question : les automates qui sont des machines
qui, après avoir exécuté un certain nombre d’opérations
sur le mot, peuvent répondre à cette question par oui ou
non. Les automates sont dit les reconnaisseurs de
langages.

24 W.SAADI
Automate
Les automates (machines) sont des modèles mathématiques
qui prennent en entrée une chaîne de symboles et qui
effectuent un algorithme de reconnaissance de la chaîne. Si
l'algorithme se termine dans certaines conditions, l'automate
est dit accepter la chaîne correspondante. Le langage
reconnu par un automate est l'ensemble des chaînes qu'il
accepte.

Un automate permet de déterminer si un mot donné


appartient à un langage.
25 W.SAADI
Automate fini

A la classe des langages réguliers correspond une classe

particulière d’automates (reconnaissant les langages

réguliers) : la classe des automates finis ou

automate à états finis (AEF).

26 W.SAADI
Définition formelle
Un automate à états finis est une machine abstraite définie
par le quintuplés A=(Σ ,Q, q0, F, δ) tel que :

Σ est l’ensemble des symboles formant les mots en entrée


(l’alphabet Σ des mots à reconnaître )

Q est l’ensemble des états possibles de A

q0 est l’état initial

F est l’ensemble des états finaux (F ≠ ∅, F ⊆ Q). F


représente l’ensemble des états d’acceptation
27 W.SAADI
Suite (fonction de transition)

δ : Q × Σ → Q est la fonction de transition de A.

δ Est définie de Q × Σ dans Q. Elle permet de passer

d’un état à un autre selon l’entrée en cours :

δ(qi, a) = {q1,...,qk} ou ∅ (∅ signifie que la

configuration n’est pas prise en charge)

28 W.SAADI
Représentation d’un AEF
Il existe trois principales représentations pour les AEF, à
savoir :

1. Sous forme de fonction (relation).

2. Représentation matricielle (sous forme de table)

3. Représentation graphique (sous forme de graphe


orienté étiqueté)

29 W.SAADI
Représentation sous forme de relation (1)
La fonction δ est vue comme une relation binaire entre
deux ensembles, le premier contient toutes les
combinaisons possibles de couples (état, lettre de
l’alphabet), le second ensemble contient les états de
l’automate, les flèches reliant des éléments du premier
ensemble aux éléments du deuxième représentent les
transitions. Notons que l’état initial et les états finaux
doivent être définis sous forme d’ensembles.

30 W.SAADI
Représentation sous forme de relation (2)
La relation δ dans Q×Σ×Q, appelée relation de transition
(autrement dit, δ est un ensemble de triplets de la forme
(qi ,a, qj) où qi et qj sont des états de Q et a est un
symbole du vocabulaire terminal Σ). Intuitivement, un
triplet (qi ,a, qj) ∈ δ signifie que si l’automate se trouve
dans l’état qi et le mot à analyser commence par le
symbole a, alors l’automate peut aller dans l’état qj .

31 W.SAADI
Représentation graphique
On représente généralement un automate fini par un
graphe orienté dont les arcs sont étiquetés. Chaque
état de l’automate est représenté par un sommet du
graphe (un cercle). A chaque transition (qi ,a, qj) ∈ δ
on associe un arc du sommet qi vers le sommet qj
étiqueté par a.

32 W.SAADI
État initial et état finaux
Les sommets du graphe correspondant à des états
initiaux de l’automate sont repérés par une pointe de
flèche. Les sommets du graphe correspondant à des
états finaux sont entourés de deux cercles.

Transition État final


État interne
État initial

33 W.SAADI
Exemple 5

L’automate d’état fini qui reconnait le langage


L={ anbm(n>0,m>0)}

34 W.SAADI
Représentation matricielle (sous forme de
table) (1)
La table possède autant de lignes qu’il y a d’états dans
l’automate de telle sorte que chaque ligne correspond à un
état. Les colonnes correspondent aux différents symboles de
l’alphabet.

Si l’automate est dans l’état i et que le symbole a est le prochain


à lire, alors l’entrée (i, a) de la table donne l’état auquel
l’automate passera après avoir lu a. Notons la donnée de la
table n’est suffisante pour définir tout l’automate puisqu’il faut
préciser l’état initial et les états finaux.
35 W.SAADI
Représentation matricielle (sous forme de
table) (2)
L’automate qui reconnaît les mots de la forme
anbm(n>0,m >0) est le suivant : A=({a, b}, {0, 1}, 0, {1}, δ) tel
que δ est donnée par la table :

36 W.SAADI
Exemple 6
Soit le langage (fini) L={aa, ab, abb, acba, accb}.

On peut définir l’automate A qui reconnaît ce langage :


A=(Σ ,Q, q0, F, δ) avec Q={1, 2, 3, 4, 5, 6, 7}, Σ={a,b,c},
q0=1, F = {3, 4}, et est δ définie ainsi :
δ(1,a) → 2 δ(5,b) → 6
δ(2,a) → 3 δ(5,c) → 7
δ(2,b) → 4 δ(6,a) → 3
δ(2,c) → 5 δ(7,b) → 3
δ(4,b) → 3
37 W.SAADI
Représentation graphique de l’automate A

38 W.SAADI
Représentation matricielle correspondante

39 W.SAADI
Fonctionnement d’un AEF
De façon informelle, un mot w est accepté par un AEF s’il
existe un chemin d’un sommet (état) initial vers un sommet
(état) final tel sorte que la concaténation des étiquettes des
arcs empruntés par le chemin soit égale à w.

Un chemin dans un automate est une suite finie de transitions


consécutives .Le mot a1a2…an est l’étiquette.

Le fonctionnement d’un automate sur un mot se fait à travers


un ensemble de configurations.

40 W.SAADI
Configuration
La configuration de l’AEF A, à un certain instant, est
donnée par l’état courant de l’AEF et du mot qui reste à
lire (état courant, mot qui reste à lire).
La configuration initiale est (q0, w) où q0 est l’état initial de
l’AEF et w le mot soumis à A (à reconnaître).
La configuration finale est donnée par (qf , ε) où qf est un
état final et le mot vide indique qu’il ne reste rien à lire (le
mot appartient au langage).

41 W.SAADI
Définition d’une dérivation directe
On dit qu’une configuration δ(q1, aw) dérive
directement la configuration (q2, w) si et seulement si
(q1, a) = q2 où δ est la fonction de transition, a∈Σ et
w ∈Σ*.

On note : (q1, aw)⇒ (q2, w).

42 W.SAADI
Définition d’une dérivation indirecte
On dit qu’une configuration (q, w1) dérive indirectement
une autre configuration (p,w2), si et seulement s’il existe
0,1 ou plusieurs dérivations directes qui, à partir de (q,w1),
mènent à la configuration (p, w2).

On note (p, w1) ⇒* (q, w2).

43 W.SAADI
Acceptation d’un mot par un automate
Un mot est accepté par un AEF si, après avoir lu tout le mot,
l’automate se trouve dans un état final (qf ∈ F). En d’autres
termes, un mot est rejeté par un AEF dans deux cas :

1. L’automate est dans l’état qi, l’entrée courante étant a et


la transition (qi, a) n’existe pas (on dit que l’automate est
bloqué) :

2. L’automate arrive à lire tout le mot mais l’état de sortie


n’est pas un état final.
44 W.SAADI
Mot reconnu par un AEF (définition formelle)

On dit qu’un mot est reconnu (accepté) par un AEF si, à

partir d’une configuration initiale, on arrive à une

configuration finale à travers une succession de

configurations intermédiaires .

Et on note : (q0, w) ⇒*(qf , ε)

avec q0 état initial de A et qf ∈F.

45 W.SAADI
Langage reconnu par un AEF (Définition
formelle)

On dit qu’un langage est reconnu (accepté) par l’AEF


A noté L(A) un automate lorsque tous les mots de
ce langage sont reconnus par l’automate.

Il est défini par :

L(A) = {w ∈Σ*/(q0, w) ⇒*(qf , ε) }


avec q0 état initial de A et qf ∈F.

46 W.SAADI
Langage régulier ou rationnel (définition 3)

Un langage L est rationnel si et seulement s’il existe un

automate d’états finis A tel que L = L(A).

47 W.SAADI
Remarque
Un AEF A est donc un séparateur (ou classifieur) des
mots de Σ∗ en deux parties :

1. l’ensemble des mots reconnus par l’automate


(notés par L(A))

2. le reste des mots (le complémentaire de L ou


encore Σ∗ − L(A)).

48 W.SAADI
Équivalence des AEF

On dit que deux AEF A1 et A2 sont équivalents si et

seulement s’ils reconnaissent le même langage :

L(A1) = L(A2)

49 W.SAADI
AEF déterministe (AFD)
Un AEF A= (Σ ,Q, q0, F, δ) est dit déterministe si et
seulement si la fonction de transition associe à chaque
couple (q, a) au plus un état p, on note :

∀qi ∈ Q, ∀a ∈ Σ, il existe au plus un état p tel que (qi, a)=p

L’automate ne comporte pas de ε-transitions (transition


avec une étiquète le symbole vide ε) .

avec a∈ Σ et p, q ∈ Q.

50 W.SAADI
Exemple 7
L’ AEF déterministe (AFD) suivant reconnait le langage
des mots qui finissent par b, défini sur l’alphabet Σ ={a, b}

51 W.SAADI
AEF déterministe complet
Un automate déterministe A=(Σ ,Q, q0, F, δ) est complet si
et seulement si à chaque paire (q, a)∈ Q×Σ, la fonction
associe exactement un état.

Exemple :

52 W.SAADI
AEF Non déterministe (AFN)
Les automates finis non déterministes sont des
automates finis où l'on permet :

plusieurs transitions correspondant au même


symbole dans chaque état,

des transitions sur le mot vide ε-transitions (c'est-à-


dire sans avancer dans le mot d'entrée).

53 W.SAADI
Exemple 8
L’AFN suivant reconnait le langage des mots qui
finissent par 01, défini sur l’alphabet Σ ={0, 1}

L’automate peut être définit 0 1


formellement comme suit : → q0 {q0,q1} q0
A = ({0,1},{q0,q1,q2}, q0,{q2}, δ} , q1 q2
tel que δ est définit par : ← q2

54 W.SAADI
Equivalence entre AFI et AFD (1)
Pour déterminer si un mot u de longueur n est accepté, un
AFD effectue exactement n transitions, tandis qu’un AFN
en effectue de l’ordre de 2n. L’exécution d’un AFD est donc
nettement plus efficace que celle d’un AFN.

La famille des langages acceptés par un AFD est identique à


la famille des langages acceptés par un AFN (autrement dit,
s’il existe un AFN reconnaissant un langage donné, alors il
existe un AFD reconnaissant le même langage).
55 W.SAADI
Equivalence entre AFI et AFD (2)
Théorème de Rabin et Scott : Tout langage accepté par un
AEF non déterministe est également accepté par un AEF
déterministe.
Conséquence

Tout AEF non déterministe peut être transformé en un AEF


déterministe.

56 W.SAADI
Suite…
Ce théorème conduit a dire que si l’on veut construire
l’automate à états fini déterministe qui reconnaît les
mots d’un certain langage, alors on peut commencer
par trouver un AEF non déterministe (ce qui est plus
facile). Il suffit de le transformer, après, pour obtenir un
automate à états finis déterministe.

57 W.SAADI
Remarque
A noter que la seul différence entre un AFD (automate
d’états finis non déterministe ) et un AFN (automate
d’états finis non déterministe) est dans le type
retourné par la fonction δ :
Un ensemble d’états dans le cas d’un AFN.
Un seul état dans le cas d’un AFD.

58 W.SAADI
Déterminisation d’un automate à états fini

En réalité, l’algorithme de déterminisation d’un AEF


permet de transformer un AFN en un AFD. Il peut
être considéré dans deus situation possible :

1. Dans le cas d’un AFN sans ε-transitions

2. Dans le cas d’un AFN avec ε-transitions

59 W.SAADI
Algorithme : Déterminiser un AEF sans les
ε-transitions
Principe : considérer des ensembles d’états plutôt que des
états (dans l’algorithme suivant, chaque ensemble d’états
représente un état du futur automate).

1. Partir de l’état initial E(0) = {q0} (c’est l’état initial du


nouvel automate) ;

2. Construire E(1) l’ensemble des états obtenus à partir de


E(0) par la transition a :
E(1) = ∪q′∈E(0) δ(q′, a)
60 W.SAADI
Suite…
3. Recommencer l’étape 2 pour toutes les transitions
possibles et pour chaque nouvel ensemble E(i) :

E(i) = ∪q′∈E(i-1)
∈ δ(q′, a)

4. Tous les ensembles contenant au moins un état final du


premier automate deviennent finaux ;

5. Renuméroter les états en tant qu’états simples.

61 W.SAADI
Exemple 9

L’automate non déterministe qui


Reconnait les mots contenant le
facteur ab

L’automate déterministe équivalente qui


reconnaît les mots ayant le facteur ab

62 W.SAADI
Déterminisation avec les ε-transitions
La déterminisation d’un AEF contenant au moins une ε-
transition fait appel à la notion de l’ ε-fermeture d’un
ensemble d’états.
Définition
Soit E un ensemble d’états. On appelle ε-fermeture de E
l’ensemble des états incluant, en plus de ceux de E, tous
les états accessibles depuis les états de E par un chemin
étiqueté par le mot ε.

63 W.SAADI
ε-fermeture
L' ε-fermeture d'un état q est l'ensemble des états obtenus en
suivant des ε-transitions a partir de q.

Règles d'appartenance :
q ∈ ε-fermeture(q)
si p ∈ ε-fermeture(q) et s'il existe une ε-transition entre p et
un état r alors r ∈ ε-fermeture(q).
L'ε-fermeture d'un ensemble d‘états Q est l'ensemble des
états obtenus en suivant des ε-transitions a partir de tout
état de Q.
64 W.SAADI
Algorithme
1. Partir de H, l' ε-fermeture de l‘état initial.
2. Construire E(1), l'ensemble des états obtenus a partir de
H par la transition a.
Déterminer l' ε-fermeture de E(1) et la réunir avec E(1).
H(1) = E(1) ∪ ε-fermeture(E(1)).
3. Recommencer l‘étape 2 avec les autres transitions et tant
qu'il y a de nouveaux états crées.
4. Tous les nouveaux états contenant au moins un état final
sont des états finals.
5. Renommer les états obtenus.
65 W.SAADI
Exemple 10
Soit l’AFN suivant qui reconnait le langage des mots contenant le facteur ab

En appliquant l’algorithme précédant on obtient l’automate suivant :

66 W.SAADI

Vous aimerez peut-être aussi