Forse puoi creare un linguaggio in DPSACE (n) che non può essere riconosciuto da un MPA con usando un argomento di diagonalizzazione (probabilmente l'idea è simile a quella nella risposta di Ben, ma non l'ho scavata):k=1
Supponiamo che sopra l'alfabeto codifichi un MPA usando un elenco di transizioni:Σ={0,1}
s,a,p→s′,p′,L|R;...#
dove è lo stato corrente, è il simbolo corrente, è lo stato di ghiaia, è il nuovo stato, è il nuovo stato di ghiaia, è la direzione di spostamento, è un indicatore finale).saps′p′L|R#
Una macchina di Turing sull'input può verificare se è una descrizione valida di un e simularla sull'input per passaggi usando celle, allungando l'input in questo modo:MxMPAxx4|x|6|x|+log|x|
MPA description # MPA tape # curr_state # counter #
Dove:
- La descrizione MPA è la stringa di input originale (ha lunghezza );x|x|
- Il nastro MPA è la rappresentazione del nastro MPA: per ogni cella possiamo usare 3 bit per memorizzare il flag head, flag pebble e il contenuto (fisso) del nastro (ha lunghezza );3|x|
- curr_state memorizza lo stato corrente dell'MPA (ha lunghezza );log|x|
- counter è il contatore di passi di simulazione che viene aggiornato dopo ogni passo di simulazione (ha lunghezza ).2|x|
Se arresta in passi, allora TM emette il contrario (se non ferma emette 0).MPAx4|x|MM
Per abbastanza grande , i passaggi di simulazione sono maggiori diche è maggiore della lunghezza di una descrizione di configurazione completa di ; in questo modo se non si arresta in passaggi, allora siamo sicuri che si ripeterà per sempre.x>x04|x|2|x|+2|x|log|x|MPAxMPAx4|x|
Supponiamo che ci sia un che decide la stessa lingua di , quindi si ferma sempre e puoi costruire un "più grande" che decide la stessa lingua, con (aggiungi solo stati dum).MPAyLMMPAy′y′>x0
Per costruzione abbiamo, che è una contraddizione.MPAy′(y′)=1−M(y′)=1−MPAy′(y′)