Problema di appartenenza a determinate classi di grammatiche senza restrizioni


9

Considera una grammatica arbitraria senza contesto sopra l'alfabeto { 0 , 1 , ¯ 0 , ¯ 1 } . Alle produzioni di questa grammatica, aggiungi due produzioni fisse senza contesto : P : ¯ 0 0 ϵ e ¯ 1 1 ϵ . Chiama la grammatica risultante G P che sta per " G aumentato con le produzioni P ".G{0,1,0¯,1¯}P0¯0ϵ1¯1ϵGPGP

È possibile dare un algoritmo che prende una grammatica e una stringa s sopra { 0 , 1 , ¯ 0 , ¯ 1 } e decide se s L ( G P ) ?GPs{0,1,0¯,1¯}sL(GP)


È interessante notare che, mentre la risposta sembra essere "no", penso che se è regolare, lo è anche L ( G P ) . In sostanza, un NFA per L ( G ) può essere trasformato in uno per L ( G P ) aggiungendo iterativamente ϵ -transizioni ( s , ϵ , t ) ogni volta che si hanno percorsi ( s , ˉ 0 , p , 0 , t ) ,L(G)L(GP)L(G)L(GP)ϵ(s,ϵ,t) o ( s , ϵ , p , ϵ , t ) e infine esibirsi(s,0¯,p,0,t),(s,0¯,p,ϵ,q,0,t),(s,1¯,p,1,t),(s,1¯,p,ϵ,q,1,t)(s,ϵ,p,ϵ,t) -eliminazione. ϵ
Klaus Draeger,

Sì è vero. In effetti, la domanda è nata da un problema nell'analisi del programma (raccolta dei rifiuti basata sulla vivacità). Abbiamo aggirato il problema avvicinando il CFG a una grammatica fortemente regolare (trasformazione di Mohri-Nederhoff), e quindi facendo le semplificazioni sull'NFA risultante esattamente come menziona Klaus Draeger. P
Amit.

Risposte:


5

Questa classe di grammatiche è indecidibile. Ecco un'idea approssimativa di come usarlo per emulare le macchine di Turing.

Ad ogni punto, l'attuale parola parzialmente espansa sarebbe simile

[tape to the left][head][tape to the right]

Qui:

  • [tape to the left]P0¯1¯
  • [tape to the right]P01
  • [head]

Si{0,1}SiTjSi0T0jSi1T1j e S i¯ j T 1 ¯ 1 . In un certo senso, la testa deve "indovinare" il personaggio nella direzione in cui si sta muovendo producendo il personaggio corrispondente. Se l'ipotesi è errata, l'invariante su [ nastro a sinistra ] o [ nastro a destra ] verrebbe violato e non si riprenderà mai.Sij¯T00¯Sij¯T11¯[tape to the left][tape to the right]

Quando la macchina si ferma, la testa dovrebbe "consumare" il suo nastro su entrambi i lati "indovinando" e producendo caratteri corrispondenti. Successivamente, dovrebbe produrre parole vuote. Di conseguenza, una parola vuota sarebbe un membro di tale grammatica se e solo se la corrispondente macchina di Turing si fermasse.


NN

@ Amit.SI ha fornito qualche spiegazione in più delle transizioni nella risposta.
abacabadabacaba,
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.