• Aucun résultat trouvé

Propriétés de fermeture de la classe des langages algébriques

Dans le document ThéoriedesLangages S upportdecours (Page 54-67)

3.12.1 Lemme de Bar-Hillel . . . 60 3.13 Série d’exercices . . . . 62

Langages algébriques et AàP

Les langages de type 2, appelés aussi les langages algébriques ou encore les langage hors contexte, sont reconnus par des machines abstraites semblables aux AEF à une différence prêt qui est la mémoire, cette mémoire est une pile. Le présent chapitre est consacré à ce type de langages ainsi qu’aux automates à piles.

Définition d’une grammaire ambiguë : Une grammaire G est dite ambiguë si et seulement s’il existe au moins un mot ambigu appartenant à L(G).

Exemple : Soit G la grammaire qui possède les règles de production suivantes : S→S∧S|S∨S|S⇒S|S⇔S|¬S |q|p

Question : Montrer que G est ambiguë.

Réponse : Le mot p∧q ⇔p est ambigu, car il existe deux dérivations différentes qui nous permettent de l’atteindre, si nous numérotons les règles de 1 à 7 alors on aura : S`(4) SS `(1) SSS `(7) pSS`(6) pqS `(7) pqp.

S`(1) SS `(6) pS`(4) pSS `(6) pqS`(7) pqp.

Par conséquent la grammaire G est ambiguë.

Remarque 1 : Certains langages peuvent être générés, à la fois, par des grammaires ambiguës et des grammaires non ambiguës.

Remarque 2 : Il n’existe aucun algorithme qui permet de trouver une grammaire non ambiguë (si elle existe) qui génère un langage.

3.3 Grammaire propre

Soit G(T, N, S, P) une grammaire.

3.3.1 Non terminal productif et improductif

• Un non terminal A∈N est dit productif si et seulement si∃ω ∈Ttel-queA` ω;

• Un non terminal A∈N est dit improductif si et seulement si ∀ω ∈T, il n’existe aucune dérivation indirecte tel-que A` ω.

3.3.2 Non terminal accessible et inaccessible

• Un non terminal A∈N est dit accessible si et seulement si∃α∈(T ∪N) tel-que S ` α et A apparaît dans α;

• Un non terminal A∈N est dit inaccessible si et seulement si ∀α ∈ (T ∪N), si S ` α alors A n’apparaît pas dans α.

Langages algébriques et AàP

Remarque : Les règles de production qui contiennent des non terminaux improduc-tifs ou inaccessibles sont inutiles et peuvent être supprimées sans aucune influence sur le langage généré par la grammaire.

3.3.3 Production unitaire

On appelle production unitaire toute règle de production sous la forme AB où A, B ∈N.

Remarque : Pour supprimer la règle unitaire AB, il suffit de rajouter aux règles de production de A toutes les productions de B. Cette suppression peut faire apparaître d’autres productions unitaires, c’est pour cela qu’il faut appliquer un algorithme récursif.

3.3.4 Grammaire réduite

Une grammaire est dite réduite si et seulement si tous les non terminaux de ses règles de production sont atteignables (accessibles) et productifs.

3.3.5 Grammaire propre

Une grammaire est dite propre si et seulement si :

• Elle est réduite ;

• Elle ne contient pas de productions unitaires ;

• Il n y a que l’axiome qui peut générerε, avec la condition qu’il n’apparaisse dans aucun membre droit des règles.

Pour éliminer lesε-productions, il faut déterminer d’abord l’ensemble des non termi-naux dérivables enε(directement ou indirectement) ; ensuite, on modifie les productions contenant ces non terminaux, de sorte à remplacer dans toutes les parties gauches des productions les symboles annulables par le mot vide, de toutes les manières possibles.

Exercice : Soit G la grammaire définie par les règles de production suivantes : S→AB|EaE

A→Aa|aB B→bB|aA C→AB|aS

E→D D→dD|ε

1. Trouver le langage généré par G.

2. Transformer G en une grammaire réduite.

3. Transformer G en une grammaire propre.

4. Vérifier le langage trouvé dans la question 1.

Solution :

1. L(G)={diadj/i, j ≥0}.

2. Le non terminal C n’est pas atteignable, A et B ne sont pas productifs, donc on enlève les règles contenant A, B ou C et on aura la grammaire suivante : S→EaE

E→D D→dD|ε

3. La grammaire possède une production unitaire E→D, on l’enlève et on remplace tous les E par des D et on aura la grammaire suivante :

S→DaD D→dD|ε

La grammaire n’est toujours pas propre à cause de la règle D→ε, donc on l’éli-mine et pour chaque D qui apparaît à droite d’une règle on crée une autre règle, on obtient la grammaire propre suivante :

S→DaD|aD |Da |a D→dD|d

4. Le langage trouvé est le bon, mais plus facile à trouver avec la grammaire propre.

