• Aucun résultat trouvé

Langage r´ egulier (rationnel)

N/A
N/A
Protected

Academic year: 2022

Partager "Langage r´ egulier (rationnel)"

Copied!
6
0
0

Texte intégral

(1)

.

Inf 431 – Cours 15

Grammaires formelles

jeanjacqueslevy.net

secr´etariat de l’enseignement:

Catherine Bensoussan cb@lix.polytechnique.fr

Aile 00, LIX, 01 69 33 34 67

www.enseignement.polytechnique.fr/informatique/IF

.

Plan

1. La classification de Chomsky

2. Langages r´eguliers et expressions r´eguli`eres

3. R`egles avec parties droites vides dans les grammaires alg´ebriques 4. Forme normale de Chomsky

5. Propri´et´es de fermeture 6. Non expressivit´e

7. Langages r´ecursivement ´enum´erables

Bibliographie

John E. Hopcroft , Rajeev Motwani , Jeffrey D. Ullman,Introduction to Automata Theory, Languages, and Computation (2nd Edition), Addison-Wesley, 2000.

Dexter C. Kozen,Automata and Computability, Springer, 1999.

.

Langage r´ egulier (rationnel)

• Nombre impair deaet nombre impair deb A→aB

A→bC

B→aA B→bD B→b

C→aD C→bA C→a

D→aC D→bB

Exemple de d´erivation :

A→aB→aaA→aabC→aabaD→aabaaC→aabaaa

C

a a

b

b

b

b B a a

D A

.

Langage alg´ ebrique (context-free)

• langage{anbn|n >0}

S→aSb S→ab

Exemple de d´erivation : S→aSb→aaSbb→aaaSbbb→aaaabbbb

• syst`eme de parenth`eses

S→aSbS S→abS S→aSb S→ab Exemple de d´erivation :

S→aSbS→aaSbbS→aaabbbS→aaabbbaSb→aaabbbaabb

• automates `a pile[Chomsky, Schutzenberger]

On rajoute unepileau fonctionnement d’unautomate fini Par exemple pour{anbn|n >0}. Table de transitions (q1 ´etat initial,Z dans la pile,F ={q4})

a, Z a, X b, X ², Z

q1 (q2, ZX)

q2 (q2, XX) (q3, ²)

q3 (q3, ²) (q4, Z)

q4

(2)

.

Langage context-sensitive

• langage {anbncn|n >0}

S→² S→A

A→aABC CB→BC aB→ab bC→bc

A→aBC bB→bb cC→cc

Exemple de d´erivation :

S→A→aABC→aaABCBC→aaaBCBCBC

→aaaBBCCBC→aaaBBCBCC→aaaBBBCCC

→aaabBBCCC→aaabbBCCC→aaabbbCCC

→aaabbbcCC→aaabbbccC→aaabbbccc

Le contexte intervient ; les d´erivations ne font pas d´ecroitre la taille des mots.

Exercice 1

Donner une grammaire pour les langages suivants :

•{anbncndn|n >0} •{an2|n≥0}

•{uu|u∈Σ} •{anbncp|n≥0, p≥0} ∪ {anbpcp|n≥0, p≥0}

.

Langages et Grammaires

Un langageLest un ensemble de mots sur l’alphabet Σ(L⊂Σ).

Unegrammaire est un 4-upletG= (Σ, VN, S,P)

• Σalphabet des symboles terminaux

• VN ensemble de non terminaux,V = Σ∪VN

• S∈VN axiome

• P ensemblefini de r`egles de productions de la formeαi→βi

i∈V+−Σ, βi∈V)

.

Classification de Chomsky

type productions cat´egorie

0 α→β α→²

1 α→β |α| ≤ |β| context sensitive

2 A→β context-free

3 A→aB A→a r´egulier o`uα∈V+−Σ,β∈V+et A, B∈VN,a∈Σ.

Uneexceptionest possible pour l’axiomeS :

• il peut figurer dans une r`egleS→²

• alors il ne doit pas apparaˆıtre dans une partie droite de production.

.

Langage g´ en´ er´ e par une grammaire

