(1) Quello che già sappiamo:
Come hai già detto, QBF con alternanze di quantificatori è difficile per ogni livello della gerarchia polinomiale.log(n)
(2) Penso che possiamo anche provare quanto segue:
Il problema è -hard.NSPACE(log2(n))
(3) Ecco la mia giustificazione informale per l'affermazione precedente:
Dato un spazio vincolato NTM e una stringa di input, dobbiamo determinare se esiste un calcolo accettando sulla proposta stringa di input.log2(n)
Ogni configurazione nel calcolo può essere rappresentata essenzialmente dai bit. In altre parole, possiamo rappresentare una configurazione da un gruppo di variabili log 2 ( n ) .log2(n)log2(n)
L'idea è che abbiamo una configurazione iniziale e una configurazione finale e dobbiamo indovinare il calcolo che avviene nel mezzo. Indoviniamo ricorsivamente le configurazioni "intermedie" usando i quantificatori esistenti e ricerchiamo verificando che la configurazione "sinistra" vada al "medio" e la configurazione "centrale" vada al "giusto" usando per tutti i quantificatori.
Ora per far funzionare tutto questo, invece di scegliere una configurazione "centrale", dobbiamo scegliere un gruppo di configurazioni "intermedie" equidistanti tra le configurazioni "sinistra" e "destra". In particolare, potremmo indovinare configurazioni "intermedie" equidistanti usando esistono quantificatori con √n−−√variabili e quindi ricorrere su ogni gap tra le configurazioni usando per tutti i quantificatori con circalog(n)variabili.n−−√∗log2(n)log(n)
La ricorsione deve solo continuare fino alla profondità per poter coprire un calcolo della lunghezza √2∗log(n)dove ogni configurazione ha al massimolog2(n)molti bit.n−−√2∗log(n)=nlog(n)=2log2(n)log2(n)
Poiché la ricorsione è di profondità , abbiamo solo gruppi di variabili O ( log ( n ) ) , ovvero alternanze. Poiché ogni gruppo di quantificatori ha solo √O(log(n))O(log(n))variabili, in totale abbiamoO( √n−−√∗log2(n)variabili.O(n−−√∗log3(n))
Sentiti libero di offrire feedback o correzioni. Grazie mille e spero che questo ti aiuti un po '.
(4) Un'asserzione più generale come suggerito dalla risposta di Ryan:
Dovresti essere in grado di eseguire la costruzione precedente in un modo più generale. Considera quanto segue:
Ad ogni passo della ricorsione, suddividere in gruppi di configurazioni "intermedie" usando i bit c ( n ) per configurazione. Quindi, eseguire la ricorsione alla profondità d ( n ) .g(n)c(n)d(n)
Finché non abbiamo troppe variabili e troppe alternanze, questo sembra funzionare bene. All'incirca, abbiamo bisogno di quanto segue per essere soddisfatti:
- g(n)∗c(n)∗d(n)≤n
- d(n)≤log(n)
Il nostro approccio generalizzato verrà utilizzato per simulare macchine di Turing non deterministiche che eseguono passi usando bit di memoria c ( n ) .g(n)d(n)c(n)
In particolare, scegliamo quanto segue:
Le precedenti disuguaglianze sono soddisfatte e possiamo eseguire la costruzione per simulare macchine di Turing non deterministiche che eseguono per circa passaggi usando √2log2(n) bit di memoria.n√2∗log2n
In altre parole, abbiamo un risultato di durezza migliore rispetto a prima. In particolare, il problema è difficile per .NTISP(2log2(n),n√2∗log2n)
(5) Altre generalizzazioni:
Nella precedente generalizzazione, simulavamo macchine di Turing non limitate nel tempo e nello spazio. Tuttavia, potremmo essere in grado di simulare anche macchine di Turing alternate nel tempo e nello spazio.
Lasciami spiegare un po '. Quindi usiamo approssimativamente le alternanze per fare la ricorsione in profondità log ( n ) . Tuttavia, potremmo usare inizialmente alcune delle alternative, diciamo √log(n)log(n) . Quindi, potremmo usare il rimanente √log(n)−−−−−√ alternanze per andare in profondità √log(n)−−−−−√ .log(n)−−−−−√
In questo caso, potremmo simulare macchine di Turing alternate che hanno alternanze con lunghezze dei testimoni sublineari, corsa per2 log 3log(n)−−−−−√passaggi e utilizzare√2log32(n) bit di memoria.n√2∗log2n
In altre parole, il problema è difficile per con lunghezze del testimone sublineari. In alternativa, questa classe potrebbe essere scritta usando lanotazioneSTAmenzionata nei commenti sopra.AltTimeSpace(log(n)−−−−−√,2log32(n),n√2∗log2n)STA
Grazie per i commenti e sentiti libero di offrire ulteriori correzioni o chiarimenti. :)