Decidere se un linguaggio unario sensibile al contesto è regolare


18

È un risultato ben noto che la domanda

Una grammatica senza contesto genera una lingua normale?

è indecidibile. Tuttavia, diventa decidibile su un alfabeto unario, semplicemente perché in questo caso, le classi di linguaggi regolari e senza contesto coincidono.

La mia domanda è sapere cosa succede per le lingue unarie sensibili al contesto .

È decidibile sapere se una determinata grammatica sensibile al contesto su un alfabeto unario genera un linguaggio regolare.

Se la risposta è positiva, sarebbe gradita una stima della complessità.

Risposte:


9

Ahimè, il tuo problema è indecidibile. L'approccio su cui mi sono imbattuto (che potrebbe essere esagerato, quindi chiunque abbia un approccio più opportuno dovrebbe intensificare!) Per prima cosa usa un argomento diagonale per dimostrare che esiste un CSL unario che non è regolare (in contrasto con il risultato positivo per CFL unari), e quindi si riduce dal problema di arresto per le macchine di Turing, dato un TM M , costruendo un CSG G che simula M su una lunghezza di nastro più corta della stringa di analisi w , riconoscendo X se M si ferma senza oltrepassare i suoi limiti e non riuscendo ad analizzare diversamente, in modo che G analizzi con successo tutto w XXMGMwXMGwXche sono sufficientemente lunghi se ferma (in modo che L ( G ) differisca da X solo su molte stringhe finite e quindi non può essere regolare), altrimenti G riconosce la lingua vuota (che è chiaramente regolare).ML(G)XG

La chiave di questo approccio è l'osservazione che i CSG non si occupano solo di questioni grammaticali come la struttura delle frasi - anzi, le sequenze di derivazione CSG possono eseguire calcoli arbitrari non determinati nello spazio (in effetti ci sono PSPACECSL completi) prima di dedicarsi all'allineamento con la stringa di analisi. Ciò è più facilmente osservabile tramite conversioni standard tra CSG e grammatiche monotoniche (che continua a funzionare quando limitato agli alfabeti unari) e l'uso di semplici produzioni monotoniche per simulare le transizioni della macchina di Turing su stringhe di derivazione che rappresentano le fasi di una storia di calcolo. In tutta questa risposta suppongo che il lettore possa intuire la maggior parte dei dettagli quando è richiesto un CSG per simulare un determinato calcolo. (Suppongo che il richiedente sia a proprio agio con tutto ciò, ma lo sto esaminando per completezza. Tuttavia, non esitate a chiedere chiarimenti nei commenti.)