• Uned´erivation ´el´ementaireuαv−→uβvs’obtient par application d’une r`egle α→β de production.

• Uned´erivation u−→ v est une suite de d´erivations ´el´ementaires u=u0−→u1−→u2. . . un=v (n≥0)

• Lelangage g´en´er´epar une grammaireG= (Σ, VN, S,P)est : L(G) ={u|S−→ u∈Σ}

• Un langage est de typeis’il existe une grammaire de typei qui le g´en`ere (0≤i≤3). SoitLi les langages de typei surΣ.

• CommeGde typei+ 1impliqueGde type i, on a

L3⊂ L2⊂ L1⊂ L0

.

• {anbn|n≥0} ∈ L2− L3

• {anbncn|n≥0} ∈ L1− L2

(3)

.

Notations abr´ eg´ ees

• Souvent onfactorise les productions qui ont unemˆeme partie gauche grˆace au (m´eta)symbole|(barre verticale) :

α→β12|. . . βn

pour

α→β1 α→β2 . . . α→βn

• Une autre notation fr´equente est proche de laBNF (Backus Naur Form), la fl`eche est remplac´e par “::=” :

α::=β12|. . . βn

• Par exemple, l’espace des termestest d´efini par t::=t+t|t∗t|t−t|t/t|nb

qui ressemble `a une d´efinition r´ecursive. Parfois on duplique les symboles non terminaux pour distinguer les occurences dans les parties droites :

t, t0::=t+t0|t∗t0|t−t0|t/t0|nb

.

Langage r´ egulier et automate fini

Th´ eor` eme 1

Un langage est r´egulier si et seulement s’il est g´en´er´e par un automate fini.

• D´emonstration : SiGest la grammaire (de type 3) g´en´erantL, on consid`ere l’automate non-d´eterministeA= (Σ, VN, S,{qf}, δ)tel que B∈δ(A, a)si A→aB

qf∈δ(A, a)si A→a AlorsT(A) =L(G).

• R´eciproquement, siL=T(A)et A= (Σ, Q, q0, F, δ), on consid`ere la grammaire G= (Σ, Q, q0,P) telle que

A→aBsi B∈δ(A, a) A→asiδ(A, a)∩F 6=∅ AlorsL(G) =T(A). ¤

.

Expression r´ eguli` ere et automate

(1/5)

• On admet l’´equivalence entre automates finis avec ou sans

²-transitions ;

• on suppose que les automates finis n’ont qu’un seul ´etat de fin qf

avecδ(qf, a) =∅pour touta∈Σ;

• de mˆeme, on supposeq06∈δ(q, a)pour toutq∈Q et a∈Σ;

q0 A qf

• alors les automates finis reconnaissent les expressions r´eguli`eres par les constructions suivantes.

.

Expression r´ eguli` ere et automate

(2/5)

a A B

A

²

²

² ²

A

B

• [construction due `a [Thompson](l’inventeur du syst`eme Unix)]

(4)

.

Expression r´ eguli` ere et automate

(3/5)

Th´ eor` eme 2

[Kleene]Un langage est r´egulier si et seulement s’il est d´ecrit par une expression r´eguli`ere.

• D´emonstration : Par la construction pr´ec´edente, on montre par r´ecurrence sur la taille de l’expression r´eguli`ere que toute expression r´eguli`ere est reconnue par un automate.

• R´eciproquement, soitA= (Σ, Q, q0, F)avecQ={q0, q1, . . . qn−1}.

Soit Lki,j l’ensemble des mots permettant d’aller deqi `aqj en passant par des ´etatsq` v´erifiant` < k. Alors

L0i,i={²} ∪ {a|δ(qi, a) =qi} L0i,j={a|δ(qi, a) =qj} Lk+1i,j =Lki,j∪Lki,k(Lkk,k)Lkk,j Et L=T(A) =S

qi∈FLn0,i. ¤

.

Expression r´ eguli` ere et automate

(4/5)

Pour(a+b)ab, l’automate est :

a b

a

b

²

²

² ²

En supprimant les²-transitions et en d´eterminisant, on obtient :

0 1 a

2 b

3 a

b a, b

a

0 a

12 b

13

b 1 a b

a

b a

.

Expression r´ eguli` ere et automate

(5/5)

