Vous êtes sur la page 1sur 28

Cours : Théorie des langages et

automates
Chapitre 1 : Les concepts de
base : Alphabets, Mots et
Langages
Niveau : L2CS
Enseignants :
Fatma Hermès, Bakhta Haouari et Foued Oueslati

Année universitaire : 2020-2021


Plan
 Introduction
 Les Alphabets : Définition et exemples
 Les Mots (ou chaine) : Définitions
 Mot et mot vide
 La longueur d’un mot
 La notion d’occurrence de symboles
 La concaténation et la puissance
 Facteurs, préfixes, suffixes et sous-mots
 Les langages :
 Définitions
 Opérations sur les langages
 Théorème d’Arden

2 30/09/2020
Introduction
 En informatique certains modèles sont utilisés pour décrire,
représenter et effectuer des calculs sur des séquences finies de
symboles. Parmi ces modèles, nous citons :
 La compilation : Lors de l’analyse lexicale, un compilateur
identifie des séquences de caractères qui forment des mots-clés du
langage ou des noms de variables autorisées ou encore des
nombres réels.
 La Bioinformatique : La biologie moléculaire et la génétique
fournissent des exemples “naturels” d’objets modélisables comme
des séquences linéaires de symboles dans un ensemble fini de
symboles.
 Les langues naturelles :
 L’objectif de ce chapitre est d’introduire de manière formelle des
concepts de base auxquels ces modèles font appel.

3 30/09/2020
Introduction
 Dans la théorie des langages :
 Alphabet : L’ensemble des entités élémentaires (ou symboles).
 Mot : Une combinaison d’entités élémentaires (séquence finie de symboles).
 Une modélisation utile d’un brin de chromosome consiste en une séquence
linéaire (très longue) définie sur un alphabet de quatre lettres (ATCG). Chaque
lettre représente une composante de base.
 Lors de l’analyse lexicale d’un programme,
 L’alphabet est l’ensemble des symboles du clavier,
 Les mots sont les mots clés, les identificateurs, les nombres,...
 Lors de l’analyse syntaxique d’un programme,
 L’alphabet est composé par les mots clés, les identificateurs, les nombres, les
opérateurs, ...
 Un mot est une suite des éléments et forme un programme.

4 30/09/2020
Les alphabets
 Définition : Un alphabet, noté X, est un ensemble fini et non
vide de symboles (ou entités élémentaires)
 Exemples :
 X1  {0,1}
 X2  {A, C, G, T} .
 X3  {a, b, c, …, x, y, z} : l’ensemble des lettres minuscules.
 X4  {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,, , , , (, )}
 X5 = {if, then, else, id, nb, =, +}
 X6  {♠, ♣, ♥, ♦}

5 30/09/2020
Les mots : Un mot et le mot vide
Définition d’un mot : Étant donné un ensemble fini de
symboles X, que l’on appelle l’alphabet, on appelle mot toute
suite finie (éventuellement vide) d’éléments de X.
 Exemples :
 w 1  10110 est un mot définis sur X1

 w 2  ordinateur est un mot définis sur X3

 w 3  (7  6)  3 est un mot définis sur X4

Définition du mot vide : Le mot vide est composé par 0


symbole. Il est défini sur tous les alphabets. Par convention, le
mot vide est toujours noté ε.

6 30/09/2020
Les mots : La longueur d’un mot
Définition : La longueur d’un mot w correspond au nombre
de symboles qui composent w (chaque symbole étant compté
autant de fois qu’il apparaît).
 La longueur d’un mot w est notée par | w |
 La longueur du mot vide est égale à zéro : | ε | = 0.
 Exemples :
 Le mot w1  10110 de 1 est de longueur 5 : | w1 |= 5.

 Le mot w2  ordinateur de 3 est de longueur 10 :

| w2 |= 10.
 Le mot w 3  (7  6)  3 de 4 est de longueur 10 :

| w3 |= 7.

7 30/09/2020
Les mots : La notion d’occurrence
Définition de l’occurrence d’un symbole : nombre de fois où
un symbole d’un alphabet apparait dans un mot.
 On note par | w | le nombre d’occurrences du symbole  dans
u.
 On a naturellement : | w | = Σa∈X | w |a .