In primo luogo, abbiamo bisogno del nostro CSG unario non regolare. ( EDIT: quindi, questo è stato eccessivo - le CSL unarie non regolari possono essere facilmente esposte, ad esempio tramite il lemma di pompaggio su qualsiasi lingua che mostri la più elementare di non regolarità. Vedi i commenti per esempi. Con il senno di poi, usando un argomento diagonale è stato come portare una testata nucleare a combattere con un coltello. Dai un'occhiata a questa costruzione se sei curioso, altrimenti salta alla riduzione.)

Lasciate essere un elenco di DFA sull'alfabeto { 1 } , in modo tale che il numero di stati in D i aumenti in i . Descriviamo un CSG G X in termini di comportamento durante l'analisi della stringa 1 n{ 1 } :D1,D2,...{1}DiiGX1n{1}

  1. Generare non deterministicamente una stringa di non terminali "vuoti", che noi consideriamo il "nastro". Uno dei non terminali vuoti dovrebbe essere un non terminale "vuoto + testina di lettura / scrittura + stato iniziale". Se la stringa di analisi non è 1 n, questa derivazione non riuscirà. Descriviamo il resto del processo in termini di calcolo deterministico simulato dall'unica derivazione possibile.n1n
  2. Stampa sul nastro una codifica di seguito dal numero che in binario, in cui i = n - c e c è scelto in modo che abbiamo sempre abbastanza spazio sul nostro nastro per fare quello che dobbiamo. (Questo è possibile in quanto lo spazio necessario per codificare sia D i e io cresce logaritmicamente in i .)Diii=nccDiii
  3. Valuta sull'ingresso 1 i . Questo non richiede un rappresentante D i tape 's - si può semplicemente memorizzare un singolo stato, che si modificano in base alle transizioni di D io , come si decremento i .Di1iDiDii
  4. Se rifiuta 1 i , sovrascrive l'intero nastro con non terminali che producono 1 . Altrimenti fallire.Di 1i1

Prendiamo . Chiaramente X L ( D i ) per qualsiasi i , poiché 1 i + cX 1 i + cL ( D i ) .X=L(GX)XL(Di)i1i+cX1i+cL(Di)


Il prossimo passo è progettare una riduzione dal problema di arresto al problema del richiedente. (Se hai saltato la sezione precedente, lascia che sia un CSL unario arbitrario non regolare generato da CSG G X ).XGX

Lascia che sia una TM arbitraria. Convertiamo M in un CSG G che si comporta come segue sulla stringa di analisi 1 n :MMG1n

  1. Genera non terminali vuoti, il più a sinistra è il non terminale separato di testa vuota + lettura-scrittura e genera anche un non terminale "limite" su ciascun lato. Ancora una volta, se generiamo un numero errato di non terminali, allora falliamo.n2
  2. Simula nello spazio tra i non terminali di confine. Se M si sposta su uno degli stati limite, terminiamo la simulazione e supponiamo che M non si fermi mai.MMM
  3. Se soste, si comportano come G X . Se dovessimo terminare la simulazione, allora fallire.MGX

Nota che se riesce a funzionare per sempre entro i limiti, G non potrà mai generare una stringa di analisi e così fallirà. Se M si ferma, allora c'è una certa quantità di spazio n che è sufficiente per contenere l'intero calcolo di M , quindi G analizza 1 m ogni volta che m n + 2 e 1 mX , e quindi X è l'unione di L ( G ) e un linguaggio finito, da cui L ( G )MGMnMG1mmn+21mXXL(G)L(G)non è regolare. D'altra parte, se non si ferma mai, allora L ( G ) = è chiaramente regolare.ML(G)=

Un algoritmo per decidere se è regolare o no determinerebbe se M si ferma su un nastro vuoto, il che è indecidibile. Ne consegue che il problema del richiedente non è determinabile.L(G)M


2
Per la prima parte della tua risposta, e { a pp  is prime } sono esempi di linguaggi unregolari non sensibili al contesto. {an2n0}{app is prime}
J.-E.

Heh, davvero esagerato, probabilmente avrei dovuto pensare che una discussione diagonale sarebbe stata eccessiva. Immagino che modificherò una nota nella risposta. Spero che la seconda parte sia stata comunque utile.
gdmclellan,

@ J.-E.Pin: Non ci ho pensato troppo, è facile costruire una grammatica unaria sensibile al contesto per ? {app is prime}
Marzio De Biasi,

@ marzio-de-biasi Devo confessare che non mi sono controllato ma ho fatto affidamento su questa risposta
J.-E.

@MarzioDeBiasi Molto facile. Nel determinare se una lingua è sensibile al contesto, il normale processo è qualcosa di simile a 1. indeterminare indistintamente la stringa di analisi; 2. eseguire un calcolo limitato allo spazio per determinare se la stringa di analisi soddisfa un predicato; e 3. generare la stringa se detto predicato risulta soddisfatto. Lo spazio può essere un po 'un problema (il limite di spazio è dato dalla lunghezza della stringa di analisi, perché non è possibile contrarre una stringa derivata utilizzando produzioni sensibili al contesto), ma nel caso unario si dispone di spazio esponenziale con cui lavorare .
gdmclellan,

6

Questa è essenzialmente la stessa risposta di cui sopra, ma poiché si cerca una risposta "più opportuna", sto citando questo: (Inoltre, questo è il mio primo post qui, quindi perdonami se sto postando una banalità!)

Osserva che il vuoto è indecidibile per le lingue unarie sensibili al contesto. Correggi un linguaggio sensibile al contesto, ma non regolare . Dato un LBA per L a , si può facilmente costruire un LBA per L = { a na nN  e  m n : a mL } . Quindi chiaramente L è regolare se e solo se L è vuoto.NaLaL={ananN and mn:amL}LL

Aggiornamento: naturalmente, lo stesso argomento mostra che l'indecidibilità vale già per lo spazio logaritmico deterministico.


"Il vuoto è indecidibile per linguaggi unari sensibili al contesto": è un fatto ben noto? Avresti un riferimento?
J.-E.

1
LΣh:Σ{a}ah(L)LTa2nTn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.