3.4 Forme normale de Chomsky

Une grammaire G=(T, N, S, P) est dite sous forme normale de Chomsky (FNC) si et seulement si toutes ses règles de production sont sous la forme ABCAa avecA, B, C ∈ N etaT.

Proposition : Pour toute grammaire algébrique, il existe une grammaire équivalente sous forme normale de Chomsky.

Comme les AEF, les automates à piles (AàP) sont des machines abstraites qui affirment, ou pas, l’appartenance d’un mot à un langage. Les langages reconnus par

les AàP sont les langages algébriques (Type 2). En plus des composantes des AEF, les AàP possèdent une pile pour le stockage.

Exemple préliminaire : Les étapes de reconnaissance du langage {aibi, i≥1} par un AàP pourraient être les suivantes :

1. Lire les a, les stocker dans la pile et ne pas changer d’état ; 2. A la rencontre du premier b, dépiler un a et changer d’état ; 3. Dépiler un a pour chaque b rencontré ;

4. Si les a de la pile se terminent au même moment que les b lus, alors le mot appartient au langage.

3.6.1 Définition formelle

Un AàP est défini formellement par un septuplé (Σ,Γ, Q, q0, δ, Z0, F) où :

• Σ est l’alphabet d’entrée ;

• Γ est l’ensemble des symboles auxiliaires. Γ∪Σ est l’alphabet de la pile ;

Q est un ensemble fini d’états ;

q0 est l’état initial ;

Z0 est le symbole de fond de pile, Z0 ∈Γ ;

F est l’ensemble des états finaux (d’acceptation) ;

δest la fonction de transition, elle est définie de (Γ∪Σ)×Q×Σ dans (Γ∪Σ)×Q.

δ(u, q, a) = (α, p) peut avoir trois effets sur la pile, selon la valeur de α :

• Siα =u, alors pas de changement dans la pile ;

• Siα =ε, cela signifie qu’on a dépilé u ;

α=uv1v2...vn avecvi ∈Γ, cela signifie qu’on empilev1, puisv2 ... puis vn dans cet ordre.

Exemple : Trouver l’AàP qui reconnait le langage L={aibi, i≥1}.

Réponse :

δ(z0, q0, a) = (z0a, q1) (empiler le premier a et et passer à l’état q1) ;

δ(a, q1, a) = (aa, q1) (empiler tous les autres a et rester l’état q1) ;

δ(a, q1, b) = (ε, q2) (à la rencontre du premier b, dépiler un a et passer à l’état q2) ;

Langages algébriques et AàP

δ(a, q2, b) = (ε, q2) (dépiler un a pour chaque b et rester dans l’état q2) ;

δ(z0, q2, ε) = (z0, qf inal) (si la pile se vide au même moment que le mot à recon-naître se termine, alors passer à un état final).

Notation : Pour des raisons de légèreté d’écriture, au lieu d’écrire δ(z0, q0, a) = (z0a, q1), nous écrivonsz0q0az0aq1.

3.6.2 Langage reconnu par un AàP

Soit A=(Σ,Γ, Q, q0, δ, Z0, F) un AàP.

3.6.2.1 Définition d’une configuration

Une configuration de l’AàP A, à un certain instant, est donnée par le contenu de la pile, l’état courant de l’AàP et du mot qui reste à lire (contenu de la pile, état courant, mot qui reste à lire). La configuration initiale est (Z0, q0, ω), où q0 est l’état initial de l’AàP et ω le mot soumis à A (à reconnaître).

3.6.3 Définition d’une dérivation directe

On dit qu’une configuration (αu, q, aω) dérive directement la configuration (αβ, p, ω) si et seulement siuqaβp. On note (αu, q, aω)|= (αβ, p, ω).

3.6.4 Définition d’une dérivation indirecte

On dit qu’une configuration (α, q, ω1) dérive indirectement une autre configuration (β, p, ω2), si et seulement s’il existe 0, 1 ou plusieurs dérivations directes qui, à partir de (α, q, ω1), mènent à la configuration (β, p, ω2). On note (α, q, ω1) |=(β, p, ω2).

3.6.5 Définition du langage reconnu par un AàP

Les AàP peuvent reconnaître les langages de deux modes differents, à savoir la reconnaissance par état final et la reconnaissance par pile vide.

3.6.5.1 Reconnaissance par état final

Le langage reconnu par l’AàP A par état final, noté L(A), est défini par : L(A) = {ω∈X/(z0, q0, ω)|= (α, qf, ε)}avec qfF.

3.6.5.2 Reconnaissance par pile vide

La notion d’état final dans ce type de reconnaissance n’existe pas, ainsi un AàP qui reconnaît par pile vide est défini par un sextuplé (Σ,Γ, Q, q0, δ, Z0) (et non un septuplé). ainsi le langage reconnu par pile vide par un automate A est défini par L(A) = {ω∈X/(z0, q0, ω)|= (ε, q, ε)}.