Définition de l’occurrence de symboles : Soit  un alphabet.
Soit A une partie de X (A X). Pour tout mot w  *, la
longueur en A de w est le nombre d'occurrences des symboles
de A dans le mot w.
 Ce nombre est noté | w |A.
 On a naturellement : | w |A = Σa∈A | w |a .

8 30/09/2020
Les Mots : La concaténation de mots
Définition : L’opération de concaténation de deux mots u et v de X
résulte en un nouveau mot u.v (ou simplement uv s’il n’y a pas
d’ambigüité), constitué par la juxtaposition des symboles de u suivi
par ceux de v.
 NB : L’opérateur de concaténation ‘.’ peut être omis.
 Formellement, le produit de concaténation de deux mots u et v où
u  a1a2 …an et v  b1b2 … bm est le mot uv obtenu par juxtaposition
uv  a1a2 …an b1b2 … bm .
 On a alors |uv| = |u| + |v| et une relation similaire pour les décomptes
d’occurrences |uv|a= |u|a + |v|a.
 Si u se factorise sous la forme u = xy, alors on écrira :
 y = x−1u = x−1xy

 x = uy−1 = xyy−1.

9 30/09/2020
Les Mots : La concaténation de mots
Exemples :
 Soit l’alphabet X1 = {0,1} et les deux mots x et y avec x =
01101 et y = 110. Ainsi on a :
 xy = 01101110 et
 yx= 11001101
 | xy | = | yx | = | x | + | y | = 8
 Soit l’alphabet X2 = {a,b,c} et les deux mots u et v avec u =
aabb et v = cc. Ainsi on a
 uv = aabbcc
 vu = ccaabb
 | uv | = | vu | = | u |+| v | = 8
 uuu = aabbaabbaabb.

10 30/09/2020
Les Mots : La concaténation - propriétés
 La concaténation est associative : soient u, v et w trois mots
de  on a alors : ((uv)w) = (u(vw)),
 Elle n’est pas commutative : (sauf dans le cas dégénéré où X
ne contient qu’un seul symbole) : uvvu .
 ε est l’élément neutre pour la concaténation : uε = εu = u
 La concaténation est une opération interne de X*. Un monoïde
est un ensemble muni d’une opération interne associative et
d’un élément neutre. Ainsi, X*, avec l’opération de
concaténation, possède une structure de monoïde
 Tout mot u de X* se décompose de manière unique comme
concaténation de symboles de X.

11 30/09/2020
Les mots : la puissance d’un mot
Définition : Conventionnellement, on notera par un la
concaténation de n copies de u, avec
 u0 = ε ,

 un = u.(un−1 ) pour n ≥ 1.

 Exemple : soit l’alphabet   {a, b} et soit w  aab alors on a :


 w0  

 w1  w = aab

 w2  w.w= aabaab

 w3  w.w.w = aabaabaab

12 30/09/2020
Les mots : quelques notations
 Xn : l’ensemble des mots de longueur n par concaténation de n
symbole de .
 X0 : l’ensemble des mots de longueur 0. On a X0  {} ;
 NB : L’ensemble A0 n’est pas vide. Il contient la chaîne
vide .
 X+ : l’ensemble des mots de longueur supérieure ou égale à 1
que l’on peut construire à partir de l’alphabet .
 X est la réunion des X pour n > 0  X = ∪ n  1 X .
+ n + n

 X∗ : l’ensemble des mots que l’on peut construire à partir de ,


y compris le mot vide :
 On a : X∗ = {ε} ∪ X+
 X * est la réunion des X pour n  0  X = ∪ n  0 X .
n + n

13 30/09/2020
Les mots : Facteurs, préfixes et suffixes
Définition : On dit que u est un facteur de v s’il existe u1 et u2
dans X* tels que : v = u1 u u2.
 Si u1 = ε alors u est un préfixe de v.

 Si u2 = ε alors u est un suffixe de v.

 Autrement dit :
 Un mot x est préfixe d’un mot w si et seulement s’il existe
un mot y définit sur le même alphabet  que x et w tel que
w  xy.
 Un mot x est suffixe d’un mot w si et seulement s’il existe
un mot y définit sur le même alphabet  que x et w tel que
w  yx.

