La hiérarchie de Chomsky (–Schützenberger) est utilisée dans les manuels d'informatique théorique, mais elle ne couvre évidemment qu'une très petite fraction des langages formels (REG, CFL, CSL, RE) par rapport au diagramme de complexité complet . La hiérarchie joue-t-elle un rôle dans la recherche actuelle? Je n'ai trouvé que peu de références à Chomsky ici sur cstheory.stackexchange, et dans le Complexity Zoo, les noms Chomsky et Schützenberger ne sont pas mentionnés du tout.
La recherche actuelle est-elle davantage axée sur d'autres moyens de description que sur les grammaires formelles? Je recherchais des méthodes pratiques pour décrire les langages formels avec une expressivité différente, et suis tombé sur un langage de plus en plus sensible au contexte (GCSL) et des langages de compression visible (VPL), qui se situent tous deux entre les langages classiques de Chomsky. La hiérarchie de Chomsky ne devrait-elle pas être mise à jour pour les inclure? Ou ne sert-on à rien de sélectionner une hiérarchie spécifique parmi l'ensemble des classes de complexité? J'ai essayé de ne sélectionner que les langues qui peuvent être adaptées aux lacunes de la hiérarchie de Chomsky, pour autant que je sache:
REG (= Chomsky 3) ⊊ VPL DCFL CFL (= Chomsky 2) GCSL CSL (= Chomsky 1) R ⊊ RE
Je ne comprends toujours pas où "les langages légèrement sensibles au contexte" et les "langages indexés" (entre le CFL et le CSL) entrent bien, bien qu'il semble y avoir un intérêt pratique pour le traitement du langage naturel (mais peut-être que tout intérêt pratique est moins intéressant en recherche théorique ;-). Vous pouvez également mentionner GCSL L P ⊂ NP ⊂ PSPACE et CSL PSPACE R pour montrer la relation entre les célèbres classes P et NP.
J'ai trouvé sur GCSL et VPL:
- Robert McNaughton: une insertion dans la hiérarchie de Chomsky?. Dans: Les bijoux sont éternels, Contributions sur l'informatique théorique en l'honneur d'Arto Salomaa. S. 204-212, 1999
- http://en.wikipedia.org/wiki/Nested_word#References (VPL)
Je serais également heureux si vous connaissez un manuel plus récent sur les grammaires formelles qui traitent également de VPL, DCLF, GCSL et des grammaires indexées, de préférence avec des pointeurs sur des applications pratiques.
Réponses:
D'après ce que j'ai vu dans la communauté du traitement du langage naturel, les grammaires formelles à la Chomsky ne sont plus tellement utilisées. Ils (aussi) pensent que la hiérarchie de Chomsky est dépassée pour modéliser le langage.
Des règles telles que la règle de réécriture (l’algorithme de Lars), les modèles de dépendance (Dan Klein), la grammaire de substitution d’arbre (modèle DOP) et les grammaires binaires (Alex Clark) ont alors pris sa place.
la source
En bref: oui.
Plus particulièrement: Chomsky fut l'un des premiers à formaliser une hiérarchie entre les langages, les grammaires et les automates. Cette idée est toujours très pertinente et est enseignée dans tous les cours d'introduction à la théorie des automates. Cependant, la hiérarchie spécifique proposée par Chomsky et les noms des éléments de la hiérarchie ne sont plus vraiment significatifs. Nous avons depuis inventé de nombreux formalismes qui se situent entre les niveaux de la hiérarchie de Chomsky, au-dessus ou au-dessous. Et les noms utilisés par Chomsky ne sont pas particulièrement intéressants, c'est-à-dire qu'ils ne sont pas basés sur une mesure intéressante de la complexité ou quoi que ce soit, ils ne sont que des chiffres. Les langages légèrement contextuels doivent-ils être de type 1.5, de type 1.7 ou de type 1.3? On s'en fout. "Légèrement sensible au contexte" est un nom beaucoup plus informatif.
Le Complexity Zoo est un peu différent car il regorge de toutes sortes d’équivalences conditionnelles, etc. Une hiérarchie plus moderne pour la théorie des automates ne serait pas linéaire (comparez par exemple CFG à PEG), mais aurait toujours une topologie bien connue. Pour vous faire une idée de la théorie des automates modernes, vous devriez vous pencher sur les bibliothèques de combinateur d’analyseurs et sur certains éléments relatifs à l’unification et à la théorie des types (même si ces deux branches sont très éloignées).
la source
Si quelque chose dans TCS est obsolète, c'est cette hiérarchie d'inclusion du petit sous-ensemble de classes de complexité qui était connu / considéré intéressant en 1956.
Reposez en paix, Hiérarchie de Chomsky, et ne hantez plus le programme théorique de premier cycle.
la source
Si vous considérez la hiérarchie de Chomsky avec des noms "modernes" (c.-à-d. REG, LIN, CFL, CSL, RE ou respectivement DFA / NFA, PDA, LBA, TM), je dis: non, ce n'est pas démodé!
Raison 0 : Il est toujours correct en ce sens que ses définitions et ses résultats ne sont pas contradictoires avec les nouvelles connaissances.
Raison n ° 1 : Ces classes / modèles de calcul sont toujours les premiers que vous enseignez - car ils sont simples et bien étudiés. Essayez d’enseigner l’automate LR à un étudiant de premier cycle sans couvrir d’abord DFA / DPDA.
Raison n ° 2 : les classes restent le premier / principal point de référence pour les nouvelles inventions (j'ai écrémé un article sur le multi-CFG qui, bien sûr, disait: plus que CFG, moins que CSG). C'est peut-être en partie parce qu'ils sont enseignés en premier lieu, mais aussi parce qu'ils sont simples et bien étudiés.
Anti-Raison 3 : les résultats ne sont pas périmés simplement parce que de nouvelles classes / modèles ont été trouvés. Ils conservent leur valeur en tant que bases du domaine bien qu’ils ne soient pas utilisés activement à la recherche.
la source
Je pense que cela dépend du modèle de calcul. Si vous considérez le fini / pushdown / etc. Comme automates comme modèle de calcul, la hiérarchie de Chomsky devient importante (voir par exemple le livre de Sipser). Par contre, il joue peu de rôle dans le modèle de calcul de Turing.
L'illustration suivante peut être utile:
Edit: les langages formels jouent un rôle important dans la conception de langages informatiques (tels que Java) et de compilateurs, ainsi que dans le traitement du langage naturel (PNL).
la source