Langage algébrique

Langage algébrique

En théorie des langages formels, un langage algébrique ou langage non contextuel est un langage qui peut être engendré par une grammaire algébrique. De manière équivalente un langage algébrique est un langage reconnu par automate à pile.

Les langages algébriques forment les langages de type 2 dans la hiérarchie de Chomsky. Ils ont des applications importantes dans la description des langages de programmation et en linguistique. Ils interviennent également dans la description des langages XML.

Sommaire

Quelques exemples

  • Le langage
           \{a^n b^n \mid n \geqslant 0\} = \{\varepsilon, ab, aabb, aaabbb, \dots\}
    est l'exemple type de langage algébrique non rationnel.
  • Les expressions arithmétiques, utilisant les quatre opérations élémentaires, comme par exemple a \times b + (a + b) / d, etc, forment un langage algébrique.

Pour montrer que ces langages sont algébriques, on donne une grammaire non contextuelle qui les engendre. Voir le paragraphe d'exemples de l'article en question pour plus de détails.

Pour des langages plus compliqués, on peut utiliser des méthodes plus puissantes, comme les transductions rationnelles ou le fait que les langages algébriques forment une famille abstraite de langages. Par exemple, le langage

\{a^nc^{m_1}d^{m_1}c^{m_2}d^{m_2}\cdots c^{m_n}d^{m_n}\mid n,m_1,\ldots,m_n\ge1\}

est algébrique: il est obtenu à partir du langage \{a^n b^n \mid n \ge1\}, en substituant, à chaque lettre b, le langage \{c^n d^n \mid n \ge1\}. Et comme les langages algébriques sont fermés par substitution (voir ci-dessous), le langage obtenu est algébrique.

Propriétés

Tout langage rationnel est algébrique car il peut être décrit par une grammaire régulière, qui est un cas particulier de grammaire non contextuelle.

Propriétés de clôture

La classe des langages algébriques possède certaines propriétés de clôture :

  • L'union et la concaténation de deux langages algébriques sont des langages algébriques.
  • L'étoile d'un langage algébrique est algébrique.
  • L'intersection de deux langages algébriques ne l'est pas nécessairement. Par exemple, l'intersection des langages \{a^n b^n c^m \mid n,m > 0\} et \{a^n b^m c^m \mid n,m > 0\} est \{a^n b^n c^n \mid n > 0\}. Ce langage n'est pas algébrique (on le prouve traditionnellement à l'aide d'un lemme d'itération pour les langages algébriques). Par conséquent, la classe des langages algébriques n'est pas non plus close par complémentaire.
  • L'image miroir d'un langage algébrique est un langage algébrique[a 1].
  • L'intersection d'un langage algébrique et d'un langage rationnel est toujours algébrique [a 1].
  • L'image homomorphe, l'image homomorphe inverse d'un langage algébrique est algébrique.

De ces propriétés, il résulte que

Clôture par substitution

Une substitution de A * dans B * est une application σ de A * dans l'ensemble des parties de B * qui est un morphisme de monoïde, c'est-à-dire vérifie les deux propriétés:

  1. σ(ε) = {ε}
  2. σ(xy) = σ(x)σ(y) pour des mots x et y.

Dans la deuxième formule, le produit est le produit des parties de B * .

Un substitution σ est 'algébrique si σ(a) est un langage algébrique pour toute lettre a.

Le théorème de substitution affirme que si σ est une substitution algébrique, alors σ(L) est un langage algébrique pour tout langage algébrique L.


Propriétés indécidables

L'appartenance d'un mot à un langage algébrique est décidable; elle peut être testée grâce à l'algorithme CYK. On sait également décider si un langage algébrique (défini à partir d'une grammaire) est vide[a 2].

Mais, contrairement aux langages rationnels, de nombreux autres problèmes sont les langages algébriques sont indécidables. Par exemple, il n'existe pas d'algorithme pour tester l'égalité de deux langages algébriques[a 3]. Plus précisément, les propriétés suivantes sont indécidables. Soient L, L1, L2 des langages algébriques, donnés par exemple par leurs grammaires, sur un alphabet A, et soitR un langage rationnel. Il est indécidable

  • si L_1\cap L_2 = \emptyset ;
  • si L = A *  ;
  • si L1 = L2 ;
  • si L_1 \subset L_2 ;
  • si L = R ;
  • si R \subset L ;
  • si le complémentaire de L est algébrique ;
  • si L_1 \cap L_2 est algébrique ;
  • si L est rationnel ;
  • si L est inhéremment ambigu.