14 30/09/2020
Les mots : les sous-mots
Définition : Si w se factorise en u1v1u2v2…unvnun+1, où tous les
ui et vi sont des mots de Σ*, alors v = u1v1u2v2 …unvn est un
sous-mot de w.
 Remarque : Contrairement aux facteurs, les sous-mots sont
construits à partir de fragments non nécessairement contigus,
mais dans lesquels l’ordre d’apparition des symboles est
toutefois respecté.

15 30/09/2020
Les mots : mot et mot miroir
Définition du mot miroir : Soit w  a1 … an de X*
avec a1; … ; an  . Le mot miroir de w est le mot
~ ou w~ ou encore wr défini par : w~  a … a
note w n 1
 On a :
 (uv)~  v ~ u ~
 (w~)~  w.
 Exemples : u=abcb et v=ba et X={a,b,c}
 u~=bcba
 v~ =ab
 (uv)~ = (abcbba)~ = abbcba

16 30/09/2020
Les Langages :
Définition : Un langage défini sur un alphabet X est un sous
ensemble de X* . C’est donc un ensemble de mots défini sur X
et on a L X*
 Les sous-ensembles de X* sont appelés des langages formels.
 NB : Les deux langages suivants sont indépendants de tout
alphabet X :
Le langage vide (L = ∅),
Le langage contenant le seul mot vide (L = {}).

17 30/09/2020
Les langages : Exemples
 Exemples de langages :
 * : Tous les mots définis sur .

 Ø = {} : le langage vide.

 {}, le langage réduit à l’unique chaîne vide.

 L1  {w  * / w  w~} : l’ensemble des mots palindromes

 L2  {w  * / |w|  2k, k  0} : l’ensemble des mots de


longueur paire
 L3  {w  * / |w|a  2k, k  0}

18 30/09/2020
Langages : Opérations ensemblistes
Soient deux langages L1 et L2 respectivement définis sur les alphabets
X1 et X2 :
 L’Union de L1 et L2 est le langage défini sur X1∪X2 contenant tous les
mots qui sont soit contenus dans L1, soit contenus dans L2 :
L1 ∪ L2  {w  (X1∪X2 )* / w  L1 ou w  L2}
 L’Intersection de L1 et L2 : est le langage défini sur X1∩X2 contenant
tous les mots qui sont contenus à la fois dans L1 et dans L2 :
L1 ∩ L2  {w  (X1∩X2)* / w  L1 et w  L2 }
 La Différence de L1 et L2 : est le langage défini sur X1 contenant tous les
mots de L1 qui ne sont pas dans L2 :
L1 \ L2 (ou L1 – L2)  {w  X1* / w  L1 et w  L2 }
 Le Complèment L1 : est le langage défini sur X1 contenant tous les mots
qui ne sont pas dans L1
L1c  X1* \ L1  {w  X1* et w  L1 }
19 30/09/2020
Produit de deux langages
Définition : Le produit (ou concaténation) de deux langages L1
et L2, respectivement définis sur les alphabets X1 et X2, est le
langage défini sur X1∪X2 contenant tous les mots formés d’un
mot de L1 suivi d’un mot de L2 :
L1.L2 = {u.v ∈ (X1∪X2 )* /u ∈ L1 et v ∈ L2}
L1 {}  {}L1  L1
 Le produit de langages est associatif, mais non commutatif.
 Exemple : Considérons par exemple les deux langages définis
sur {0, 1}.
 L1 = {00, 11} et
 L2 = {0, 1, 01}
Ainsi on a : L1.L2 = {000, 001, 0001, 110, 111, 1101}
20 30/09/2020
Puissances d’un langage
 Définition : Les puissances successives d’un langage L sont
définies récursivement par :
 L0 = {},
 L L
1

 Ln = L.Ln−1 pour n ≥ 1.
 NB : Si X est un alphabet alors Xn est l’ensemble des mots de
longueur n.
 Exemples :
 Si L = {00, 11}, alors L2 = {0000, 0011, 1100, 1111}
 Si L = {aba, aa}, alors L2 = {abaaba, abaaa, aaaba, aaaa}

