Vous êtes sur la page 1sur 46

Théorie des langages

Introduction et rappel

W. Saadi
Plan
1. Théorie des Langages : Pourquoi ?
2. Théorie des Langages : objectifs
3. Rappels sur la théorie des ensembles
1. Ensemble
2. Opérations sur les ensembles
3. Construction d’autres ensembles
4. Mesures sur les ensembles
4. Définitions et notion de base
1. Alphabet
2. Mot
3. Langage

2
Théorie des Langages : Pourquoi ?
La théorie des Langages est une branche
fondamentale de l’Informatique théorique.
Certainement, la première question que vous allez
poser :

Pourquoi faut-t-il étudier la théorie des Langages ?

C’est quoi l’apport pour un informaticien ?

3
Exemple1 : correction orthographe et
grammaire sur Word
Comment fonctionne un logiciel de correction
d’orthographe ?

Comment fonctionne un logiciel de correction de


grammaire ?

Si vous êtes entrain d’écrire un texte sur Word,


comment un mot peut être souligné en rouge ou en
vert ?

Quand-est ce que un mot n’est pas souligné ?


4
Exemple 2 : compilation d’un programme en
langage C

Que se passe-t-il lorsque vous cliquez sur


compiler ?

Comment un compilateur vous présente les


erreurs ?

Le compilateur accepte il tous les mots ?

5
Questions
1. Comment pouvons nous vérifier si un mot
appartient à un langage ?
2. Comment pouvons-nous vérifier si une phrase
respecte des règles ?

Y a-t-il des solutions algorithmiques pour


ce genre de problèmes ?
6
Théorie des Langages : objectifs
La Théorie des Langages propose des solutions
algorithmiques pour deux questions :
Y a-t-il une solution algorithmique permettant de vérifier :
si un mot appartient à un Langage ?
⇒Pour répondre à cette question nous pouvons faire
recours aux automates.
Y a-t-il une solution algorithmique permettant de vérifier :
si une phrase respecte les règles de grammaire ?
⇒ Pour répondre à cette question nous pouvons faire

7
une étude des règles de grammaire.
Un langage est un ensemble de mots
Il est nécessaire de rappeler les différents concepts
de base de la théorie des ensembles qui sont
utiles pour introduire la théorie des langages..

8
Rappels sur la théorie des

ensembles

9
Ensemble
Un ensemble est une collection d’objets sans répétition. Si
un objet appartient à un ensemble E, on dit qu’il est
élément de cet ensemble.

Un ensemble est caractérisé par la notion d’appartenance

pour un ensemble E, tout objet x appartient ou non à E.

x∈E : x appartient à E (on dit aussi que x est dans E) .

x∉E : x n’appartient pas à E.

10
L’ensemble vide
On distingue un ensemble particulier noté ∅ qui ne
contient aucun élément.

11
Définition d’un ensemble (1)
1) Définition par extension : Elle est valable si l’ensemble est
fini. On précise les valeurs de l’ensemble entre accolades
(valeurs séparées par des virgules).

Exemple : E = {a, c, f }

2) Définition par compréhension: cette définition consiste à


définir les éléments d’un ensemble par les propriétés qui les
définissent. En d’autres termes, on écrira {x|x vérifie une
propriété P(x)}.

Exemple : {x ∈ IN | x mod 2 = 0} définit les nombres entiers pairs.


