On peut montrer qu'un langage est défini par une grammaire linéaire droite si et seulement si c'est un langage rationnel.
|
Un langage est rationnel si et seulement s'il est linéaire droit. |
Démonstration :
Posons d'abord deux lemmes importants :
|
(1) ∅, (2) {ε} et (3) {a} avec a ∈ A sont des langages linéaires droits. |
|
Si L1 et L2 sont linéaires droits, alors (1) L1 ∪ L2, (2) L1L2 et (3) L1* sont linéaires droits. |
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 :
Exercice 6.2. Proposer les grammaires, avec les règles sous forme BNF, permettant d'engendrer les langages suivants :
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}
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".
mercredi, 26/11/03 9:26