Décider si un langage unaire sensible au contexte est régulier

18

C'est un résultat bien connu que la question

Une grammaire sans contexte génère-t-elle un langage régulier?

est indécidable. Cependant, il devient décidable sur un alphabet unaire, simplement parce que dans ce cas, les classes de langues sans contexte et régulières coïncident.

Ma question est de savoir ce qui se passe pour les langages contextuels unaires .

Est-il décidable de savoir si une grammaire contextuelle donnée sur un alphabet unaire génère une langue régulière.

Si la réponse est positive, une estimation de la complexité serait la bienvenue.

J.-E. Épingle
la source

Réponses:

9

Hélas, votre problème est indécidable. L'approche sur laquelle je suis tombé (qui pourrait être débordé, donc toute personne qui a une approche plus expéditive devrait intervenir!) Utilise d'abord un argument diagonal pour démontrer qu'il existe un CSL unaire Xqui n'est pas régulier (contrairement au résultat positif pour les CFL unaires), puis réduit du problème d'arrêt pour les machines de Turing par, étant donné un TM M , la construction d'un CSG G qui simule M sur une longueur de bande plus courte que la chaîne d'analyse w , reconnaissant X si M s'arrête sans dépasser ses limites et à défaut d'analyser autrement, de sorte que G analyse avec succès tout wXsuffisamment longs si M s'arrête (de sorte que L(G) diffère de X sur un nombre de chaînes fini et ne peut donc pas être régulier), sinon G reconnaît le langage vide (qui est clairement régulier).