12
Définition d’un ensemble (2)
3) Définition par induction : consiste a définir un
ensemble par certains éléments triviaux (c’est-`a-dire
des éléments dont on sait, sans démonstration, qu’ils
appartiennent à l’ensemble)

Exemple : l’ensemble des entiers peut être représenté


comme suit : N = {0; x ∈ N ⇒ (x + 1) ∈ N}.

13
Opérations sur les ensembles
Nous pouvons définir plusieurs opérations sur les
ensembles. Ces opérations permettent soit de
comparer des ensembles soit de construire
d’autres ensembles.

14
Comparaison des ensembles
Les ensembles peuvent être comparés de différentes
manières selon les éléments qui les contiennent.
Néanmoins, il existe deux comparaisons qui peuvent être
appliquées à n’importe quels ensemble, il s’agit de
l’inclusion et de l’égalité.

15
Inclusion
Un ensemble E est dit inclus dans un ensemble F si tout élément de E
appartient à F (∀x∈ E, x ∈ F). F est dit un sous ensemble de E.

Notation : E ⊆ F

Un ensemble E est dit strictement inclus dans un ensemble F si E ⊆ F


et E ≠ F.

Notation : E⊂ F

Exemples :
{ab, ac, a, b} ⊆ {a, ab, b, ac}
{ab, ac} ⊂{ab, ac, a, b}
{ab, ac, a, b} ⊄ {ab, ac}
16
Propriété importante :

X⊆Y et Y ⊆ X ⇔X = Y

17
Égalité
Deux ensembles E et F sont égaux (c’est-à-dire qu’ils
contiennent les mêmes éléments) si E ⊆ F et F ⊆ E.

Notation : E = F

Exemples :

{ab, ac, a, b} = {a, ab, b, ac}

{a, bc} = {a, a, bc, a, bc, a}

Propriétés
∅ ⊆ E quelque soit l’ensemble E
E⊆∅⇒E=∅
18
Construction d’autres ensembles(1)
Union : notée E ∪F , comporte tout élément
appartenant à E ou F (E ∪F = {x|x ∈E ∨ x ∈F }).

Intersection: notée E ∩F , comporte tout élément


appartenant à E ou F (E ∩ F = {x|x ∈E ∧ x ∈F }).

La différence: notée E − F, comporte tout élément


appartenant à E et qui n’appartient pas à F (E − F =
{x|x ∈ E ∧ x ∉ F}).

19
Construction d’autres ensembles(2)
Le complément: noté E = Ω−E. on peut la définir
par E\F={x|x∈E ∧ x∉F} = E\(E ∩F)

Le produit cartésien: noté E × F, est l’ensemble des


paires (x, y) telles que x ∈ E et y ∈ F.

L’ensemble des parties de E : noté P(E) est


l’ensemble de tous les sous-ensembles de E.

20
Propriétés
E∪ ∅=E. E ∪F=F ∪E.
E∩ ∅= ∅. E ∩F=F ∩E.
E\ ∅
∅=E.
E1∪(E2 ∪E3)=(E1∪E2)∪E3
∅\E= ∅.
E1∩(E2∩E3)=(E1∩ E2)∩E3
E ∪ =E.
E1∩(E2 ∪ E3)=(E1∩ E2) ∪ (E1∩ E3)
E ∩E=E.

E\E= ∅. E1∪(E2∩E3)=(E1∪E2)∩(E1∪E3)

21
Exemple
E = {a, b}, F= {a, c}, Ω = {a, b, c} :

E ∩ F = {a} ;

E∪
∪ F= {a, b, c} ;

E− F = {b} ;

E = {c} ;

E × F = {(a, a), (a, c), (b, a), (b, c)} ;

P(E)= {∅, {a}, {b}, {a, b}}

22
Mesures sur les ensembles
Ces opérations ont pour objectif de construire une valeur
numérique caractérisant l’ensemble. La mesure la plus
utilisée et celle de la cardinalité. Si un ensemble E a un
nombre fini d'éléments, on appelle cardinal de E le nombre
d'éléments de E. On note ce nombre card(E) ou |E|. Si
l’ensemble est infini alors sa cardinalité est ∞ .
Propriété :
card(E × F) = card(A).card(B)

23
Définitions et notion de base

24
Définition d’un alphabet
Un alphabet Σ (ou on peut le nommé V ou A) est un
ensemble fini et non vide, les éléments de cet ensemble
sont appelés des lettres ou des symboles. Il est
également souvent appelé le vocabulaire.

Exemple
Σ={0,1}. l'alphabet des langages machines.
Σ={A, C ,G ,T} les quatre nucléotides de l'ADN.

25
Définition d’un mot
On appelle mot sur un alphabet Σ toute suite finie,
éventuellement vide, d’éléments de Σ.

Notations :

Le mot vide est noté ″ε″.

L’ensemble des mots sur un alphabet Σ est noté Σ*.

Σ + est l’ensemble des mots non vides.

26
Exemple
Le mot 1011 est défini sur l’alphabet {0, 1}

Le mot 2.64 est défini sur l’alphabet {0, 1, 2, 3, 4, 5, 6,


7, 8, 9, .} ;

Le mot 58 est défini sur l’alphabet {0, 1, 2, 3, 4, 5, 6, 7,


8, 9} ;

27
Longueur d’un mot
Si w est un mot, alors sa longueur est définie comme
étant le nombre de symboles contenus dans w, elle
est noté par |w|.
Exemple
Sur l’alphabet V={a, b, c, d}
|abc| = 3
|aabba| = 5.
Le mot vide noté ε est le seul mot de longueur nulle
|ε| = 0.
28
Nombre d’occurrences
On définit la cardinalité d’un mot w par rapport à un
symbole a ∈ Σ: |w|a comme étant le nombre
d’occurrence de a dans w.
Exemple
|abc|a = 1.

|aabba|b = 2.

|1010111|1 = 5.

|1010111|0 = 2.
29
Concaténation des mots
Soient w1 et w2 deux mots définis sur l’alphabet Σ. La
concaténation (ou produit de concaténation) de w1 et
w2 est un mot w défini sur le même alphabet. w est
obtenu en écrivant w1 suivi de w2, en d’autres termes,
on colle le mot w2 à la fin du mot w1 :

w1 = a1...an tel que |w1|=n

w2 = b1b2...bm tel que |w2|=m

w = a1...anb1b2...bm
30
Notation
La concaténation est noté par un point, mais il peut
être omis s’il n’y a pas de d’ambiguïté.

On écrira alors : w = w1.w2 = w1w2

Exemple

w1 =aabac

w2 =dab

w= w1.w2 =aabacdab
31
Propriétés de la concaténation
Soient w, w1 et w2 trois mots définis sur l’alphabet Σ:

|w1.w2| = |w1| + |w2|

∀a ∈ Σ : |w1.w2|a = |w1|a + |w2|a


(w1.w2).w3=w1.(w2.w3) (la concaténation est associative)

wε = εw = w (ε est un élément neutre pour la


concaténation)

w1.w2 ≠ w2.w1 (non commutative)


32
L’exposant (puissance)
L’opération de concaténation w.w est notée par w2 et dite
puissance 2 de w. En généralisant, on note un le mot w
concaténé n fois : wn = w...w
n fois
propriétés
wo=ε (le mot w est répété 0 fois).
wn=w. (wn-1) (pour n ≥ 1)
Exemple :
w= aba, w3 = abaabaaba

33
Monoïde
La concaténation est associative mais non
commutative.

La concaténation est une loi de composition interne


de Σ et ε est son élément neutre.

Par conséquent, (Σ*, .) est un monoïde.

34
Le mot miroir
Soit w = a1a2...an un mot sur Σ. On appelle mot miroir
de w et on le note par wR le mot obtenu en écrivant
w l’envers, c’est-à-dire que wR = an...a2a1.

propriétés

(wR)R = w.
εR = ε ;
aR = a, avec a∈ Σ ;
(a.w)R = wR.a, avec a ∈ Σ.
35
Palindromes
Certains mots, appelés palindromes, sont égaux à leur
miroir. En d’autres termes, on lit la même chose dans
les deux directions.

Exemple

w=10110 ⇒ wR =01101

w=abbbba ⇒ wR = abbbba (palindrome)

36
Facteur, Préfixe et suffixe
Soit Σ un alphabet, soient u et w deux mots de Σ* (u,w ∈ Σ*),
on dit que :
u est un sous-mot (facteur) de w si et seulement s’il existe
deux mots w1 et w2 ∈ Σ* tel que : w = w1uw2 ;
u est un facteur propre de w si et seulement si w1 ≠ ε et
w2 ≠ ε
u est un facteur gauche (préfixe) de w si et seulement si
w1 =ε
u est un facteur droit (suffixe) de w si et seulement si w2=ε
37
Définition d’un langage formel
On appelle langage formel défini sur un alphabet Σ, tout
sous-ensemble (fini ou infini) de Σ*. Un langage peut être
défini par extension, par compréhension ou par induction.
Un langage fini est un langage contenant un nombre fini
de mots.
Le langage vide ne contient aucun mot.
Un langage est dit propre s’il ne contient pas le mot vide.
Un langage est infini s’il n’est ni vide ni fini.

38
Exemple
Langage des nombre binaires définies sur l’alphabet
{0, 1} (infini)

Langage des mots de longueur 2 défini sur l’alphabet


{a, b}={aa, ab, ba, bb}

L = {anbncn : n ∈ N} sur l'alphabet {a; b; c}

39
Remarques
Σ* dénote l'ensemble des mots sur l'alphabet Σ .

Σ+ dénote l'ensemble des mots sur l'alphabet Σ de


longueur ≥ 1.

Pour tout langage L construit sur un alphabet Σ on a :


L ⊆ Σ* .

40
Operations sur les langages
Les langages sont des ensembles, par conséquent on peut
leur appliquer toutes les opérations appliquées sur les
ensembles ; toutefois, il existe des opérations qui leurs
sont spécifiques, il s’agit d’une extension des opérations
définies sur les mots. On peut définir deux catégories
d’opérations : les opérations ensembliste et les
opérations non ensemblistes.

41
Les opérations ensemblistes
Soient L,L1 et L2 trois langages définis respectivement sur les
trois alphabets Σ, Σ1 et Σ2.

L’union : notée par + ou | plutôt que ∪


∪.

L1 + L2 = L1 | L2 = {w|w ∈ L1 ∨ w ∈ L2}

L’intersection : L1 ∩ L2 = {w|w ∈ L1 ∧ w ∈ L2}

Le complément :  L = {tous les mots w sur Σ |w ∉ L}

42
Exemple
Soient les deux langages L = {w ∈ Σ* | |w| est pair } et

L1={w ∈ Σ * | |w| est impair } . On a alors les égalités suivantes:

L ∩ L1 = φ

L + L1 = Σ*

L = L1

L L1 = L1 = L1 L

L1 L1 = L \ {ε}

LL = L
43
Les opérations non ensemblistes
La concaténation : L1.L2 = {w|∃u ∈ L1, ∃v ∈ L2 : w = uv}
Exposant (La puissance concaténative ) :
Ln = L.L...L = {w|∃u1, u2, ...un ∈ L : w = u1u2...un}
n fois

On peut le définir par induction comme suit : L0 = {ε}, L1 = L et Ln


= L.Ln−1
Fermeture transitive de Kleene (l’étoile de Kleene) notée
L*: L* = L0 ∪ L1 ∪ ... ∪ Ln
Fermeture non transitive (l’étoile propre) noté L+ :
L+= L1 ∪L2.... ∪ Ln
Le langage miroir : LR = {w|∃u ∈ L : w = uR}.
44
Exemple
Considérons par exemple les deux langages L1={00,11}
et L2 = {0,1,01} définis sur l’alphabet {0,1}.

L1.L2 = {000,001,0001,110,111,1101}

Si L1 = {00; 11}, alors L12 ={0000,0011,1100,1111}

Si L = {a, ba}, alors L* est constitué de tous les mots dans


lesquels chaque b est suivi d’un a.

45
Propriétés des opérations sur les langages
Soient L1,L2,L3 et L4 quatre langages définis sur l’alphabet Σ :

L*= L+ +{ε} (L* )* = L*


L1.(L2.L3 )= (L1.L2).L3 L* .L* = L*
L1.(L2+L3 )= (L1.L2)+ (L1.L3) L1.(L2.L1 )*= (L1.L2)*.L1
L.L ≠ L (L1+L2)*=(L1*L2*)*
L1.(L2∩L3) ≠ (L1∩L2).(L1∩ L3) (L1+L2)* ≠ L1* +L2*
L1.L2 ≠ L2.L1

46

Vous aimerez peut-être aussi