L'inclusione inversa è ovvia, così come il fatto che qualsiasi linguaggio NP auto-riducibile in BPP è anche in RP. Questo è noto anche per le lingue NP non auto-riducibili?
L'inclusione inversa è ovvia, così come il fatto che qualsiasi linguaggio NP auto-riducibile in BPP è anche in RP. Questo è noto anche per le lingue NP non auto-riducibili?
Risposte:
Come con la maggior parte delle domande di complessità, non sono sicuro che ci sarà una risposta completa per molto tempo. Ma possiamo almeno dimostrare che la risposta non è relativizzante: esiste un oracolo relativo a quale disuguaglianza vale e uno relativo a cui vale l'uguaglianza. È abbastanza facile dare un oracolo rispetto al quale le classi sono uguali: qualsiasi oracolo che ha B P P = R P funzionerà (ad es. Qualsiasi oracolo relativo al quale "la casualità non aiuta molto"), così come qualsiasi oracolo che ha N P ⊆ B P P (ad es. Qualsiasi oracolo rispetto al quale "la casualità aiuta molto"). Ce ne sono molti, quindi non mi preoccuperò delle specifiche.
E 'un po' più impegnativo, anche se ancora abbastanza semplice, per la progettazione di un oracolo rispetto al quale si ottiene R P ⊊ B P P ∩ N P . La costruzione sotto realtà fa un po 'meglio: per ogni costante c , c'è un oracolo rispetto alla quale v'è un linguaggio in c o R P ∩ U P che non è in R P T I M E [ 2 n c ] . Lo traccerò di seguito.
Progetteremo un oracolo A che contiene stringhe della forma ( x , b , z ) , dove x è una stringa n -bit, b è un singolo bit e z è una stringa di bit di lunghezza 2 n c . Noi inoltre invia un linguaggio L A che sarà decisa da una c o R P macchina ed un U P macchina come segue:
Per far sì che le macchine sopra specificate rispettino effettivamente le promesse, abbiamo bisogno di A per soddisfare alcune proprietà. Per ogni x , una di queste due opzioni deve essere il caso:
Il nostro obiettivo sarà quello di specificare A che soddisfi queste promesse in modo tale che L A diagonali contro ogni macchina R P T I M E [ 2 n c ] . Per cercare di rendere breve questa risposta già lunga, lascerò cadere il macchinario di costruzione dell'oracolo e molti dettagli non importanti e spiegherò come diagonalizzare contro una macchina particolare. Correggi M una macchina di Turing randomizzata e lascia che x sia un input in modo da avere il pieno controllo sulla selezione di b e z in modo che ( x , b , z
Caso 1: Supponiamo che ci sia un modo per selezionare le z in modo che A soddisfi la prima opzione della sua promessa, e M abbia una scelta di casualità che accetta. Quindi impegneremo A in questa selezione. Quindi M non può contemporaneamente soddisfare la promessa R P e rifiutare x . Tuttavia, x ∉ L A . Così abbiamo diagonalizzata contro M .
Caso 2: Successivamente, supponiamo che il caso precedente non abbia funzionato. Mostreremo ora che allora M può essere costretto a rompere la promessa R P o rifiutare la scelta di A che soddisfa la seconda opzione della sua promessa. Questo diagonalizes contro M . Lo faremo in due passaggi:
In effetti, se iniziamo con A dal passaggio 1, la probabilità di accettazione di M è zero. A non soddisfa del tutto la seconda opzione della sua promessa, ma possiamo quindi capovolgere un po 'come nel passaggio 2 e lo farà. Dato che capovolgere il bit si fa sì che la probabilità di accettazione di M rimanga vicino allo zero, ne consegue che M non può accettare contemporaneamente x e soddisfare la promessa R P.
Resta da discutere i due passi nel caso 2:
Fissare una scelta di bit casuale r per M . Simulare M utilizzando r come casualità e rispondere alle richieste affinché ( x , 0 , z ) ∈ A e ( x , 1 , z ) ∉ A . Si osservi che M rende al massimo 2 n c query. Dato che ci sono 2 2 n c scelte di z , possiamo correggere le scelte non conquistate di z da avere ( x, 0 , z ) ∉ A , e hanno A ancora soddisfare la prima opzione della sua promessa. Dato che non siamo riusciti a far funzionare il caso 2 per M , questo significa che M deve rifiutare tutte le sue scelte di casualità rispetto ad A , e in particolare su r . Ne segue che se selezioniamo A per avere ( x , 0 , z ) ∈ A e ( x , 1 , z ) ∉ A per ogni scelta di z, Poi per ogni scelta di bit casuale r , M respinge rispetto a A .
Supponiamo che per ogni z , la frazione di bit casuali per cui M query ( x , 1 , z ) è almeno 1 / 2 . Quindi il numero totale di query è almeno 2 2 n c 2 2 n c / 2 . D'altra parte, M fa al massimo 2 2 n c 2 n c domande su tutti i suoi rami, una contraddizione. Quindi c'è una scelta di z in modo che la frazione di bit casuali per cui Mle query ( x , 1 , z ) sono inferiori a 1/2. Lanciando il valore di A su questa stringa incide quindi la probabilità di accettazione M di meno di 1 / 2 .
No, non è noto. Questa potrebbe non essere la prova più convincente, ma dai un'occhiata a questa ricerca su Google .