• L’automate obtenu par la construction pr´ec´edente est non-d´eterministe, il a beaucoup de²-transitions.

• On peut toujours d´eterminiser l’automate obtenu, et consid´erer l’automate minimal.

• Il existe des constructions plus directes pour obtenir de bons automates (peut-ˆetre pas minimaux)[Glushkov ; Brzozowski ; Berry-Sethi ; Berstel-Pin]en consid´erant les expressions r´eguli`eres lin´eaires, et les expressions r´eguli`eres d´eriv´ees.

Mot vide dans une grammaire alg´

.

ebrique

• Les productionsA→α doivent avoir une partie droitenon vide (α6=²) `a l’exception de l’axiome.

• Or, dans le cours 6, on avait par exemple autoris´e S→aSbS S→².

• Mais les deux d´efinitions de grammaires alg´ebriques g´en`erent les mˆemes langagesalg´ebriques.

En effet, si on aB−→ ²et une r`egleA→αBβ, on ajoute la r`egle A→αβ. Puis on supprime toutes les productions C→².

Si on avaitS−→ ², on consid`ere un nouvel axiomeS0 et on ajoute les nouvelles r`eglesS0→²et S0→S.

• Sur l’exemple pr´ec´edent, cela donne successivement S→aSbS S→² S→abS S→aSb S→ab

S0→² S0→S S→aSbS S→abS S→aSb S→ab

Exercice 2

Supprimer les parties droites vides dans ces deux grammaires vues au cours 6

S→² S→SS S→aSb A→² A→[A nb A]

(5)

.

Forme normale de Chomsky

Toute grammaire alg´ebrique a une grammaire ´equivalente dont les r`egles sont de la formeA→a, A→BC (a∈Σ), `a l’exception de l’axiome qui peut avoir une r`egleS→².

D´emonstration :

• On trouve les non-terminales Bet C telles queB−→ C.

• Si on a A→αBβ avecC→γ et|γ| ≥2, on ajoute A→αγβ.

• Puis on supprime les r`eglesA→B.

• A pr´esent, les r`egles sont de la formeS→²,A→a,A→α avec

|α| ≥2.

Pour chaque production A→α=X1X2. . . Xn, on ajoute de nouvellesnon-terminalesYi et on pose

• Yi→Xi quandXi∈Σ

• A→X1Y2 Y2→X2Y3 . . . Yn−1→Xn−1Xn.

Exercice 3

Mettre en forme normale de Chomsky les grammaires de l’exercice pr´ec´edent.

La forme normale de Chomsky a une application : l’algorithme CYK pour analyser toute grammaire context-free en tempsO(n3)

.

Propri´ et´ es de clˆ otures (1/2)

• Unmorphisme φest toute fonction deΣdansΣ1´etendue sur les mots et sur les langages de mani`ere naturelle :

φ(uv) =φ(u)φ(v) et φ(L) ={φ(w)|w∈L}

• Les langages r´eguliers sont clospar morphisme.

• Les langages alg´ebriques sontclospar morphisme.

• Les langagesr´eguliers forment unealg`ebre de Boole(clos par union, intersection et compl´ement).

• Les langagesalg´ebriquessont clos parunion; ils ne sont pas clos par intersection puisque : {anbncn|n≥0}={anbnc|n≥0} ∩ {abncn|n≥0}

.

Propri´ et´ es de clˆ otures (2/2)

• Les langages alg´ebriques sont clos parintersection avec un r´egulier: Lalg´ebrique,Rr´egulier ⇒L∩Ralg´ebrique

• D´emonstration :

• G= (Σ, VN, S,P)g´en`ereL; A= (Σ, Q, q0, F) reconnaitR;

