Langages Formels Jean-Philippe Peyrache Université Jean Monnet - Faculté des Sciences et Techniques Licence Informatique - Semestre 6 J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 1 / 45 Plan du cours 1 Généralités 2 Grammaires algébriques 3 Formes normales 4 Propriétés de clôture et lemme d’Ogden J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 2 / 45 Généralités Généralités J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 3 / 45 Généralités Définitions et notations Alphabet A ou Σ : ensemble fini de lettres/symboles → Σ1 = {0,1}, Σ2 = {a, b, c, d } J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 4 / 45 Généralités Définitions et notations Alphabet A ou Σ : ensemble fini de lettres/symboles → Σ1 = {0,1}, Σ2 = {a, b, c, d } Mot de Σ : suite finie d’éléments de Σ → 1000101 sur Σ1 , abbddca sur Σ2 J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 4 / 45 Généralités Définitions et notations Alphabet A ou Σ : ensemble fini de lettres/symboles → Σ1 = {0,1}, Σ2 = {a, b, c, d } Mot de Σ : suite finie d’éléments de Σ → 1000101 sur Σ1 , abbddca sur Σ2 Σ⋆ représente l’ensemble des mots possibles sur Σ J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 4 / 45 Généralités Définitions et notations Alphabet A ou Σ : ensemble fini de lettres/symboles → Σ1 = {0,1}, Σ2 = {a, b, c, d } Mot de Σ : suite finie d’éléments de Σ → 1000101 sur Σ1 , abbddca sur Σ2 Σ⋆ représente l’ensemble des mots possibles sur Σ |u| dénote la longueur du mot u J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 4 / 45 Généralités Définitions et notations Alphabet A ou Σ : ensemble fini de lettres/symboles → Σ1 = {0,1}, Σ2 = {a, b, c, d } Mot de Σ : suite finie d’éléments de Σ → 1000101 sur Σ1 , abbddca sur Σ2 Σ⋆ représente l’ensemble des mots possibles sur Σ |u| dénote la longueur du mot u ǫ représente le mot vide, de longueur 0 J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 4 / 45 Généralités Opérations sur les mots Soit Σ un alphabet et u = (u1 , . . . , um ) et v = (v1 , . . . , vn ) deux mots de Σ. On appelle concaténation de u et v le mot uv = (u1 , . . . , um , v1 , . . . , vn ). ǫ est donc l’élément neutre de la concaténation. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 5 / 45 Généralités Opérations sur les mots Soit Σ un alphabet et u = (u1 , . . . , um ) et v = (v1 , . . . , vn ) deux mots de Σ. On appelle concaténation de u et v le mot uv = (u1 , . . . , um , v1 , . . . , vn ). ǫ est donc l’élément neutre de la concaténation. Un mot u est dit facteur d’un mot v s’il existe deux mots s et t tels que l’on ait v = sut. On parle de facteur gauche ou préfixe lorsque s est vide et de facteur droit, ou suffixe lorsque t est vide. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 5 / 45 Généralités Opérations sur les mots Soit Σ un alphabet et u = (u1 , . . . , um ) et v = (v1 , . . . , vn ) deux mots de Σ. On appelle concaténation de u et v le mot uv = (u1 , . . . , um , v1 , . . . , vn ). ǫ est donc l’élément neutre de la concaténation. Un mot u est dit facteur d’un mot v s’il existe deux mots s et t tels que l’on ait v = sut. On parle de facteur gauche ou préfixe lorsque s est vide et de facteur droit, ou suffixe lorsque t est vide. Un sous-mot d’un mot u est un mot constitué d’une sous-suite de la suite de lettres qui constituent u. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 5 / 45 Généralités Opérations sur les mots Soit Σ un alphabet et u = (u1 , . . . , um ) et v = (v1 , . . . , vn ) deux mots de Σ. On appelle concaténation de u et v le mot uv = (u1 , . . . , um , v1 , . . . , vn ). ǫ est donc l’élément neutre de la concaténation. Un mot u est dit facteur d’un mot v s’il existe deux mots s et t tels que l’on ait v = sut. On parle de facteur gauche ou préfixe lorsque s est vide et de facteur droit, ou suffixe lorsque t est vide. Un sous-mot d’un mot u est un mot constitué d’une sous-suite de la suite de lettres qui constituent u. Une occurrence d’un facteur/sous-mot dans un mot est la suite des positions où les lettres du facteur/sous-mot apparaissent dans le mot. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 5 / 45 Généralités Opérations sur les mots Soit Σ un alphabet et u = (u1 , . . . , um ) et v = (v1 , . . . , vn ) deux mots de Σ. On appelle concaténation de u et v le mot uv = (u1 , . . . , um , v1 , . . . , vn ). ǫ est donc l’élément neutre de la concaténation. Un mot u est dit facteur d’un mot v s’il existe deux mots s et t tels que l’on ait v = sut. On parle de facteur gauche ou préfixe lorsque s est vide et de facteur droit, ou suffixe lorsque t est vide. Un sous-mot d’un mot u est un mot constitué d’une sous-suite de la suite de lettres qui constituent u. Une occurrence d’un facteur/sous-mot dans un mot est la suite des positions où les lettres du facteur/sous-mot apparaissent dans le mot. Pour un mot u, on définit les puissances de u comme suit : u 0 = ǫ et pour tout entier n, u n+1 = uu n = u n u. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 5 / 45 Généralités Propriétés Propriété 1 : u, v ∈ Σ⋆ Si uv = vu ⇔ ∃w ∈ Σ⋆ | u = w n et v = w m , avec m, n ∈ N. Propriété 2 : u, v , x, y ∈ Σ⋆ Si uv = xy et |u| ≤ |x| ⇔ ∃t ∈ Σ⋆ | x = ut et v = ty . J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 6 / 45 Généralités Opérations sur les langages Soit Σ un alphabet. On appelle langage formel ou langage sur Σ toute partie de l’ensemble Σ⋆ : L ⊂ Σ⋆ . Un langage est dit propre si ǫ ∈ / L. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 7 / 45 Généralités Opérations sur les langages Soit Σ un alphabet. On appelle langage formel ou langage sur Σ toute partie de l’ensemble Σ⋆ : L ⊂ Σ⋆ . Un langage est dit propre si ǫ ∈ / L. L’union de deux langages L1 et L2 est ainsi définie : L1 + L2 = L1 ∪ L2 = {u ∈ Σ⋆ | u ∈ L1 ou u ∈ L2 }. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 7 / 45 Généralités Opérations sur les langages Soit Σ un alphabet. On appelle langage formel ou langage sur Σ toute partie de l’ensemble Σ⋆ : L ⊂ Σ⋆ . Un langage est dit propre si ǫ ∈ / L. L’union de deux langages L1 et L2 est ainsi définie : L1 + L2 = L1 ∪ L2 = {u ∈ Σ⋆ | u ∈ L1 ou u ∈ L2 }. L’intersection de deux langages L1 et L2 est ainsi définie : L1 ∩ L2 = {u ∈ Σ⋆ | u ∈ L1 et u ∈ L2 }. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 7 / 45 Généralités Opérations sur les langages Soit Σ un alphabet. On appelle langage formel ou langage sur Σ toute partie de l’ensemble Σ⋆ : L ⊂ Σ⋆ . Un langage est dit propre si ǫ ∈ / L. L’union de deux langages L1 et L2 est ainsi définie : L1 + L2 = L1 ∪ L2 = {u ∈ Σ⋆ | u ∈ L1 ou u ∈ L2 }. L’intersection de deux langages L1 et L2 est ainsi définie : L1 ∩ L2 = {u ∈ Σ⋆ | u ∈ L1 et u ∈ L2 }. Le complémentaire d’un langage L sur Σ, noté Σ⋆ \ L = {u ∈ Σ⋆ | u ∈ / L}. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 7 / 45 Généralités Opérations sur les langages D’autres opérations sont aussi définies sur les langages : Le produit de deux langages L1 et L2 est l’ensemble des produits d’un mot de L1 et d’un mot de L2 → L1 L2 = {uv | u ∈ L1 , v ∈ L2 }. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 8 / 45 Généralités Opérations sur les langages D’autres opérations sont aussi définies sur les langages : Le produit de deux langages L1 et L2 est l’ensemble des produits d’un mot de L1 et d’un mot de L2 → L1 L2 = {uv | u ∈ L1 , v ∈ L2 }. Le quotient droit (respectivement gauche) d’un langage L par le mot u est défini par : L/u = {v ∈ Σ⋆ | vu ∈ L} (respectivement u/L = {v ∈ Σ⋆ | uv ∈ L}). J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 8 / 45 Généralités Opérations sur les langages D’autres opérations sont aussi définies sur les langages : Le produit de deux langages L1 et L2 est l’ensemble des produits d’un mot de L1 et d’un mot de L2 → L1 L2 = {uv | u ∈ L1 , v ∈ L2 }. Le quotient droit (respectivement gauche) d’un langage L par le mot u est défini par : L/u = {v ∈ Σ⋆ | vu ∈ L} (respectivement u/L = {v ∈ Σ⋆ | uv ∈ L}). Les puissances d’un langage L sont définies ainsi : L0 = {ǫ}, et Ln+1 = Ln L = LLn pour tout n. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 8 / 45 Généralités Opérations sur les langages D’autres opérations sont aussi définies sur les langages : Le produit de deux langages L1 et L2 est l’ensemble des produits d’un mot de L1 et d’un mot de L2 → L1 L2 = {uv | u ∈ L1 , v ∈ L2 }. Le quotient droit (respectivement gauche) d’un langage L par le mot u est défini par : L/u = {v ∈ Σ⋆ | vu ∈ L} (respectivement u/L = {v ∈ Σ⋆ | uv ∈ L}). Les puissances d’un langage L sont définies ainsi : L0 = {ǫ}, et Ln+1 = Ln L = LLn pour tout n. On peut en déduire l’étoile, ou opération de Kleene d’un langage L qui à un langage L associe la réunion de l’ensemble de ses puissances : [ ⋆ n L = L . n≥0 J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 8 / 45 Généralités Langages rationnels (rappel) Les langages rationnels sont représentables par des : expressions régulières automates finis déterministes J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 9 / 45 Généralités Langages rationnels (rappel) “Un automate fini déterministe est une machine à états qui reçoit en entrée une suite finie de données, et qui change d’état en fonction de ces données. Ce changement d’état dépend de l’état précédent et de la lettre lue.” Automate fini déterministe : Tout quintuplet A =< Q, Σ, δ, q0 , F > où Q est l’ensemble des états Σ est l’alphabet δ est la fonction de transition (Q, Σ) → Q q0 est l’état initial F est l’ensemble des états finaux J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 10 / 45 Généralités Définitions Une grammaire G =< Σ, V , S, P > est définie par : Σ : l’alphabet des symboles dits terminaux V : l’alphabet des symboles dits non-terminaux S : l’axiome (S ∈ V ) P : l’ensemble des règles/productions. P est un ensemble fini inclus dans (V ∪ Σ)⋆ .V .(V ∪ Σ)⋆ × (V ∪ Σ)⋆ . J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 11 / 45 Généralités Définitions Une chaîne v dérive d’une chaîne u si, à partir de u, on peut arriver à v par un nombre fini d’applications de règles de production. On note u ⇒ v (on peut préciser le nombre d’applications : u ⇒n v ). Le langage engendré par une grammaire G est l’ensemble de toutes les chaînes terminales (dans Σ⋆ donc) qui dérivent de l’axiome S. Il est noté L(G ). Deux grammaires G et G ′ sont équivalentes si L(G ) = L(G ′ ). J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 12 / 45 Généralités Définitions Règle vide : règle de la forme A → ǫ Règle directement récursive : règle de la forme A → vAw Exemple de grammaire G =< {a, b}, {S, A}, S, P > P = {S → abSA | ǫ A → Aa | ǫ} J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 13 / 45 Généralités Définitions Règle vide : règle de la forme A → ǫ Règle directement récursive : règle de la forme A → vAw Exemple de grammaire G =< {a, b}, {S, A}, S, P > P = {S → abSA | ǫ A → Aa | ǫ} L(G ) = (ab)+ a⋆ + ǫ J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 13 / 45 Généralités Hiérarchie de Chomsky Il existe 4 types de grammaires : Un langage est de type i, s’il existe une grammaire de type i l’engendrant. Mais alors, il existe une grammaire de type (i − 1) l’engendrant. Une grammaire est purement de type i, s’il est de type i et qu’il n’existe pas de grammaire de type (i + 1) l’engendrant. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 14 / 45 Généralités Hiérarchie de Chomsky Il existe 4 types de grammaires : 1 Type 0 : aucune restriction. Un langage est de type i, s’il existe une grammaire de type i l’engendrant. Mais alors, il existe une grammaire de type (i − 1) l’engendrant. Une grammaire est purement de type i, s’il est de type i et qu’il n’existe pas de grammaire de type (i + 1) l’engendrant. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 14 / 45 Généralités Hiérarchie de Chomsky Il existe 4 types de grammaires : 1 Type 0 : aucune restriction. 2 Type 1 : productions de la forme u1 Xu2 → u1 mu2 , avec X ∈ V , u1 , u2 ∈ (Σ ∪ V )⋆ et m ∈ (Σ ∪ V )+ . Grammaires contextuables. Un langage est de type i, s’il existe une grammaire de type i l’engendrant. Mais alors, il existe une grammaire de type (i − 1) l’engendrant. Une grammaire est purement de type i, s’il est de type i et qu’il n’existe pas de grammaire de type (i + 1) l’engendrant. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 14 / 45 Généralités Hiérarchie de Chomsky Il existe 4 types de grammaires : 1 Type 0 : aucune restriction. 2 Type 1 : productions de la forme u1 Xu2 → u1 mu2 , avec X ∈ V , u1 , u2 ∈ (Σ ∪ V )⋆ et m ∈ (Σ ∪ V )+ . Grammaires contextuables. 3 Type 2 : productions de la forme X → m, avec X ∈ V et m ∈ (Σ ∪ V )⋆ . Grammaires algébriques (ou hors-contexte). Un langage est de type i, s’il existe une grammaire de type i l’engendrant. Mais alors, il existe une grammaire de type (i − 1) l’engendrant. Une grammaire est purement de type i, s’il est de type i et qu’il n’existe pas de grammaire de type (i + 1) l’engendrant. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 14 / 45 Généralités Hiérarchie de Chomsky Il existe 4 types de grammaires : 1 Type 0 : aucune restriction. 2 Type 1 : productions de la forme u1 Xu2 → u1 mu2 , avec X ∈ V , u1 , u2 ∈ (Σ ∪ V )⋆ et m ∈ (Σ ∪ V )+ . Grammaires contextuables. 3 Type 2 : productions de la forme X → m, avec X ∈ V et m ∈ (Σ ∪ V )⋆ . Grammaires algébriques (ou hors-contexte). 4 Type 3 : productions de la forme X → Ym ou X → ǫ avec X , Y ∈ V et m ∈ Σ⋆ . Grammaires rationnelles. Un langage est de type i, s’il existe une grammaire de type i l’engendrant. Mais alors, il existe une grammaire de type (i − 1) l’engendrant. Une grammaire est purement de type i, s’il est de type i et qu’il n’existe pas de grammaire de type (i + 1) l’engendrant. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 14 / 45 Grammaires algébriques Grammaires algébriques J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 15 / 45 Grammaires algébriques Lemme fondamental G =< Σ, V , S, P > est algébrique si P ⊂ V × (Σ ∪ V )⋆ . Lemme fondamental Soit G une grammaire. Si u1 u2 →kG v | u1 , u2 ∈ (Σ ∪ V )⋆ , alors ∃ v1 , v2 ∈ (Σ ∪ V )⋆ et k1 , k2 ∈ N tels que v = v1 v2 u1 →k1 v1 u2 →k2 v2 k1 + k2 = k J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 16 / 45 Grammaires algébriques Langage de Dyck Un langage de Dyck D ⋆ est l’ensemble des mots bien parenthésés, sur un alphabet formé de parenthèses ouvrantes et de parenthèses fermantes correspondantes. Plus formellement : Soit Σ un alphabet, et soit Σ̄ = {ā|a ∈ Σ} une copie de Σ disjointe de Σ. Sur l’ensemble (Σ ∪ Σ̄)⋆ des mots sur Σ ∪ Σ̄, on définit la réduction de Dyck comme suit : w → w ′ s’il existe une factorisation w = xaāy telle que w ′ = xy , avec a ∈ Σ. Un mot de Dyck est un mot qui se réduit au mot vide ǫ. Le langage de Dyck sur Σ ∪ Σ̄ est l’ensemble des mots de Dyck. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 17 / 45 Grammaires algébriques Arbre Definition On parle d’arbre sur E , où E est l’ensemble des étiquettes des noeuds et [ ] désigne l’arbre vide. Si e ∈ E , [e] est un arbre ou une feuille. Si e ∈ E et A1 , . . . , Ak sont des arbres alors [e, A1 , . . . , Ak ] est un arbre ou noeud interne, où e est l’étiquette du noeud et A1 , . . . , Ak sont les sous-arbres, fils de e. [e] [e, A1 , . . . , Ak ] e e A1 J.P. Peyrache (UJM - FST) ... Langages Formels Ak Licence Info - S6 18 / 45 Grammaires algébriques Frontière d’un arbre fr ([e]) = e fr ([e, A1 , . . . , Ak ]) = fr (A1 ) . fr (A2 ) . . . . . fr (Ak ) A= a c b a J.P. Peyrache (UJM - FST) c b Langages Formels c Licence Info - S6 19 / 45 Grammaires algébriques Frontière d’un arbre fr ([e]) = e fr ([e, A1 , . . . , Ak ]) = fr (A1 ) . fr (A2 ) . . . . . fr (Ak ) A= a c b a c b c fr (A) = babc J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 19 / 45 Grammaires algébriques Arbre de dérivation Definition Un arbre de dérivation (ou arbre syntaxique) dans une grammaire G =< Σ, V , S, P > est un arbre ordonné dont les étiquettes des noeuds appartiennent à Σ ∪ V ∪ {ǫ}, tel que : J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 20 / 45 Grammaires algébriques Arbre de dérivation Definition Un arbre de dérivation (ou arbre syntaxique) dans une grammaire G =< Σ, V , S, P > est un arbre ordonné dont les étiquettes des noeuds appartiennent à Σ ∪ V ∪ {ǫ}, tel que : S est la racine J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 20 / 45 Grammaires algébriques Arbre de dérivation Definition Un arbre de dérivation (ou arbre syntaxique) dans une grammaire G =< Σ, V , S, P > est un arbre ordonné dont les étiquettes des noeuds appartiennent à Σ ∪ V ∪ {ǫ}, tel que : S est la racine Les noeuds internes sont des éléments de V J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 20 / 45 Grammaires algébriques Arbre de dérivation Definition Un arbre de dérivation (ou arbre syntaxique) dans une grammaire G =< Σ, V , S, P > est un arbre ordonné dont les étiquettes des noeuds appartiennent à Σ ∪ V ∪ {ǫ}, tel que : S est la racine Les noeuds internes sont des éléments de V Les noeuds externes (les feuilles) sont des éléments de Σ J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 20 / 45 Grammaires algébriques Arbre de dérivation Definition Un arbre de dérivation (ou arbre syntaxique) dans une grammaire G =< Σ, V , S, P > est un arbre ordonné dont les étiquettes des noeuds appartiennent à Σ ∪ V ∪ {ǫ}, tel que : S est la racine Les noeuds internes sont des éléments de V Les noeuds externes (les feuilles) sont des éléments de Σ Si N est un noeud interne, dont les fils sont de gauche à droite α1 . . . αn , alors (N → α1 . . . αn ∈ P) J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 20 / 45 Grammaires algébriques Arbre de dérivation G =< {x, +, ×, (, )}, {E }, E , {E → x|(E )|E + E |E × E } > E E E × x J.P. Peyrache (UJM - FST) E E + E x E × x x Langages Formels E x Licence Info - S6 21 / 45 Grammaires algébriques Arbre de dérivation G =< {x, +, ×, (, )}, {E }, E , {E → x|(E )|E + E |E × E } > E E E × x E E + E x E × x fr = x × x J.P. Peyrache (UJM - FST) E x x fr = x + x × x Langages Formels Licence Info - S6 21 / 45 Grammaires algébriques Arbre de dérivation G =< {x, +, ×, (, )}, {E }, E , {E → x|(E )|E + E |E × E } > E E × E x ( E ) E + E x J.P. Peyrache (UJM - FST) Langages Formels x Licence Info - S6 22 / 45 Grammaires algébriques Arbre de dérivation G =< {x, +, ×, (, )}, {E }, E , {E → x|(E )|E + E |E × E } > E E × E x ( E ) E + E x x fr = x × (x + x) J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 22 / 45 Grammaires algébriques Plus formellement... Definition 2 dérivations qui correspondent au même arbre de dérivation sont dites équivalentes. E E + x E x E →E +E →x +E →x +x ou E → E + E → E + x → x + x J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 23 / 45 Grammaires algébriques Plus formellement... Definition Un arbre de dérivation A est complet, si fr (A) ∈ Σ⋆ . E E × E E x ( E ) x fr = x × x ∈ Arbre complet Σ⋆ J.P. Peyrache (UJM - FST) fr = (E ) ∈ / Σ⋆ Arbre non complet Langages Formels Licence Info - S6 24 / 45 Grammaires algébriques Plus formellement... Definition Dérivation gauche/droite : à chaque étape, on dérive le non-terminal le plus à gauche/droite. Propriété 1 : Soit G une grammaire algébrique, X un non-terminal de G . m ∈ LG (X ), si et seulement si il existe un arbre de dérivation de G , dont la racine est étiquetée par X et dont la frontière est m. Propriété 2 : A chaque arbre de dérivation complet, correspond une seule dérivation gauche. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 25 / 45 Grammaires algébriques Grammaire ambiguë Definition Une grammaire G est ambiguë ⇔ il existe un mot m ∈ L(G ) qui est la frontière de 2 arbres de dérivation différents ⇔ il existe un mot m ∈ L(G ) qui admet 2 dérivation gauches/droites différentes. Un langage algébrique est ambigu si toutes les grammaires qui l’engendrent sont ambiguës. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 26 / 45 Formes normales Formes normales J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 27 / 45 Formes normales Décidabilité Definition Si P est une propriété dépendant d’un paramètre n, on dira que P est décidable s’il existe un algorithme prenant un paramètre n, tel que : Il s’arrête pour tout n. Il renvoie “VRAI” si P(n) est vrai et “FAUX” si P(n) est faux. Exemples P1 (n) = “n est un nombre premier” P1 est décidable : ∀ m < n, on teste si m divise n. Autres cas : P2 (n) = “n est un programme en C qui se compile” ⇒ Décidable. P3 (n) = “n est un programme en C qui ne boucle jamais” ⇒ Non décidable. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 28 / 45 Formes normales Définitions Definition Deux grammaires algébriques G =< Σ, V , S, P > et G ′ =< Σ′ , V ′ , S ′ , P ′ > sont équivalentes si Σ = Σ′ et L(G ) = L(G ′ ). Definition Deux grammaires algébriques G =< Σ, V , S, P > et G ′ =< Σ′ , V ′ , S ′ , P ′ > sont fortement équivalentes si : Σ = Σ′ , V = V ′ et ∀ X ∈ V , LG (X ) = LG ′ (X ). J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 29 / 45 Formes normales Définitions Definition Une grammaire algébrique G =< Σ, V , S, P > est dite réduite si et seulement si : ∀ X ∈ V , LG (X ) 6= ∅ ⇒ X est productif. ∀ X ∈ V , ∃ u1 et u2 ∈ (Σ ∪ V )⋆ | u1 Xu2 ∈ L(G ) (i.e. ∃ une combinaison | S →⋆ u1 Xu2 ) ⇒ X est accessible. Pour toute grammaire algébrique G , il existe une grammaire réduite qui lui est équivalente. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 30 / 45 Formes normales Lemmes Lemme 1 : Soit G =< Σ, V , S, P > une grammaire algébrique. ∀ X ∈ V , on peut décider si X est productif. U0 = Σ ⋆ , (X → m) ∈ P} Pour i ≥ 1, Ui = Ui−1 ∪ {X ∈ V | ∃ m ∈ Ui−1 U = ∪i ≥0 Ui . J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 31 / 45 Formes normales Lemmes Lemme 2 : Soit G =< Σ, V , S, P > une grammaire algébrique. ∀ X ∈ V , on peut décider si X est accessible. W0 = S Pour i ≥ 1, Wi = Wi−1 ∪ {X ∈ V | ∃ Y ∈ Wi−1 et u1 , u2 ∈ (Σ ∪ V )⋆ , tels que (Y → u1 Xu2 ) ∈ P} W = ∪i ≥0 Wi . J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 32 / 45 Formes normales Algorithme de réduction Grammaire G =< Σ, V , S, P > à réduire : 1 2 3 4 Calculer U, l’ensemble des non-terminaux non-productifs de G . G ′ =< Σ, V ′ , S, P ′ >, où V ′ et P ′ sont respectivement égaux à V et P privés des non-terminaux non-productifs. Calculer W , l’ensemble des non-terminaux non-accessibles de G ′ . G ′′ =< Σ, V ′′ , S, P ′′ >, où V ′′ et P ′′ sont respectivement égaux à V ′ et P ′ privés des non-terminaux non-accessibles. G ′′ est la grammaire réduite équivalente àG . J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 33 / 45 Formes normales Grammaires propres Definition Une grammaire G =< Σ, V , S, P > est propre s’il n’y a pas de production de la forme X → Y ou X → ǫ, avec X , Y ∈ V . Remarque : Si G est propre ⇒ ǫ ∈ / L(G ). Propriété : Si G est une grammaire algébrique, alors il existe une grammaire propre G ′ , telle que L(G ′ ) = L(G ) \ {ǫ}. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 34 / 45 Formes normales Grammaires propres Procédure à suivre pour nettoyer une grammaire G =< Σ, V , S, P > : 1 Calculer l’ensemble U = {X ∈ V | X →⋆ ǫ}. 2 Supprimer les règles X → ǫ, et rajouter dans P, ∀ X ∈ U, toutes les règles possibles avec X en partie droite en remplaçant X par ǫ. 3 Calculer ∀ X ∈ V , l’ensemble Cl (X ) = {Y ∈ V | X →⋆ Y }. 4 ∀ X ∈ V , supprimer les règles de la forme X → Y , et rajouter ∀ Y ∈ Cl (X ), X → α, avec (Y → α) ∈ P. 5 Fusionner les non-terminaux équivalents. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 35 / 45 Formes normales Forme normale de Chomsky Definition Une grammaire algébrique G =< Σ, V , S, P > est sous forme normale de Chomsky (FNC) ou forme normale quadratique, si toutes ses productions sont de la forme : X → a ou X → YZ , avec X , Y , Z ∈ V et a ∈ Σ. Soit G une grammaire algébrique, alors il existe G ′ sous FNC, telle que : L(G ′ ) = L(G ) \ {ǫ} Propriété : La propriété P(u, G ) : “Le mot u appartient à L(G )” est décidable (avec u un mot et G une grammaire algébrique). J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 36 / 45 Formes normales L’algorithme CYK (Cocke-Younger-Kasami) Données : Un mot W = a1 . . . an , G =< Σ, V , S, P > sous FNC Résultat : Booléen (VRAI si W ∈ L(G ), FAUX sinon) for i ← 1 to n do Mettre X ∈ V dans (1, i) si X → a1 ∈ P for l ← 2 to n do for i ← 1 to n − l + 1 do for m ← 1 to l − 1 do si Y ∈ (m, i) et Z ∈ (l − m, i + m) et N → YZ ∈ P avec N, Y , Z ∈ V alors Ajouter N à (l , i) si S ∈ (n, 1) alors Renvoyer VRAI else Renvoyer FAUX J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 37 / 45 Propriétés de clôture et lemme d’Ogden Propriétés de clôture et lemme d’Ogden J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 38 / 45 Propriétés de clôture et lemme d’Ogden Propriétés de clôture Clôture par concaténation Soient L1 et L2 des langages algébriques. ⇒ L1 · L2 est un langage algébrique. Explication : Soient G1 =< Σ1 , V1 , S1 , P1 > et G2 =< Σ2 , V2 , S2 , P2 > engendrant respectivement L1 et L2 . On peut construire G pour engendrer L = L1 · L2 G =< Σ1 ∪ Σ2 , V1 ∪ V2 ∪ {S}, S, P1 ∪ P2 ∪ {S → S1 S2 } > J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 39 / 45 Propriétés de clôture et lemme d’Ogden Propriétés de clôture Autres clôtures Soient L1 et L2 des langages algébriques. L1 ∪ L2 est un langage algébrique. L⋆1 est un langage algébrique (L⋆2 aussi). L1 ∩ L2 n’est pas un langage algébrique. L¯1 n’est pas un langage algébrique (L¯2 non plus). J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 40 / 45 Propriétés de clôture et lemme d’Ogden Propriétés de clôture Pour résumer, la classe des langages algébriques est close pour : L’union La concaténation L’étoile Elle n’est pas close pour : L’intersection Le complément J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 41 / 45 Propriétés de clôture et lemme d’Ogden Lemme d’Ogden L’ensemble des langages sur un alphabet donné n’est pas dénombrable. L’ensemble des langages algébriques sur un alphabet donné est dénombrable. Moralité : il existe des langages non-algébriques J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 42 / 45 Propriétés de clôture et lemme d’Ogden Lemme d’Ogden Lemme Si L est un langage algébrique, il existe un entier n ne dépendant que de L, tel que ∀w ∈ L, |w | > n, il existe une décomposition w = αuβv γ avec |uv | > 0 et |uβv | < n, tel que ∀i ∈ N : αu i βv i γ ∈ L Idée : S →⋆ αNγ, N → uNv , N → β. S →⋆ αNγ → αuNv γ →⋆ αu i Nv i γ, ∀i > 0 → αui βvi γ. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 43 / 45 Propriétés de clôture et lemme d’Ogden Lemme d’Ogden En pratique On suppose L algébrique. Le lemme fournit un entier n. S’il existe un mot w de longueur > n tel que quelle que soit la décomposition de w en αuβv γ vérifiant les trois conditions, on trouve un i ≥ 0 tel que : αu i βv i γ ∈ /L ⇒ L n’est pas algébrique. J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 44 / 45 Propriétés de clôture et lemme d’Ogden C’est fini ! J.P. Peyrache (UJM - FST) Langages Formels Licence Info - S6 45 / 45