jean-jacques.levy@inria.fr
21 janvier 1998
Les supports de cours sont enhttp://www.polytechnique.fr/poly/edu/informatique/ http://www.polytechnique.fr/poly/~levy/
Livres:
Introduction
Langages
Soit 
 un alphabet (fini) donné,
un mot est une chaîne de caractères de 
, 
le mot vide 
 a une longueur nulle, 
 est l'ensemble des mots sur 
,
 est l'ensemble des mots non vides sur 
.
On appelle langage tout sous-ensemble L de 
.
uv est le mot obtenu en concaténant u et v,
   et   
(uv)w = u(vw).
Exemples de langages
Prenons 
 et notons wR l'image miroir de w:
![]()
Algorithmes et semi-algorithmes
Attention: ici récursif est dans le sens de Kleene, donc différent de celui de la programmation. On dit aussi que l'appartenance à un langage récursif est décidable.
Grammaire
On cherche une description finie d'un langage (éventuellement infini). Chomsky a inventé la notion de grammaire formelle.
Une grammaire G est un quadruplet 
où:
 est l'alphabet des terminaux (ou tokens),
VN est l'alphabet des non-terminaux, 
,
 est l'axiome,
 est un ensemble fini de règles de production de la forme
 avec 
, 
, ![]()
Dérivations
Une grammaire génère les mots d'un langage en dérivant l'axiome.
Si 
 est une règle de production, on peut dériver
le mot 
 en 
. On écrit 
.
On pose 
 si 
, où 
 (fermeture transitive de 
).
Le langage généré par G est défini par
![]()
C'est donc l'ensemble des mots de l'alphabet terminal que l'on peut dériver depuis l'axiome.
Exemples de grammaire
Classification de Chomsky
4 types de grammaires selon la forme des règles de production.
type 0: quelconque
type 1: 
 avec 
(context sensitive)
type 2: 
,   
(context free - algébrique)
type 3:
avec 
, 
, ![]()
Un langage est de type i s'il existe une grammaire de type i qui le génère: langages réguliers, context-free, ou context-sensitifs.
Autres exemples de grammaires
La chaîne vide
Seuls les langages de type 0 contiennent le mot vide
. Pourtant, on voudrait que 
 soit de
type i, si L est de type i.
On change la classification de Chomsky en autorisant la règle 
 à chaque type de grammaire, pourvu que S ne soit pas
utilisé dans les parties droites des règles de production. La règle 
 ne peut donc être utilisée que pour ajouter 
dans le langage généré.
Lemme 1 Si G est de type i, il existe G1 de type i telle que L(G) = L(G1) et G1 n'utilise pas son axiome dans les parties droites de ses règles.
La démonstration est laissée en exercice.
Théorème 1 Si L est de type i, alors 
 et
 sont de type i.
Exercices
On note 
 le nombre de a que contient le mot x. Trouver
des grammaires générants les langages suivants:
Montrer que les langages réguliers sont aussi engendrés par des
grammaires dont les productions sont de la forme:
où ![]()
Montrer qu'il existe un algorithme pour reconnaître tout langage context-sensitif.
Montrer qu'il existe un semi-algorithme pour reconnaître tout langage de type 0.