Langages algébriques déterministes et inambigus

Langages déterministes

Un langage algébrique est dit déterministe s'il est reconnu par un automate à pile déterministe.

La classe des langages algébriques déterministes contient la classe des langages rationnels et est strictement incluse dans celle des langages algébriques. Le contre-exemple type de langage algébrique non déterministe est l'ensemble des palindromes.

La définition implique que l'appartenance d'un mot à un langage algébrique déterministe peut être testée en temps linéaire, contrairement au cas des langages algébriques quelconques. En outre, tout langage algébrique déterministe peut être décrit par une grammaire LR(1) et réciproquement. Cela permet de les utiliser pour des applications pratiques. Ainsi, la plupart des langages de programmation sont des langages algébriques déterministes.

La classe des langages algébriques déterministes est close par complémentaire[b 1]. Cependant :

  • elle n'est pas close par intersection (même contre-exemple que dans le cas non déterministe) ;
  • elle n'est pas close par union (conséquence des deux propriétés précédentes) ;
  • elle n'est pas close par concaténation (la fermeture de Kleene L_1^* du langage L1 défini plus haut est algébrique déterministe, mais pas L_1^* . L_2)
  • elle n'est pas close par miroir, par exemple, \{c a^n b^n\} \cup \{d a^{2n} b^n\} est algébrique déterministe mais pas \{b^n a^n c\} \cup \{b^n a^{2n} d\}.

Langages inambigus

Un langage algébrique est inambigu ou non ambigu s'il existe une grammaire inambigue qui l'engendre. Un langage qui n'est pas inambigu est inhéremment ambigu.

Tout langage déterministe est inambigu, mais les langages inambigus sont fermés par miroir, donc l'inclusion est stricte. Il existe des langages algébriques inhéremment ambigus, comme le langage \{a^nb^nc^m\mid n,m\ge0\}\cup \{a^nb^mc^m\mid n,m\ge0\}. Ceci se prouve à l'aide du lemme d'Ogden.

Théorèmes de représentation

Trois théorèmes donnent une façon générale de représenter les langages algébriques[1].

Théorème de Chomsky-Schützenberger

Le théorème affirme que les langages de Dyck sont des langages algébriques « typiques ».

Théorème de Chomsky-Schützenberger — Un langage L sur un alphabet A est algébrique si et seulement s'il existe un langage de Dyck D, un langage rationnel K et un morphisme alphabétique φ (c'est-à-dire tel que l'image d'une lettre est une lettre ou le mot vide) tels que

L=\varphi(D\cap K).

Théorème de Shamir

Théorème de Shamir — Un langage L sur un alphabet A est algébrique si et seulement s'il existe un alphabet B, une lettre b\in B et un morphisme Φ de A * dans l'ensemble des parties de (B\cup\bar B)^* tels que

L=\{u\in A^*\mid b\Phi(u)\cap D_B^*\ne\emptyset\}.

Ici, \bar B est une copie disjointe de B, et D_B^* est le langage de Dyck sur B\cup \bar B

Théorème du langage le plus difficile, de Greibach

Le « langage le plus difficile » (hardest language en anglais) a été défini par Sheila Greibach (en) en 1973. C'est un langage où le test d'appartenance est le plus difficile, au sens que tout algorithme de test d'appartenance se traduit en un test d'appartenance pour tout autre langage algébrique.

Étant donné un langage L sur un alphabet A, la version non déterministe de L, et le langage noté N(L) défini comme suit. On ajoute à A les trois nouvelles lettres [,], + . Sur ce nouvel alphabet, on considère le langage K = ([(A * + ) * A * ]) * . Tout mot h de K admet une factorisation

h=[h_1][h_2]\cdots [h_n]

et chaque mot hi lui-même s'écrit sous la forme

h_i=h_{i,1}{+}h_{i,2}{+}\cdots{+}h_{i,k_i}

où les mots hi,j sont sur l'alphabet A. Un choix dans h est un mot

h_{1,j_1}h_{2,j_2}\cdots h_{n,j_n}

obtenu en choisissant un facteur h_{i,j_i} dans chaque [hi]. Notons χ(h) l'ensemble des choix dans h. La version no déterministe de L est défini par

N(L)=\{h\mid \chi(h)\cap L\ne\emptyset\}

