6. Cas des langages rationnels

On peut montrer qu'un langage est défini par une grammaire linéaire droite si et seulement si c'est un langage rationnel.


Théorème grammaire linéaire et langage rationnel

Un langage est rationnel si et seulement s'il est linéaire droit.

Démonstration :

Posons d'abord deux lemmes importants :


Lemme 1

(1) ∅, (2) {ε} et (3) {a} avec a ∈ A sont des langages linéaires droits.

Démonstration du lemme 1


Lemme 2

Si L1 et L2 sont linéaires droits, alors (1) L1 ∪ L2, (2) L1L2 et (3) L1* sont linéaires droits.

Démonstration du lemme 2

Nous pouvons alors démontrer notre théorème :

Par exemple, Soit G défini par {S → 0A | 1S | ε ; A → 0B | 1A ; B → 0S | 1B} on a alors le système S = 1S + 0A + ε ; A = 1A+0B ; B = 1B + 0S. En posant X1=S, X2=A et X3=B, on a le système d'équations donné en exemple lors de la présentation de la méthode de résolution d'un tel système. G génère des chaînes de caractère dont le nombre de 0 est divisible par 3.

Remarque : De cette démonstration et de ce que l'on a vu à propos du passage d'une suite de définitions rationnelles à une expression rationnelle, il est possible de déduire une méthode pour trouver une expression rationnelle (et donc un langage rationnel) à partir d'une grammaire linéaire droite. Ce passage d'une grammaire linéaire droite G=(A, Q, S, R) à un système d'expressions rationnelles SR s'effectue par une conversion des règles : A → rA | sB | t ∈ R ⇔ X = rX + sY + t ∈ SR. L'expression du langage est l'expression de la variable du système associée à S.

Par conséquent, les expressions rationnelles sont aussi appelées "expression régulières" (plus souvent utilisé dans la littérature anglo-saxonne). De même, les langages rationnels sont aussi appelés les langages réguliers.

Exercices et tests :

Exercice 6.1. Soit les deux grammaires suivantes :

  1. Donner le type de ces grammaires.
  2. Décrire le langage engendré par les grammaires Gex6 et Gex7.
  3. Proposer si possible les grammaires linéaires (de type 3) équivalentes ainsi que les expressions rationnelles décrivant ces langages.

Solution

Exercice 6.2. Proposer les grammaires, avec les règles sous forme BNF, permettant d'engendrer les langages suivants :

Solution

Exercice 6.3. Donner une grammaire pour les langages suivants. Préciser son type.

A={a,b,c} et L1={w ∈ A* | w=ambncp; m,n,p > 0}

A={a,b,c} et L2={w ∈ A* | w=apbqcr; p,q,r > 0; (p=q ou q=r)}

A={a,b} et L3={w ∈ A* | w=apbq; p,q ≥ 0; p ≠ q}

A={a,b,c} et L4={w ∈ A* | w=apbqcr; p,q > 0; r ≥ 0; p+q ≥ r}

Solution

Exercice 6.4. Soit le vocabulaire V={a,+,=}. Donner une grammaire hors-contexte pour le langage L dont chaque mot représente une addition correcte de deux suites de symboles a. Par exemple : "aa+aaa=aaaaa".

Solution


mercredi, 26/11/03 9:26