Langage contextuel

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 Chomsky. Les langages contextuels sont les langages reconnus par les automates linéairement bornés, c'est-à-dire les machines de Turing dont la mémoire de travail est linéairement bornée en fonction de la taille de l'entrée. Parmi les quatre classes de la hiérarchie de Chomsky, les langages contextuels sont les moins utilisés, à la fois en théorie et en pratique.

Sommaire

Puissance d'expression

Du point de vue de la théorie des automates, les langages contextuels sont reconnus par les machines de Turing non déterministes à mémoire linéairement bornée, appelés communément automates linéairement bornés. Une telle machine dispose, pour une entrée de taille n, d'une bande de mémoire kn, où k est une constante indépendante de n. Sur cette bande, ma machine a toutes les propriétés usuelles d'une machine de Turing.

Les langages reconnus par ces machines sont aussi appelés les langages NLIN-SPACE, pour signifier que la reconnaissance est non déterministe (N) et en espace linéaire. La classe LIN-SPACE est définie de même, sauf que les machines de Turing sont supposés être déterministes. Bien entendu, LIN-SPACE est contenue dans NLIN-SPACE, mais il n'est pas connu si on a ou non l'égalité LIN-SPACE=NLIN-SPACE. On conjecture généralement que ces classes sont distinctes. C'est l'un des deux célèbres problèmes posés par Kuroda (en), voir l'article « automate linéairement borné ».

Exemples

  • Le langage L = { ap : p est un nombre premier } est contextuel. On peut montrer qu'il n'est pas algébrique, soit en appliquant le lemme d'itération, soit en utilisant le fait que tout langage algébrique sur une lettre est un langage rationnel, et que l'ensemble des exposants des mots d'un tel langage est une union finie de progressions arithmétiques finies ou infinies[1].
  • Des exemples de langages qui ne sont pas contextuels sont donnés par des langages récursifs dont le problème d'appartenance est un problème EXPSPACE. Un exemple est le test d'équivalence d'une paire d'expression rationnelle.

Propriétés des langages contextuels

  • Les langages contextuels forment une théorie des langages, et sont donc fermés par les opérations rationnelles, c'est-à-dire l'union, le produit et l'étoile de Kleene. Ils sont aussi fermés par morphisme non effaçant, par morphisme, et par intersection avec un langage rationnel: il forment donc un cône rationnel fidèle. En revanche, ils ne sont pas fermés par morphisme général.
  • Le complémentaire d'un langage contextuel est contextuel. Ce résultat, longtemps ouvert, a été établi en 1988 par Immerman[2] et Szelepcsényi[3], et leur a valu le prix Gödel en 1995.
  • Les langages contextuels sont donc clos par intersection.

Voir aussi

Notes

References

  • Neil Immerman, « Nondeterministic space is closed under complementation », dans Journal on Computing, vol. 17, no 5, 1988, p. 935–938 [texte intégral, lien DOI] 
  • R. Szelepcsényi, « The method of forcing for nondeterministic automata », dans Acta Informatica, vol. 26, no 3, 1988, p. 279-284 

Bibliographie

Traduction



Wikimedia Foundation. 2010.

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

Игры ⚽ Поможем написать реферат

Regardez d'autres dictionnaires:

  • 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… …   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

  • 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 Mathématique — Le langage mathématique est une expression couramment employée par les mathématiciens pour désigner l ensemble des termes propres aux mathématiques. Par cette expression, on insiste volontiers sur l évolution des mathématiques. Une langue ne… …   Wikipédia en Français

  • Langage mathematique — Langage mathématique Le langage mathématique est une expression couramment employée par les mathématiciens pour désigner l ensemble des termes propres aux mathématiques. Par cette expression, on insiste volontiers sur l évolution des… …   Wikipédia en Français

  • Langage mathématique — Le langage mathématique est une expression couramment employée par les mathématiciens pour désigner l ensemble des termes propres aux mathématiques. Par cette expression, on insiste volontiers sur l évolution des mathématiques. Une langue ne… …   Wikipédia en Français

  • Grammaire non contextuelle — En linguistique et en informatique, une grammaire non contextuelle, grammaire hors contexte ou grammaire algébrique (type 2 dans la hiérarchie de Chomsky) est une grammaire formelle dans laquelle chaque règle de production (ou simplement… …   Wikipédia en Français

  • Grammaire d'arbres adjoints — La grammaire d arbres adjoints, grammaire TAG, ou légèrement sensible au contexte est un formalisme d analyse grammaticale introduit par A.K. Joshi et ses collègues[1] en 1975. Ce formalisme a été utilisé à différentes fins, et particulièrement… …   Wikipédia en Français

  • Automate linéairement borné — En informatique théorique, et en particulier en théorie des automates, un automate linéairement borné (en anglais linear bounded automaton, abrégé en LBA) est une machine de Turing non déterministe assujettie à des restrictions dans son mode… …   Wikipédia en Français

  • Compilateur — Pour les articles homonymes, voir Compilation. Un compilateur est un programme informatique qui traduit un langage (appelé le langage source) en un autre (le langage cible), généralement dans le but de créer un exécutable. Un compilateur sert le… …   Wikipédia en Français

Share the article and excerpts

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