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
, | |
context-free | |
context-free |
, |
context-sensitive |
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
, |
context-free |
, | |
régulière |
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.