La clé de cette approche est l'observation que les CSG ne sont pas seulement concernés par des questions grammaticales telles que la structure des phrases - en effet, les séquences de dérivation de CSG peuvent effectuer des calculs arbitraires non déterministes délimités par l'espace (en effet, il y a PSPACE- CSL complets) avant de se lancer dans l'alignement avec la chaîne d'analyse. Ceci est plus facilement observé via les conversions standard entre les CSG et les grammaires monotones (qui continuent de fonctionner lorsqu'elles sont limitées à des alphabets unaires), et l'utilisation de productions monotones simples pour simuler les transitions de la machine de Turing sur des chaînes de dérivation qui représentent les étapes de l'historique de calcul. Tout au long de cette réponse, je vais supposer que le lecteur peut comprendre la plupart des détails lorsqu'un CSG est nécessaire pour simuler un calcul donné. (Je suppose que le demandeur est à l'aise avec tout cela, mais je vais y revenir pour être complet. Néanmoins, n'hésitez pas à demander des éclaircissements dans les commentaires.)


Premièrement, nous avons besoin de notre CSG unaire non régulier. ( EDIT: donc, c'était exagéré - les CSL unaires non réguliers peuvent facilement être exposés, par exemple via le lemme de pompage sur n'importe quelle langue qui présente le plus basique de non-régularité. Voir les commentaires pour des exemples. Avec le recul, en utilisant un argument diagonal c'était comme apporter une ogive nucléaire à un combat au couteau. Parcourez cette construction si vous êtes curieux, sinon passez à la réduction.)

Laissez être une énumération de DFA sur l'alphabet { 1 } , de sorte que le nombre d'états dans D i augmente dans i . Nous décrivons un CSG G X en termes de comportement lors de l'analyse de la chaîne 1 n{ 1 } :D1,D2,...{1}DiiGX1n{1}

  1. Génère de façon non déterministe une chaîne de non-terminaux "vierges", que nous considérons comme la "bande". L'un des non-terminaux vierges doit être un non-terminal "vierge + tête de lecture-écriture + état de démarrage". Si la chaîne d'analyse n'est pas 1 n, cette dérivation finira par échouer. Nous décrivons le reste du processus en termes de calcul déterministe simulé par la seule dérivation possible.n1n
  2. Imprimez sur la bande un encodage de suivi du nombre i en binaire, où i = n - c et c est choisi de sorte que nous ayons toujours assez d'espace sur notre bande pour faire ce dont nous avons besoin. (Cela est possible car l'espace requis pour coder à la fois D i et i augmente logarithmiquement dans i .)Diii=nccDiije
  3. Évaluez sur l'entrée 1 i . Cela ne nécessite pas de bande représentative de D i - vous pouvez simplement stocker un seul état, que vous modifiez en fonction des transitions de D i lorsque vous décrémentez i .je1jejejeje
  4. Si rejette 1 i , écrasez la bande entière avec des non-terminaux qui produisent 1 . Sinon, échouez.je 1je1

On prend . Clairement X L ( D i ) pour tout i , puisque 1 i + cX 1 i + cL ( D i ) .X=L(gX)XL(je)je1i+cX1i+cL(Di)


L'étape suivante consiste à concevoir une réduction du problème d'arrêt au problème du demandeur. (Si vous avez ignoré la section ci-dessus, laissez être un CSL unaire non régulier arbitraire généré par CSG G X. )XGX

Soit une MT arbitraire. Nous convertissons M en un CSG G qui se comporte comme suit sur la chaîne d'analyse 1 n :MMG1n

  1. Générez non-terminaux vierges, le plus à gauche étant le non-terminal vierge + tête de lecture-écriture, et générez également un non-terminal "frontière" de chaque côté. Encore une fois, si nous générons le mauvais nombre de non-terminaux, nous échouons.n2
  2. Simulez dans l'espace entre les non-terminaux limites. Si M passe un jour sur l'un des états limites, nous terminons la simulation et supposons que M ne s'arrête jamais.MMM
  3. Si haltes, se comportent comme G X . Si nous devions mettre fin à la simulation, échouer.MGX

Notez que si parvient à s'exécuter indéfiniment dans les limites, alors G ne pourra jamais générer de chaîne d'analyse et échouera. Si M s'arrête, alors il y a une certaine quantité d'espace n qui suffit pour contenir le calcul complet de M , donc G analyse 1 m chaque fois que m n + 2 et 1 mX , et donc X est l'union de L ( G ) et un langage fini, d'où L ( G )MGMnMG1mmn+21mXXL(G)L(G)n'est pas régulier. En revanche, si ne s'arrête jamais, alors L ( G ) = est clairement régulier.ML(G)=

Un algorithme pour décider si est régulier ou non déterminerait si M s'arrête ou non sur une bande vierge, ce qui est indécidable. Il s'ensuit que le problème du demandeur est indécidable.L(G)M

gdmclellan
la source
2
Pour la première partie de votre réponse, et { a pp  est premier } sont des exemples de langues non régulières sensibles au contexte unaire. {an2n0}{app is prime}
J.-E.
Hé, surmené en effet, il aurait probablement dû me venir à l'esprit qu'un argument diagonal serait une exagération excessive. Je suppose que je vais modifier une note dans la réponse. J'espère que la deuxième partie a quand même été utile.
gdmclellan
@ J.-E.Pin: Je n'y ai pas trop pensé, est-il facile de construire une grammaire contextuelle unaire pour ? {app is prime}
Marzio De Biasi
@ marzio-de-biasi Je dois avouer que je ne me suis pas vérifié mais que je me suis appuyé sur cette réponse
J.-E.
@MarzioDeBiasi Très facile. Pour déterminer si une langue est sensible au contexte, le processus habituel est quelque chose comme 1. devinez de façon non déterministe la chaîne d'analyse; 2. effectuer un calcul limité dans l'espace pour déterminer si la chaîne d'analyse satisfait un prédicat; et 3. générer la chaîne si ledit prédicat est satisfait. L'espace peut être un peu un problème (l'espace lié est donné par la longueur de la chaîne d'analyse, car vous ne pouvez pas contracter une chaîne dérivée à l'aide de productions contextuelles), mais dans le cas unaire, vous avez un espace exponentiel pour travailler avec .
gdmclellan
6

C'est essentiellement la même réponse que ci-dessus, mais comme une réponse "plus expéditive" est recherchée, je mentionne ceci: (Aussi, c'est mon premier post ici, alors pardonnez-moi si je poste une trivialité!)

Observez que le vide est indécidable pour les langages unaires sensibles au contexte. Correction d'un langage contextuel mais non régulier . Étant donné un LBA pour L a , on peut facilement construire un LBA pour L = { a na nN  et  m n : a mL } . Alors clairement L ' est régulier si et seulement si L est vide.NaLaL={ananN and mn:amL}LL

Mise à jour: Bien sûr, le même argument montre que l'indécidabilité est déjà valable pour l'espace logarithmique déterministe.

Georg Zetzsche
la source
"le vide est indécidable pour les langages contextuels unaires": est-ce un fait bien connu? Auriez-vous une référence?
J.-E.
1
Étant donné un langage contextuel , prenez le morphisme h : Σ { a } qui associe chaque lettre à a . Alors h ( L ) est vide si et seulement si L est vide. Pour un espace de log déterministe, étant donné un TM T , on peut construire un det. logspace TM pour l'ensemble de tous a 2 n tel que T ait un calcul d'arrêt de longueur n . LΣh:Σ{a}ah(L)LTa2nTn
Georg Zetzsche