3.6.5.3 Proposition :

Le mode de reconnaissance par état final est équivalent au mode de reconnaissance par pile vide.

Remarque : Un AàP reconnaît un et un seul langage, mais le même langage peut être reconnu par plusieurs AàP.

Langages algébriques et AàP

2. aq0aaaq0 3. aq0bq1 4. aq1bq1 5. z0q1bz0q2 6. z0q2bz0q2 7. z0q2q2 8. aq1q3 9. aq3q3 10. z0q3q3 Questions :

1. Les mots ab, abb, aab appartiennent-ils à L(A) ? 2. Trouver le langage L(A).

Solution Partie I :

L’AàP du langage L1 : L1 est un langage régulier, on peut donc trouver un AàP sans l’exploitation de la pile. Soient les instructions suivantes :

1. z0q0az0q1, pour lire le premier a (au moins un a).

2. z0q1az0q1, pour lire tous les autres a.

3. z0q1bz0q2, pour lire le premier b (au moins un b).

4. z0q2bz0q2, pour lire tous les autres b.

5. z0q2z0qf inal, une fois qu’il n y a plus de b à lire, l’AàP transite vers un état final.

L’AàP du langage L2 : 1. z0q0az0aq0

2. aq0aaaq0 3. aq0bq1 4. aq1bq1

5. aq1qf inal(i > j) 6. z0q1qf inal(i=j)

L’AàP du langage L3 : 1. z0q0az0aq0

2. aq0aaaq0 3. aq0bq1 4. aq1bq1 5. z0q1bz0q2 6. z0q2bz0q2 7. z0q2z0qf inal

8. z0q0z0qfinal, Pour reconnaîtreε.

9. z0qbz0q2, Dans le cas ou il n y a pas de a.

10. z0q1z0qf inalPour reconnaître le mot ab.

Solution Partie II : Dans ce qui suit, nous étudions l’appartenance des mots : L’appartenance du mot ab :

Pile état mot inst

z0 q0 ab 1

z0a q0 ab 3

z0 q1 ab aucune instruction donc ab∈/ L(G) L’appartenance du mot abb :

pile état mot instruction z0 q0 abb 1

z0a q0 abb 3 z0 q1 abb 5 z0 q2 abb 7

/ q2 abb pile vide et rien à lire, donc abb ∈L(G) L’appartenance du mot aab :

pile état mot instruction z0 q0 aab 1

z0a q0 aab 2 z0aa q0 aab 3 z0a q1 aab 8 z0 q3 aab 10

/ q3 aab pile vide et rien à lire, donc aab ∈ L(G)

Langages algébriques et AàP

Langage reconnu par l’AàP : L(A) = {aibj/i6=j, i>1, j >1}.

Soit la grammaire algébrique G=(T, N, S, P), il s’agit de trouver un AàP A=(Σ,Γ, Q, q0, δ, Z0, F) reconnaissant le langage L(G) par pile vide.

1. En premier lieu, on transforme G sous forme normale de Greibach.

2. Ensuite, on définit les paramètres de l’AàP comme suit : Σ =T;

Γ =N; Q={q0}; z0 =S;

Définition de δ :δ(x, q0, x) = (ε, q0) et si AαP alors δ(A, q0, ε) = (αR, q0).

Exemple : Soit G la grammaire qui est définie par les règles de production suivantes : SaA |bB|ε

AbS |aAA BaS |bBB

Trouver le langage généré par G puis l’AàP qui reconnaît L(G).

Réponse : L(G) ={ω ∈ {a, b}/|ω|a=|ω|b}.

L’AàP qui reconnaît L(G) par pile vide est donné par Σ ={a, b}; Γ ={S, A, B};

Q={q0}; z0 =S;

Définition de δ :

SaA donneSq0Aaq0; SbB donne Sq0Bbq0; Sε donne Sq0q0; AbS donneAq0Sbq0; AaAAdonne Aq0AAaq0; BaS donneBq0Saq0; BbBB donneBq0BBbaq0; etaq0aq0 etbq0bq0.

Langages algébriques et AàP

3.11 Propriétés de fermeture de la classe des lan-gages algébriques

La classe des langages algébriques possède est fermée par rapport aux opérations régulières, en d’autres termes, si L1 etL2 sont des langages algébriques alors :

L1.L2 est un langage algébrique ; L1L2 est un langage algébrique ; L1 est un langage algébrique ; LR1 est un langage algébrique.

Remarque : Contrairement à la classe des langages rationnels, la classe des langages algébriques n’est pas fermée (stable) par rapport l’intersection et au complément. Ce-pendant, l’intersection d’un langage algébrique et d’un langage régulier est toujours algébrique.

Dans le document ThéoriedesLangages S upportdecours (Page 54-67)

Documents relatifs