Esistono molti problemi in cui conosciamo un algoritmo randomizzato efficiente e non conosciamo alcun algoritmo deterministico che possiamo dimostrare efficace. Tuttavia, ciò può riflettere carenze nella nostra capacità di provare cose sulla complessità piuttosto che su qualsiasi differenza fondamentale.
Sulla base del tuo commento , sembra che tu volessi chiedere se esiste qualche problema in cui esiste un algoritmo randomizzato efficiente e possiamo provare non esiste un algoritmo deterministico di efficienza comparabile. Non conosco alcun problema del genere.
In effetti, vi sono fondati motivi per sospettare che tali problemi potrebbero non esistere. Euristicamente, l'esistenza di un tale problema significherebbe probabilmente l'impossibilità di crittografare in modo sicuro. Sembra un risultato piuttosto non plausibile.
Qual è la connessione, chiedi? Bene, considera qualsiasi algoritmo randomizzato che risolva alcuni problemi in modo efficiente. Si basa su monete casuali: bit casuali ottenuti da una fonte casuale reale. Supponiamo ora di prendere un generatore pseudocasuale di qualità crittografica e di sostituire la sorgente true-random con l'output del generatore pseudocasuale. Chiama l'algoritmo risultante A ′ . Si noti che A ′ è un algoritmo deterministico e il suo tempo di esecuzione è approssimativamente uguale a AAA′A′A .
Inoltre, se il PRNG crittografico è sicuro, euristicamente dovremmo aspettarci che sia un buon algoritmo se A è:A′A
Ad esempio, se è un algoritmo di Las Vegas (genera sempre la risposta corretta e termina rapidamente con alta probabilità), allora A ' sarà un algoritmo deterministico piuttosto buono (genera sempre la risposta corretta e termina rapidamente per la maggior parte degli input) .AA′
Come altro esempio, se è un algoritmo Monte Carlo (tempo di esecuzione deterministico e genera la risposta corretta con probabilità almeno 1 - ε ), A sarà un algoritmo deterministico piuttosto buono (tempo di esecuzione deterministico e restituisce la risposta corretta su una frazione 1 - ε di tutti gli input).A′1−εA1−ε
Pertanto, se il PRNG crittografico è sicuro e esiste un algoritmo randomizzato efficiente, si ottiene un algoritmo deterministico che è abbastanza buono. Ora ci sono molte costruzioni di PRNG crittografiche che sono garantite in modo sicuro se alcuni presupposti crittografici valgono. In pratica, tali ipotesi crittografiche sono ampiamente credute: almeno, il commercio sicuro e le transazioni dipendono dal fatto che sono vere, quindi apparentemente siamo disposti a scommettere ingenti somme di denaro per l'esistenza della crittografia protetta. L'unico modo in cui questa trasformazione può fallire è se il PRNG crittografico non esiste, il che a sua volta implica che la crittografia sicura è impossibile. Anche se non abbiamo alcuna prova che questo non sia il caso, sembra un risultato improbabile.
Dettagli della costruzione: ecco come funziona . Su ingresso x , si ricava un seme per la PRNG crittografico come funzione di x (ad esempio, da hashing x ), e quindi simula A ( x ) , utilizzando l'uscita del PRNG crittografico le monete per A . Ad esempio, un'istanza specifica sarebbe quella di impostare k = SHA256 ( x ) , quindi utilizzare kA′xxxA(x)Ak=SHA256(x)k come seme per AES256 in modalità contatore, o qualche altro PRNG crittografico. Possiamo provare le affermazioni di cui sopra con il modello di Oracle casuale.
Se non sei soddisfatto dell'idea che possa produrre risultati errati su una piccola frazione degli input, questo può essere risolto. Se si ripete A ' più volte e si ottiene un voto a maggioranza, la probabilità di errore diminuisce esponenzialmente rapidamente nel numero di iterazioni. Così, scorrendo un numero costante di volte, è possibile ottenere la probabilità di errore ε essere inferiore a 1 / 2 256 , il che significa la possibilità che si esegue attraverso un ingresso xA′A′ε1/2256xdove l'algoritmo genera la risposta sbagliata sono vanificanti (meno delle possibilità di essere colpiti da un fulmine più volte di seguito). Inoltre, con la costruzione che ho dato sopra, le possibilità che un avversario possa persino trovare un input cui A ′ fornisce la risposta sbagliata possono essere ridotte al minimo, poiché ciò richiederebbe di violare la sicurezza dell'hash SHA256. (Tecnicamente, questo richiede il modello di oracolo casuale per giustificare, quindi significa che AxA′A deve essere scelto per essere "indipendente" da SHA256 e non nei calcoli hardcode in esso correlati a SHA256, ma quasi tutti gli algoritmi del mondo reale soddisfano tale requisito .)
Se si desidera una base teorica più forte, è possibile iterare Θ ( n ) volte, e ottenere la probabilità di errore di essere al di sotto di 1 / 2 n , dove n è la lunghezza dell'input x . Ora la frazione di n ingressi -bit dove A ' dà una risposta sbagliata è strettamente minore di 1 / 2 n . Ma ci sono solo 2 n possibili input n -bit, e su ognuno A è corretto o errato, quindi ne consegue che non c'è input dove A ′A Θ(n)1/2nnxnA′1/2n2nnAA′non è corretto: è corretto su tutti gli input, e questo vale incondizionatamente. Se A corre nel tempo t ( n ) , allora A ′ corre nel tempo Θ ( n ⋅ t ( n ) ) , quindi A ′ è un po 'più lento di A ma non troppo lento. Questo è il contenuto della prova di Adleman che BPP è contenuto in P / poly. Ai fini pratici questo è probabilmente eccessivo, ma se ti piacciono le prove chiare che evitano ipotesi crittografiche o se ti avvicini a questo dal punto di vista del teorico, potresti apprezzare meglio questa versione.A′At(n)A′Θ(n⋅t(n))A′A
Per maggiori dettagli su queste ultime considerazioni teoriche e problemi aggiuntivi in cui conosciamo un algoritmo randomizzato efficiente ma non conosciamo alcun algoritmo deterministico che possiamo dimostrare efficiente, vedere /cstheory//q/31195 / 5038
In sintesi: per qualsiasi problema in cui conosciamo un algoritmo randomizzato efficiente, conosciamo anche un algoritmo deterministico che sembra essere efficace nella pratica, ma al momento non sappiamo come dimostrarlo . Una possibile interpretazione è che non siamo molto bravi a provare cose sugli algoritmi.