Le langage le plus difficile est par définition le langage H qui est la version non déterministe du langage de Dyck D_2^* sur deux paires de parenthèses.

Théorème du langage le plus difficile (Greibach) — Un langage L sur un alphabet A est algébrique si et seulement s'il existe un morphisme φ tel que l'on ait

\$L=\varphi^{-1}(H),

H est le langage le plus difficile et \$ est une lettre qui n'est pas dans A.

Le terminologie vient du fait que le test d'appartenance d'un mot x à L se réduit au test d'appartenance du mot \varphi(\$x) au langage H. Ainsi, tout algorithme de test d'appartenance à H fournit un algorithme général de test d'appartenance, pour les langages algébriques, de même complexité.

Notes

Bibliographie

  1. a et b Chapitre 7, p. 285
  2. Chapitre 7, p. 296
  3. Chapitre 7, p. 302
  • (fr) Pierre Wolper, Introduction à la calculabilité (3e édition), Dunod 2006. (ISBN 2-10-049981-5).
  1. Section 4.4.4, p. 97
  • Jean-Michel Autebert, Jean Berstel et Luc Boasson, « Context-free languages and pushdown automata », dans G. Rozenberg, A. Salomaa (éditeurs), Handbook of Formal Languages, vol. 1 : Word, Language, Grammar, Springer Verlag, 1997 (ISBN 978-3540604204) 

Voir aussi



Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Langage algébrique de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • Langage D'interrogation De Données — Un langage d interrogation de données est un langage informatique, destiné à la recherche, extraction, tri et mise en forme, de données dans une base de données. Sommaire 1 SQL ou le langage d interrogation de données (LID) 1.1 Terminologie 1.2 …   Wikipédia en Français

  • Langage d'interrogation de donnees — Langage d interrogation de données Un langage d interrogation de données est un langage informatique, destiné à la recherche, extraction, tri et mise en forme, de données dans une base de données. Sommaire 1 SQL ou le langage d interrogation de… …   Wikipédia en Français

  • algébrique — [ alʒebrik ] adj. • XVIIIe; algébraïque 1585; de algèbre ♦ Relatif à l algèbre, qui s effectue par l algèbre. Calcul numérique et calcul algébrique. Mesure, quantité algébrique. Courbe, équation, fonction algébrique. Nombre algébrique. Topologie… …   Encyclopédie Universelle

  • Langage de Dyck — En informatique théorique, et plus spécialement en théorie des langages, les langages de Dyck sont des langages formels particuliers. Un langage de Dyck est l ensemble des mots bien parenthésés, sur un alphabet formé de parenthèses ouvrantes, et… …   Wikipédia en Français

  • Langage d'interrogation de données — Un langage d interrogation de données est un langage informatique, destiné à la recherche, extraction, tri et mise en forme, de données dans une base de données. Sommaire 1 SQL ou le langage d interrogation de données (LID) 1.1 Terminologie 1.2… …   Wikipédia en Français

  • Langage contextuel — En informatique théorique, et spécialement en théorie des langages, un langage contextuel (en anglais context sensitive langauge) est un langage formel engendré par une grammaire contextuelle. C est un langage de type 1 dans la hiérarchie de… …   Wikipédia en Français

  • Langage rationnel — Les langages rationnels ou langages réguliers ou encore langages reconnaissables peuvent être décrits de plusieurs façons équivalentes: ce sont les langages décrits par les expressions régulières ou rationnelles,d où le nom de langages réguliers; …   Wikipédia en Français

  • TOPOLOGIE - Topologie algébrique — Inventée au début du XXe siècle pour résoudre des problèmes géométriques, la topologie algébrique connut un grand développement grâce à l’introduction de constructions algébriques de plus en plus abstraites. Pour clarifier l’exposé, on a… …   Encyclopédie Universelle

  • Variété algébrique — Pour les articles homonymes, voir variété. Une variété algébrique est, de manière informelle, l ensemble des racines communes d un nombre fini de polynômes en plusieurs indéterminées. C est l objet d étude de la géométrie algébrique. Les schémas… …   Wikipédia en Français

  • Diviseur (géométrie algébrique) — En mathématiques, plus précisément en géométrie algébrique, les diviseurs sont une généralisation des sous variétés de codimension 1 de variétés algébriques ; deux généralisations différentes sont d un usage commun : les diviseurs de… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”