• la grammaireG0 suivante g´en`ereL∩R: G0= (Σ, V, S0,P0)

V ={Aq,q0|A∈VN o`uq, q0∈Q} ∪ {S0} P0 contient les r`egles productions suivantes :

• Aq0 0,q0

n→A1

q00,q01A2

q01,q02· · ·An

qn0−1,qn0

siA→A1A2· · ·An est une production deP avec : Ai∈VN∪Σet δ(qi−0 1, Ai) =qi0 si Ai∈Σ

• S0→Sq0,q avecq∈F

.

Non expressivit´ e

• Lemme de l’´etoile

SiLest r´egulier, il existen tel que :

∀w∈L |w|> n ⇒ w=uvxavec|v|>0etuvnx∈Lpour tout n≥0.

Exercice 4

Montrer que{anbn|n≥0}n’est pas r´egulier

Exercice 5

Montrer que{anban|n≥0}n’est pas r´egulier

• Lemme de la pompe

SiLest alg´ebrique, il existe ntel que :

∀w∈L |w|> n ⇒ w=uvxyz avec|vy|>0et uvnxynz∈Lpour toutn≥0.

Exercice 6

Montrer que{anbncn|n≥0}n’est pas alg´ebrique.

(6)

.

Langage r´ ecursivement ´ enum´ erable

Th´ eor` eme 3

Un langage est de type 0 (dans la classification de Chomsky) ss’il est r´ecursivement ´enum´erable.

• D´emonstration : D’abord si un langage est de type 0, on peut construire une machine de Turing qui le g´en`ere.

• R´eciproquement, supposons qu’un langageLv´erifieL=T(M)avec M= (Q,Σ,Γ, δ, q0, B, F)est une machine de Turing. On construit la grammaire G= (Σ∪ {$}, Q∪Γ∪ {S, S0}, S,P)avec comme

productions :

qX→Y psi (u, q, Xv)−→(uY, p, v) q$→Y p$si(u, q, ²)−→(uY, p, ²) ZqX→pZY si(uZ, q, Xv)−→(u, p, ZY) Zq$→pZY$si (uZ, q, ²)−→(u, p, ZY) S→q0S0

S0→aS0 S0→$

Alorsu$∈L(G)ssi u∈T(M). ¤

.

Quelques exercices

Exercice 7

Montrer qu’il existe un algorithme pour reconnaˆıtre un langage contexte-sensitif, c’est-`a-dire r´epondant oui si le mot d’entr´ee est dans le langage, et non s’il n’appartient pas.

Exercice 8

Montrer qu’il n’existe qu’un semi-algorithme pour reconnaˆıtre un langage r´ecursivement ´enum´erable, c’est-`a-dire

r´epondant oui si et seulement si le mot d’entr´ee est dans le langage. Le programme peut ne pas fournir de r´eponse si le mot n’est pas dans le langage.

Exercice 9

Montrer qu’il existe une analyse descendante fonctionnant pour tout langage alg´ebrique, mais avec retours en arri`ere

(backtracking) dans le mot d’entr´ee. Complexit´e ?

Exercice 10

Quel est la notion d’arbre syntaxique pour les langages non alg´ebriques ?

Exercice 11

Donner un algorithme pour trouver les non-terminalesA telles queA−→ ²dans un langage alg´ebrique.

Exercice 12

Donner un algorithme pour trouver les non-terminalesA telles queA−→ B (B∈VN) dans un langage alg´ebrique.

Références

Documents relatifs

(Suggestion : appliquer le lemme de pompage pour trouver la forme des mots longs. Et ´ ecrire le langage comme union de langages r´ eguliers.). Partiel 3 heures 23

LE LANGAGE DES

Enn, il convient d'insister sur le fait que toutes ces propriétés ne sont vraie (et souvent n'ont de sens) que pour des fonctions numériques; on verra en particulier au chapitre 15,

Il est possible d’associer ` a chaque score possible un ´ etat, puis il faut alors construire une table de transition en fonction du point marqu´ e (c’est-` a-dire de la lettre lue).

Exercice 7 Montrer qu’il existe un algorithme pour reconnaˆıtre un langage contexte-sensitif, c’est-` a-dire r´ epondant oui si le mot d’entr´ ee est dans le langage, et non

la ligne *** renvoie un vecteur de longueur 5 (le nombre de colonnes de A) dont chaque élément est la somme des éléments d’une colonne de A.. 2.7 Les

Les fonctions lapply et sapply calculent la même fonction sur tous les éléments d’un vecteur ou d’une liste. lapply(X,FUN, ARG.COMMUN) permet d’appliquer la fonction FUN à tous

C’est cette suspension de la référence dans le type qui fait que le langage est un système autonome mais qui peut s’appliquer à un dehors, de la même manière qu’en