Algoritmo randomizzato che "sembra" deterministico?


31

Esiste un esempio interessante di algoritmo randomizzato per un problema di ricerca che genera sempre la stessa risposta (corretta), indipendentemente dalla casualità interna, ma che sfrutta la casualità in modo che il suo tempo di esecuzione previsto sia migliore del tempo di esecuzione del più veloce conosciuto algoritmo deterministico per il problema?

In particolare, mi chiedevo se esiste un tale algoritmo per trovare un numero primo tra n e 2n. Non esiste un algoritmo deterministico temporale polinomiale noto. C'è un banale algoritmo randomizzato che funziona semplicemente campionando numeri interi casuali nell'intervallo, che funziona grazie al teorema dei numeri primi . Ma esiste un algoritmo del tipo sopra il cui tempo di esecuzione previsto è intermedio tra i due?

EDIT: Per affinare leggermente la mia domanda, volevo un tale algoritmo per un problema in cui ci sono molti possibili output corretti, e tuttavia l'algoritmo randomizzato si basa su uno indipendente dalla sua casualità. Mi rendo conto che probabilmente la domanda non è completamente specificata ...


3
Per darti alcune parole chiave di ricerca, gli algoritmi randomizzati che producono sempre la risposta corretta (e usano la casualità per un tempo di esecuzione più breve) sono chiamati algoritmi di Las Vegas (al contrario degli algoritmi Monte Carlo) o algoritmi a errore zero e una classe di complessità correlata è ZPP .
Tsuyoshi Ito

@Tsuyoshi: grazie per il tuo commento. Ma non sono a conoscenza degli algoritmi di tipo Las Vegas per problemi di ricerca. Questa è la mia domanda
Arnab

Se esiste un algoritmo randomizzato per trovare equilibri di Nash unici che risponderebbero alla tua domanda.
Warren Schudy,

Forse c'è qualche problema relativo agli attacchi di compleanno ( en.wikipedia.org/wiki/Birthday_attack ) che si adatta alle tue esigenze?
Warren Schudy,

Risposte:


23

Shafi Goldwasser mi ha comunicato che lei e coautori hanno studiato esattamente tali algoritmi per problemi di teoria dei numeri! È noto quanto segue:

  1. Lenstra ha dimostrato che esiste un tale algoritmo per trovare una mod quadratica senza residui in un dato primo.

  2. Gat e Goldwasser hanno dimostrato che esiste un tale algoritmo per trovare un generatore di , in cui p è un dato primo della forma 2 q + 1 per un primo q .Zpp2q+1q

(Non conosco riferimenti citabili.) Sono in corso anche ricerche sulla domanda che ho posto sulla ricerca di un numero primo tra e 2 n .n2n

EDIT: l'articolo di Gat e Goldwasser è ora pubblicato: http://eccc.hpi-web.de/report/2011/136/ . Questo documento però non risolve la questione di trovare un numero primo tra e 2 n .n2n


1
+1 virtuale. Questo è davvero interessante, cercherà il giornale.
András Salamon,

2
Nonostante la nota, ho votato a favore di questa risposta semplicemente perché questa è una buona risposta. Non penso che ci sia qualcosa di sbagliato nel valutare una buona risposta pubblicata per qualcun altro. Ho iniziato una discussione su Meta al riguardo.
Tsuyoshi Ito,

1
Ho rimosso la nota e l'ho resa "wiki della community" come da discussione sul meta thread.
arnab,

Il meta thread menzionato da arnab è disponibile qui: meta.cstheory.stackexchange.com/q/607/873 .
MS Dousti,

18

Le strutture di dati randomizzate contano?

C'è la lista salta che è una struttura di dati della mappa associativa ordinata.

Il suo tempo di esecuzione per operazioni comuni come l'inserimento, il recupero e l'eliminazione sono (nel caso previsto) alla pari con quelli degli alberi di ricerca bilanciati, ovvero . Tuttavia, a volte si afferma che la struttura dei dati ha un fattore costante molto migliore rispetto alle implementazioni dell'albero di ricerca se eseguita correttamente (ciò si basa criticamente su una buona ed efficiente fonte di casualità). Il fattore costante migliore deriva probabilmente dal fatto che non deve avvenire alcun ribilanciamento (o un'operazione simile).O(logn)


Grazie! Questo sicuramente conta ed è una risposta non banale alla mia domanda originale. Volevo un problema anche se più analogo al problema della ricerca primaria, in cui esistono molte potenziali soluzioni.
arnab,

Aggiungi liste di salto a quel treno di pensieri.
Raffaello,

13

Che ne dici dell'algoritmo simplex random-time polinomiale randomizzato di Kelner e Spielman? Trova il vertice ottimale di un programma lineare. Non è noto alcun algoritmo simplex deterministico che ha dimostrato di funzionare in tempi polinomiali e per molti di essi è possibile costruire istanze patologiche che fanno sì che l'algoritmo impieghi tempo esponenziale.

Naturalmente, ci sono algoritmi punto-interno polinomiali, quindi non è esattamente quello che stai cercando.


Se ci sono diversi punti ottimali, Kelner-Spielman restituirebbe sempre lo stesso punto?
Sasho Nikolov,

3
I programmi lineari generici hanno solo un punto ottimale, quindi usando la perturbazione, si potrebbe fare una variante di Kelner-Spielman che restituisce sempre lo stesso punto ottimale.
Peter Shor,

12

2nn2n

2n1

Questo si qualifica?


Bello!! Questo sicuramente si qualifica, anche se stavo cercando un esempio più banale in cui il miglioramento del tempo di esecuzione è più sostanziale.
arnab,

Non hai bisogno della struttura ad albero, questo funziona su un array.
sdcvvc,

7

Fplogpp si garantisce è piccolo.

logp



3

Per quanto riguarda la tua prima domanda, ho pensato prima a Quicksort, ma dovrebbe essere ovvio.

Esiste un algoritmo di adattamento delle stringhe ( Nebel, 2006 ) che utilizza idee probabilistiche. So che questo è l'approccio più veloce esistente, e apparentemente hai bisogno di alcuni campioni per l'allenamento.


Anche la ricerca mediana è più veloce, ma non così drammaticamente.
Aram Harrow,

3

Il seguente documento STACS '97 potrebbe essere interessante per il tuo caso: la complessità della generazione di istanze di prova .

Riassunto: recentemente Watanabe ha proposto un nuovo framework per testare la correttezza e il comportamento medio dei casi di algoritmi che pretendono di risolvere un dato problema di ricerca NP in modo efficiente in media. L'idea è di generare casualmente istanze certificate in modo simile alla distribuzione sottostante. Discutiamo di questo approccio e mostriamo che è possibile generare istanze di test per ogni problema di ricerca NP con query non adattative a un oracolo NP. Inoltre, presentiamo i tipi di generatori di istanze di test di Las Vegas e Monte Carlo e dimostriamo che questi generatori possono essere utilizzati per scoprire se un algoritmo è corretto ed efficiente in media. In effetti, non è difficile costruire generatori Monte Carlo per tutti i problemi di ricerca RP, così come generatori di Las Vegas per tutti i problemi di ricerca ZPP. D'altro canto,

In particolare, dai un'occhiata a pagina 384, sotto Corollario 12:

ZPPRPZPPNPNPcoNP


2

1ncpolylog(n)


3
Questo si riferisce al test e al non trovare ...
Dana Moshkovitz,

Mi interessava di più i problemi di ricerca. Per problemi di decisione, ci sono algoritmi di Las Vegas.
arnab,
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.