21 30/09/2020
Langages : La fermeture de Kleene
Définition : La fermeture itérative d’un langage L (ou
fermeture de Kleene (ou encore itéré de L)) est l’ensemble
des mots formés par une concaténation de mots de L :
 L∗ = {u L∗ /∃k ≥ 0 et u1, ..., uk ∈ L tels que u =
u1u2...uk}
 Autrement dit,
L∗ = ∪i=0..∞Li
 De même, on définit
L+ = ∪i=1..∞Li

22 30/09/2020
Opérations sur les langages: Exemples
Soient les langages suivants définis sur X  {a, b}
 L1  {a, b}
 L2  {aa, bb, ab, ba}
 L3  {a, ab, bb}
Ainsi, on a :
L1 ∪ L2  {a, b, aa, bb, ab, ba}
L1 ∩ L2  Ø
L1 ∩ L3  {a}
L1 \ L2  {a, b}
L3 \ L1  {ab, bb}
L1.L2  {aaa, abb, aab, aba, baa, bbb, bab, bba}
23 30/09/2020
Exercice 1
 Sur l’alphabet S = {0, 1}, on considère les langages L1 et L2
définis par :
 L1 = {01n/ n ∈ IN}
 L2 = {0n1/ n ∈ IN}
Définir les langages L1.L2 ; L1 ∩ L2 et (L1)2 .
 Correction :
 – L1.L2 = {01n0m1/n ∈ N, m ∈ N}
 – L1 ∩ L2 = {01}
 – (L1)2 = {01n01m/n ∈ N, m ∈ N}

24 30/09/2020
Exercice 2 :
 Sur l’alphabet A = {a, b}, on considère le langage L1 des mots
formés de n fois la lettre a suivi de n fois la lettre b, et le langage L2
des mots comportant autant de a que de b.
 Définir formellement ces deux langages.
 Que sont les langages suivants : L1 ∪ L2 ; L1 ∩ L2 ; (L1)2 ; (L2)2 ?
 Que peut-on dire de (L1)∗ et (L2)∗ par rapport à L1 et L2 ?
 Correction :
 L1 = {anbn/n ∈ IN} L1 ⊂ (L1)∗ ⊂ L2
 L2 = {u/|u|a=|u|b} (L2)∗ = L2
 L1 ∪ L2 = L2
 L1 ∩ L2 = L1 car L1 ⊂ L2
 (L1)2 = {anbnaambm/n ∈ IN, m ∈ IN}
 (L2)2 = L2

25 30/09/2020
Théorème d’Arden
 Soit A et B deux langages définis sur un alphabet .
 L’équation X=AXB admet une solution unique dans *.
 Cette solution est comme suit : X=A*B.

Vérification :
X=AXB  A*B = A.A*B B
= A.A*B  {}.B
= (A.A*  {} ) .B
= (A+  {} ) .B
= A*.B

26 30/09/2020
Application du théorème d’Arden
 Soit A et B deux langages définis sur un alphabet  =
{0,1} où :
 A={a*,b}
 B={bbb, bba}
 D’après le théorème d’Arden L’équation X=AXB
admet une solution unique dans *. Cette solution est
comme suit : X =A*B
={a*,b}.{bbb, bba}.
= {a*bbb, a*bba,bbbb,bbba}

27 30/09/2020
Description d’un langage
 Un langage fini peut être décrit par l’énumération des mots qui le
composent.
 Certains langages infinis peuvent être décrits par l’application d’opérations
à des langages plus simples.
 Certains langages infinis peuvent être décrits par un ensemble de règles
appelé grammaire.
 Enfin, certains langages infinis ne peuvent pas être décrits, ni par
l’application d’opérations, ni par un ensemble de règles. On parle alors de
langage indécidable. On peut noter que si un langage est indécidable, alors
il n’existe pas d’algorithme permettant de déterminer si un mot donné
appartient à ce langage. On dit alors que le problème est indécidable.
 Par exemple, le langage des programmes C++ qui “terminent" (qui ne
bouclent pas indéfiniment) ne peut être décrit par des règles formelles : ce
langage est indécidable et le problème consistant à déterminer si un
programme C++ donné termine est un problème indécidable, pour lequel il
n’existe pas d’algorithme (ce problème est plus connu sous le nom de
“problème de l’arrêt de la machine de Turing").

28 30/09/2020

Vous aimerez peut-être aussi