Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
1
1. Les langages formels
La théorie des langages (formels) forme une des parties les plus
importantes de l’informatique d’aujourd’hui. Les principales
applications des langages formels sont :
- L’étude de la calculabilité,
- La compilation,
- l’étude des langages naturels (traitement automatique),
- l’étude des systèmes formels en mathématiques et
- les automates à états finis.
2
1.1 Définitions générales
Définition 1 :
Un alphabet est un ensemble fini non vide que nous noterons . Les
éléments de sont appelés symboles ou lettres.
Exemple :{0,1}, ASCII,…
Définition 2 :
Un mot sur un alphabet est une suite de n symboles de , avec n0.
Le mot composé de 0 symboles est appelé le mot vide et est noté .
3
Définition 3 :
L’opération de concaténation consiste à placer deux mots m et m’ côte à
côte pour former le mot noté m.m’ constitué de la suite des symboles de
m suivi de la suite des symboles de m’. Le . est parfois omis. On notera
mi le résultat de la concaténation de i mots, tous égaux à m.
Définition 4 :
On appelle langage engendré par l’alphabet l’ensemble de tous les
mots sur . On notera cet ensemble *. On notera + l’ensemble * privé
de mot vide (+=*- {}).
4
Définition 5 :
Les langages formels sur l’alphabet sont les sous–ensembles de * (on
parlera simplement de langages sur ).
Définition 6 :
L’alphabet d’un langage L, noté (L), est le plus petit ensemble tel
que L est un langage sur .
Définition 7 :
Soit et deux alphabets. Un morphisme de langage f est une
application définie de * dans * vérifiant la propriété :
m*, m’*, f(m.m’)=f(m)f(m’)
5
Exemples
Soit ={a,b} alors * est l’ensemble de mots ne contenant que des a
et des b. Le langage L={ab, b, bba, bbbbaba} est un langage sur ,
fini. Le langage L’={apbq, p0, q0} est un autre langage sur ,
infini.
L’alphabet du langage L={a, ba} est ={a, b}. L’alphabet du
langage L’={a, aaaa, aa} est {a}. On peut cependant remarquer que
L’ est aussi un langage sur .
La concaténation des mots m=aabaab et m’=abb donne le mot
mm’=aabaababb.
6
Propriétés :
x. = .x = x l’élément neutre.
x.(y.z) = (x.y).z l’associativité.
Remarque :
On dit que * possède une structure de monoïde pour. car * est muni
d’une loi de composition interne ., dont est l’ensemble neutre et qui
est associative.
L1 L2 = {u | uL1 u L2}
L1 L2 = {u | uL1 u L2}
8
Remarque :
Toutes les propriétés des opérations ensemblistes sont évidemment
valables dans le cas des langages.
9
On appelle itéré de L le langage noté L* (étoile de Kleene), défini par le
schéma d’induction : Pour tout entier k et pour tout langage L nous
pouvons définir L* de la manière suivante :
L° ={} et pour k1 Lk = Lk-1.L
Cela permet de montrer aisément que L* = Lk
k0
11
L’ L’’ LL’ LL’’ et L’L L’’L
* =
L* = LL*
(L*)* = L*
L*L* = L*
L1 L2 = L2 L1 commutativité
L=L neutre
L1 (L2 L3) = (L1 L2) L3 associativité
LL=L idempotent
L.(L1 L2) = L.L1 L.L2 distributivité
12
(L1 L2).L = L1L L2L distributivité
L1.(L2.L3) = (L1.L2).L3 associativité
Autre définition
Soit u *.
|u| la longueur de u, || = 0.
|u|a le nombre d’occurrences des symboles a dans u.
Exemple
Soit = {a, b}, u =ab et v=abaa. Alors :
|u|=2, |v|=4. |u|a=1, |v|a=3.
13
2. Les grammaires formelles
Le but d’une grammaire est la production d’un langage à partir d’un
alphabet et de règles de production.
14
Définition 2.2 :
x
R y ssi il existe des mots w1, w2 et une règle de production uv
tels que x = w1uw2 et y = w1vw2. On dit alors que y est produit
directement par x en accord avec R.
n
x
R y ssi il existe des mots u0, u1,…,un avec x=u0, ui
R ui+1 fini
i<n, un=y.
n
x
* y ssi n 0 avec x
R y.
R
Alors u0 u1 … un est une dérivation de un à partir de u0. Si R
est connu, nous pouvons omettre R.
* est appelée relation de dérivation. On dit que y dérive x.
15
Exemple :
T = (, P,→) avec = {a,b,c}, P = {ba→ ab, ca→ ac, bc→ a, cb→ a}.
Une dérivation est par exemple :
bbccaba bacaba
*
abcaba aaaba aaaab
On a donc l’hypothèse : u * i, j 0 : u aibj ou u aicj
17
peut considérer que u, v, w, … des mots sur et , , des mots sur
N.
Remarque :
Chaque grammaire G = (N, , P, S) définit un système de réécriture RG
= (N , P, ) avec l’axiome S.
n *
Notation :
G ,
G
, .
G
Définition 2.4 :
Le langage généré par la grammaire G est défini par :
L(G) = {w*S
* w}. (w est dérivable dans G).
18
Définition 2.5 :
Deux grammaires G et G’ sont dites équivalentes si elles génèrent le
même langage c-à-d L(G) = L(G’).
Exemple :
G3 = ({A,S} , {0,1}, P, S) où
P = {S 0, S 1, S 1A, A 0A, A 1A, A 0, A 1}
Notation :
A 1| 2 pour A 1, A 2
Pour la partie gauche de la première règle de production, on utilise le
symbole de départ S.
19
Exemples :
G1 : S abc | aAbc
Ab bA
Ac Bbcc
bB Bb
aB aaA | aa
G2 : S aB | bA
A a | aS | bAA
B b | bS | aBB
20
G3 : S 0 | 1 | 1A
A 0A | 1A | 0 | 1
Exemple de dérivation
S 1A 11A 110A 1100.
L(G3) est l’ensemble des représentations binaires d’entiers (qui ne
commencent pas par 0).
Hypothèse:
L(G2) = {w {a,b}* | |w|a = |w|b}.
Dans les mots de L(G2), le nombre d’occurrences de a est égal au
nombre d’occurrences de b.
21
Démonstration par récurrence sur |w| 1
Afin de simplifier la démonstration, nous introduisons ces trois sous
hypothèses :
(1) S
* w |w|a = |w|b
(2) A
* w |w|a = |w|b + 1
(3) B
* w |w|b = |w|a + 1
Avec (1) on a l’hypothèse initiale.
Pour |w| = 1, on a (1) car les deux parties sont fausses. (2), (3) sont
clairs.
Pour |w|=n, nous montrons pour (1) et c’est analogue pour (2) et (3).
Supposons que (1) est vraie pour n démontrons pour n + 1 : |w| = n + 1.
22
‘’ :
On a S
* w : la dérivation est donc S aB …
* av=w
avec |v| = n (ou bien : S bA …
* bv = w)
B
* v puisque la propriété (3) est valable pour n :
|v|b = |v|a + 1
Calculons :
|w|a = |av|a=1+ |v|a= |v|b= |a|b+|v|b=|av|b= |w|b
et de même façon on raisonne pour w = bv avec (2).
23
‘’ :
|w|a = |w|b et on a |w| = n + 1, w = av alors |v| = n et |v|b = |v|a + 1 alors
d’après (3) : B
* v
Nous obtenons la dérivation aB av
* et ensuite
SaB
* av=w.
24
Définition 2.6 :
Soit G une grammaire et S son axiome. On dit que G satisfait la
condition d’ ssi apparaît au plus dans la règle S et que S
n’apparaît dans aucune partie droite des règles de G. (Alors est
dérivable avec S ).
Définition 2.7 (Classification de Chomsky des grammaires) :
Une grammaire G = (N, , P, S) est
- de type 0 (ou récursivement énumérable) dans tous les cas,
autrement dit, il s’agit d’une grammaire dont au moins une des
25
règles comprend une partie gauche plus longue que sa partie
droite ( , || > || ).
- de type 1 ou dépendante de contexte : si pour chaque règle
P, || || et , (N )+ (à l’exception de S ).
- de type 2 ou hors contexte (à contexte libre) si pour toute règle
dans P, on a N.
- de type 3 ou linéaire droite (respectivement linéaire gauche) ou
régulière, lorsque chaque règle de P est du type A wB avec A,
B N et w * (respectivement A Bw ou pour linéaire
gauche) ou A w (w *) (règle dite terminale).
26
Pour chacun des types 1, 2 et 3, la condition d’ est valable.
Remarques :
- Les grammaires G1, G2 et G3 sont respectivement de types 1, 2 et
3.
- Pour les grammaires, on a :
linéaire droite hors contexte dépendante de contexte type 0
(toute grammaire régulière est à contexte libre).
- Tout langage fini est régulier.
- Le terme de contexte libre signifie que tout symbole non
terminal peut être remplacé par une séquence quelle que soit sa
position par rapport à d’autres symboles. Ainsi, si une des règles
27
de production était aA ab, le symbole A ne pourrait être
substitué par b que s’il était précédé de a. Ce type de grammaire
n’est pas à contexte libre.
Définition 2.8 :
Un langage L * est dit régulier, hors-contexte, dépendant de contexte
ou de type 0 s’il est généré respectivement par une grammaire régulière,
hors-contexte, dépendante de contexte ou de type 0.
28
Définition 2.9 :
Une grammaire G = {N, , P, S} est linéaire ssi chaque règle de P est de
forme :
A uBv ou A u où A, B N et u, v *.
Notation :
REG = {L * | L régulier}.
CF = {L * | L à contexte libre}.
CS = {L * | L dépendant de contexte}.
RE = {L * | L est de type 0}.
Remarque : REG CF CS RE
29
2.3. Formes normales
Nous avons vu que des grammaires différentes peuvent engendrer le
même langage. La question que l’on peut se poser est la suivante :
existe-t-il pour un langage donné une grammaire « plus simple » que les
autres qui l’engendre ?
Théorème 2.1 (Formes normales des grammaires régulières) :
Soit L un langage régulier. Alors L est généré par une grammaire telle
que chaque règle est soit du type A aB, soit du type A a. A, B sont
des symboles non-terminaux et a est un symbole terminal.
30
Théorème 2.2 (Forme normale de Chomsky) :
Soit L un langage à contexte libre tel que L. Alors, il existe une
grammaire G générant L telle que toutes les règles de production de G
sont de type A BC ou A a. Ici A, B, C sont des symboles non-
terminaux et a est un symbole terminal.
Remarque :
Signalons qu’en rajoutant la règle de production A , nous sommes
en mesure de générer tous les langages à contexte libre.
31
Théorème 2.3 (Forme normale d’une grammaire de type 0) :
Soit L un langage de type 0. Alors, il existe une grammaire G générant L
et telle que toutes les règles de production de G sont du type : A BC,
AB CD, A a ou A . Ce résultat fournit donc une forme
normale pour toute grammaire.
Nous ne donnerons pas la démonstration de ce théorème. Elle consiste
principalement à supprimer dans la grammaire initiale qui génère le
langage, toutes les règles de production qui n’ont pas une forme
correcte, en ajoutant des symboles non-terminaux dans N pour conserver
la même puissance génératrice au langage.
32
Exemple :
Soit la grammaire G = (N, , P, S)
N = {S, A, B}, = {a, b}, P = {S AB, AB BA, A a, B b}
Exemple :
S aSa | bSb |
2.4 Transformations de grammaires
On définit les conditions suivantes
+
sur une grammaire G à contexte libre
G= (N, , P, S).
+
(1) Sans cycle ; il n’existe pas A N tel que A A.
(2) Pas de symbole non-terminal inaccessible.
33
A N x, y (N )* : S
* xAy.
34
(9) Forme normale de Greibach : chaque règle est A a
a, (N )* (G est libre de ).
Proposition :
(a) Pour chaque grammaire à contexte libre G G’ grammaire à
contexte libre telle que L(G’) = L(G) et G’ satisfait (1) ou (2) ou
(3) ou (3’) ou (5) ou (6) ou (7) ou (8).
(b) Pour chaque grammaire à contexte libre G, G’ grammaire à
contexte libre telle que G’ satisfait (4) ou (9) et
L(G’) = L(G) \ {} si L(G)
L(G’) = L(G) sinon
35