Quando la randomizzazione accelera gli algoritmi e "non dovrebbe"?


39

La prova di Adleman che è contenuto in P / p o l y mostra che se esiste un algoritmo randomizzato per un problema che corre nel tempo t ( n ) su input di dimensione n , allora esiste anche un algoritmo deterministico per il problema che scorre nel tempo Θ ( t ( n ) n ) su input di dimensione n [l'algoritmo esegue l'algoritmo randomizzato su Θ ( n )BPPP/polyt(n)nΘ(t(n)n)nΘ(n)stringhe di casualità indipendenti. Deve esserci casualità per l'algoritmo ripetuto che è buono per tutti i possibili input]. L'algoritmo deterministico non è uniforme: può comportarsi in modo diverso per dimensioni di input diverse. Quindi l'argomento di Adleman mostra che - se non ci si preoccupa dell'uniformità - la randomizzazione può solo accelerare gli algoritmi di un fattore che è lineare nella dimensione dell'input.2n

Quali sono alcuni esempi concreti in cui la randomizzazione accelera il calcolo (per quanto ne sappiamo)?

Un esempio è il test di identità polinomiale. Qui l'ingresso è un circuito aritmetico di dimensioni n che calcola un polinomio m-variabile su un campo e il compito è scoprire se il polinomio è identicamente zero. Un algoritmo randomizzato può valutare il polinomio su un punto casuale, mentre il miglior algoritmo deterministico che conosciamo (e forse il migliore esistente) valuta il polinomio su molti punti.

Un altro esempio è lo spanning tree minimo, in cui il miglior algoritmo randomizzato di Karger-Klein-Tarjan è il tempo lineare (e la probabilità di errore è esponenzialmente piccola!), Mentre il miglior algoritmo deterministico di Chazelle viene eseguito nel tempo ( α è la funzione inversa di Ackermann, quindi l'accelerazione della randomizzazione è davvero ridotta). È interessante notare che Pettie e Ramachandran hanno dimostrato che se esiste un algoritmo di tempo lineare deterministico non uniforme per lo spanning tree minimo, esiste anche un algoritmo di tempo lineare deterministico uniforme.O(mα(m,n))α

Quali sono alcuni altri esempi? Quali esempi conosci dove la velocità di randomizzazione è grande, ma forse è solo perché non abbiamo ancora trovato algoritmi deterministici sufficientemente efficienti?


5
Strettamente correlato: problemi di BPP non noti in P
usul

Puoi sempre convertire qualsiasi algoritmo randomizzato in un algoritmo deterministico, sostituendo il generatore casuale con un generatore pseudocasuale di qualità crittografica. In base a ipotesi crittografiche plausibili secondo cui, per quanto a nostra conoscenza, sono valide, questo funziona bene. Pertanto, la mia risposta sarebbe: "per quanto ne sappiamo, la risposta è: non ci sono problemi del mondo reale". (In altre parole, per quanto ne sappiamo, il divario nel runtime riflette la nostra incapacità di dimostrare limiti di runtime stretti piuttosto che qualsiasi reale differenza sottostante.)
DW

1
Con ipotesi di durezza ragionevoli è possibile alimentare la casualità dell'algoritmo da un generatore pseudocasuale, tuttavia per ottenere effettivamente un algoritmo deterministico da questo, è necessario eseguire l'algoritmo su tutti i semi possibili. Questo fa saltare il tempo di esecuzione!
Dana Moshkovitz,

Oltre al punto di Dana, penso che per derandomizzare BPP, il PRG debba funzionare in più tempo rispetto all'algoritmo originale (anche se non so quale sia il divario). Inoltre, questo potrebbe illustrare un divario (fondamentale?) Tra certezza e fiducia esponenzialmente elevata: è sufficiente ripetere un algoritmo randomizzato volte (per qualsiasi costante c ) per ottenere la probabilità di correttezza 2 - O ( c ) , ma la versione deterministica necessita per controllare tutti i semi polinomialmente molti. cc2O(c)
usul

@DanaMoshkovitz, dipende se ti avvicini a questo punto di vista teorico o praticante. Dal punto di vista del professionista, no, non è necessario farlo. Vedi la costruzione che ho delineato in cs.stackexchange.com/a/41723/755 , che esegue l'algoritmo solo su semi. Sotto il modello dell'oracolo casuale si può dimostrare che non vi è alcun aumento del runtime asintotico e che probabilmente nessun avversario limitato dal punto di vista computazionale sarà in grado di trovare alcun input per l'algoritmo in cui l'algoritmo produce una risposta errata. Questo è probabilmente abbastanza buono per tutti gli scopi pratici. O(1)
DW,

Risposte:


28

Non so se la randomizzazione “dovrebbe” o “non dovrebbe” aiutare, tuttavia, i test di primalità su numeri interi possono essere eseguiti in tempo usando Miller – Rabin randomizzato, mentre per quanto ne so, il più noto gli algoritmi deterministici sono ˜ O ( n 4 ) assumendo GRH (deterministico Miller – Rabin) o ˜ O ( n 6 ) incondizionatamente (varianti di AKS).O~(n2)O~(n4)O~(n6)


Sebbene ci siano ragioni per ritenere che il più piccolo testimone di composizione per sia del registro ordini N registro log N , che darebbe un algoritmo ˜ O ( n 3 ) . Ma questo non è dimostrato anche in congetture teoriche sui numeri standard come le varianti di RH. NlogNloglogNO~(n3)
Emil Jeřábek sostiene Monica il

Un problema in una vena simile è il test di irriducibilità polinomiale su campi finiti, dove algoritmo deterministico noto di nuovo ha limiti peggiori rispetto agli algoritmi randomizzati, ma non ricordo i dettagli.
Emil Jeřábek sostiene Monica il

19

Un vecchio esempio è il calcolo del volume. Dato un polytope descritto da un oracolo di appartenenza, esiste un algoritmo randomizzato in esecuzione in un tempo polinomiale per stimare il suo volume su un fattore , ma nessun algoritmo deterministico può avvicinarsi incondizionatamente .1+ϵ

Il primo esempio di tale strategia randomizzata è stato di Dyer, Frieze e Kannan, e il risultato della durezza per gli algoritmi deterministici è di Bárány e Füredi. Alistair Sinclair ha delle belle note a riguardo .

Non sono sicuro di aver compreso appieno la parte "e non dovrebbe" della domanda, quindi non sono sicuro che questo si adatti al conto.


1
Ero a conoscenza del metodo MCMC, ma non di questo limite inferiore, e sono piuttosto sorpreso (pensavo che tutto ciò che si sapeva fosse # Durezza P). L'articolo è "Calcolare il volume è difficile", accessibile dalla pagina Web di Füredi , e fornisce un limite inferiore essenzialmente di su quanto il volume può essere approssimato. [n/logn]n
Jeremy Kun,

9

non so se questo risponde alla tua domanda (o almeno in parte). Ma per esempi del mondo reale in cui la randomizzazione può fornire un'accelerazione è nei problemi di ottimizzazione e nella relazione con il teorema del No Free Lunch ( NFL ) .

C'è un articolo "Forse non un pranzo gratuito ma almeno uno stuzzichino gratuito" in cui viene mostrato che impiegando la randomizzazione, gli algoritmi (di ottimizzazione) possono avere prestazioni migliori.

Astratto:

Spesso si afferma che gli algoritmi evolutivi sono superiori ad altre tecniche di ottimizzazione, in particolare in situazioni in cui non si sa molto sulla funzione oggettiva da ottimizzare. Contrariamente a ciò, Wolpert e Macready (1997) hanno dimostrato che tutte le tecniche di ottimizzazione hanno lo stesso comportamento --- in media su tutte dove X e Yf:XYXYsono insiemi finiti. Questo risultato è chiamato [il] Teorema del pranzo libero. Qui vengono presentati diversi scenari di ottimizzazione. Si discute sul perché lo scenario su cui si basa il teorema del pranzo libero non modella l'ottimizzazione della vita reale. Per scenari più realistici si discute il motivo per cui le tecniche di ottimizzazione differiscono nella loro efficienza. Per un piccolo esempio questa affermazione è dimostrata.

Riferimenti:

  1. Nessun teorema del pranzo libero per l'ottimizzazione ( teorema originale NFL per l'ottimizzazione)
  2. Forse non un pranzo gratuito ma almeno un antipasto gratuito
  3. La lunghezza del pranzo libero e della descrizione (mostra che i risultati NFL valgono per qualsiasi sottoinsieme dell'insieme di tutte le possibili funzioni se F è chiuso sotto permutazione, coppa )FF
  4. Su classi di funzioni per le quali sono disponibili i risultati Nessun pranzo libero (È dimostrato che la frazione di sottoinsiemi che sono tazza è trascurabilmente piccola)
  5. Due ampie classi di funzioni per le quali non esiste un risultato senza pranzo libero (mostra che un risultato NFL non si applica a un insieme di funzioni quando la lunghezza della descrizione delle funzioni è sufficientemente limitata)
  6. I pranzi continui sono gratuiti più il design di algoritmi di ottimizzazione ottimali (mostra che per domini continui, [versione ufficiale di] NFL non regge. Questo teorema del pranzo libero si basa sulla formalizzazione del concetto di funzioni casuali di fitness mediante campi casuali )
  7. Beyond No Free Lunch: algoritmi realistici per le classi di problemi arbitrari (mostra che ".. [a] tutte le violazioni dei teoremi del No Free Lunch possono essere espresse come distribuzioni non uniformi su sottoinsiemi di problemi che sono cup ")
  8. Algoritmi meta-euristici basati su sciami e teoremi del non-pranzo libero ("[..t] in precedenza, i risultati per iterazioni non rivisitate in base al tempo potrebbero non essere veri per i casi di casi rivisitanti, poiché le iterazioni rivisitanti rompono un'importante ipotesi coppa richiesta per dimostrare i teoremi della NFL (Marshall e Hinton, 2010) ")
  9. Nessun pranzo libero e casualità algoritmica
  10. No Free Lunch and Benchmarks (un approccio set-teorico è generalizzato a criteri non specifici alla tazza , ma osserva ancora che gli algoritmi randomizzati (non banali) possono superare in media gli algoritmi deterministici ", [...] è stato dimostrato che la probabilità è inadeguata per affermare risultati NFL non vincolati nel caso generale. [..] questo documento abbandona la probabilità, preferendo un quadro teorico set che elimina i limiti teorici della misura eliminando completamente la probabilità ")

Riepilogo dei pranzi gratuiti (e dei pranzi gratuiti) di David H. Wolpert, Quanto costa la cena? ( nota che i teoremi di tipo NFL non specificano mai un " prezzo " effettivo a causa del loro tipo di prova)

specifico per l'ottimizzazione generalizzata (GO):

  1. XZXZ

  2. f:XZ

  3. mf

    dm={dm(1),dm(2),...,dm(m)}
    t
    dm(t)={dmX(t),dmZ(t)}
    dmZ(t)f[dmX(t)]
  4. a={dtdmX(t):t=0..m}

  5. C(f,dm)

  6. C(.,.)

CfCfC(f,dm)f=f

Infine, un'osservazione semplice (e non così semplice) per cui la randomizzazione (in una forma o nell'altra) può fornire prestazioni superiori rispetto agli algoritmi strettamente deterministici.

  1. Nel contesto dell'ottimizzazione (sebbene non limitato in questo), una procedura di ricerca randomizzata può in media sfuggire a local-extrema meglio della ricerca deterministica, e raggiungere global-extrema.
  2. 2AAAAA

1

Il miglior esempio è in area considerata attualmente il miglior candidato per OWF, dove sembra che ogni OWF popolare che viene cucinato sorprendentemente abbia un algoritmo sub-esponenziale randomizzato mentre non esiste un algoritmo sub-esponenziale deterministico (ad esempio prendere la fattorizzazione a numeri interi). In effetti, in molti casi, esiste probabilmente un algoritmo efficiente dato alcune stringhe di consigli (criptoanalisi).


-5

Se hai un algoritmo che usa la randomizzazione, puoi sempre sostituirlo con un algoritmo deterministico usando numeri pseudo-casuali: prendi la descrizione del problema, calcola un codice hash, usa quel codice hash come seme per un buon generatore di numeri pseudo-casuali . In pratica, questo è ciò che è probabile che accada quando qualcuno implementa un algoritmo usando la randomizzazione.

Se tralasciamo il codice hash, la differenza tra questo algoritmo e un algoritmo che utilizza la randomizzazione vera è che posso prevedere la sequenza di numeri casuali generati e potrei produrre un problema in modo tale che il numero casuale previsto applicato al mio problema sarà sempre prendere la decisione peggiore possibile. Ad esempio, per Quicksort con un pivot pseudo-casuale potrei costruire un array di input in cui il pivot pseudo-random troverà sempre il massimo valore possibile nell'array. Con vera casualità ciò non è possibile.

Con il codice hash, sarebbe molto difficile per me costruire un problema in cui i numeri pseudo-casuali producono risultati peggiori. Posso ancora prevedere i numeri casuali, ma se cambio il problema, la sequenza di numeri pseudo-casuali cambia completamente. Tuttavia, sarebbe quasi impossibile per te provare che non posso costruire un simile problema.


Sono nuovo di cstheory.SE. Quindi, downvoter - cosa c'è di sbagliato in questa risposta?
Galdre,

3
Due cose sono sbagliate: (1) non sappiamo come costruire numeri pseudocasuali in generale, (2) anche quando sappiamo come costruirli, sono computazionalmente costosi. I numeri pseudocasuali utilizzati nella pratica non sono garantiti per funzionare in teoria; tutto ciò che sappiamo è che sembrano funzionare empiricamente. (In effetti, la maggior parte dei PRNG attualmente in uso può essere rotta, quindi in realtà non sono sicuri per l'uso in generale, solo quando non si sta specificamente cercando di romperli.)
Yuval Filmus

2
cstheory.se riguarda l' informatica teorica *, non la pratica della programmazione. Piaccia o no, le due aree sono abbastanza separate.
Yuval Filmus,

2
@YuvalFilmus: il generatore a gradini alternati inventato da C. Gunther nel 1987 non è stato ancora interrotto (nessuna interruzione pubblica ancora, e dubito che anche l'NSA l'abbia rotto). Ventotto anni sono tanti per rimanere ininterrotti, sono sorpreso che un generatore così semplice (tre LFSR e un gate XOR, quanto sia semplice?) Non sia stato ancora rotto e non venga usato più spesso.
William Hird,

2
@WilliamHird: a seconda della definizione di "rotto", sembra che sia stato effettivamente rotto (più o meno in misura simile alla famiglia A5 / x correlata, più efficiente e ampiamente utilizzata). Vedi crypto.stackexchange.com/a/342 .
Emil Jeřábek sostiene Monica il
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.