Domanda

Wikipedia su algoritmi randomizzati

Si deve distinguere tra algoritmi che utilizzare il casuale Ingresso per ridurre l'esecuzione atteso tempo di utilizzo o la memoria, ma sempre terminare con un risultato corretto in una quantità limitata di tempo, e probabilistica algoritmi , che, a seconda dell'ingresso a caso, hanno la possibilità di produrre un risultato errato (Monte Carlo algoritmi) o non riescono a produrre un risultato (algoritmi di Las Vegas) sia segnalando un guasto o mancato terminare.

  1. Mi chiedevo come il primo tipo di " algoritmi usare il casuale ingresso per ridurre il tempo di attesa o utilizzo della memoria, ma terminare sempre con un risultato corretto in una quantità limitata di tempo?
  2. Quali differenze sono tra esso e gli algoritmi di Las Vegas che può non riescono a produrre un risultato?
  3. Se ho capito bene, algoritmi probabilistici e algoritmi randomizzati non sono lo stesso concetto. algoritmi probabilistici sono solo uno tipo di algoritmi randomizzati, e altri tipi è quelli uso la casuale di ingresso per ridurre il tempo di attesa o utilizzo della memoria, ma sempre terminare con un risultato corretto in una quantità limitata di tempo?
È stato utile?

Soluzione

  1. Un esempio di un tale algoritmo è randomizzato rapida Ordina, dove si permute a caso nell'elenco o in modo casuale scegliere il valore pivot, quindi utilizzare Quick Sort come normale. Breve ha Sort un caso peggiore di $ O (n ^ {2}) $, ma su un elenco casuale ha un tempo di esecuzione previsto di $ O (n \ log n) $, in modo che termina sempre dopo $ O (n correndo ^ {2}) $ passi, ma ci si può aspettare l'istanza randomizzato per terminare dopo $ O (n \ log n) $ gradini, sempre con una risposta corretta.

  2. Questo dà un sottoinsieme di algoritmi di Las Vegas. Algoritmi di Las Vegas consentono anche la possibilità che (con una bassa probabilità) non può terminare a tutti -. Non solo terminare con un po 'più di tempo

  3. Questi a loro volta sono in realtà solo un tipo di Monte Carlo algoritmo, in cui la risposta non può essere corretto (con bassa probabilità), che è almeno concettualmente diverso da forse non rispondere.

C'è un sacco di dettagli che ho lasciato fuori, naturalmente, si potrebbe voler cercare il classi di complessità ZPP, RP e BPP, che formalizzare queste idee.

Altri suggerimenti

I due termini randomizzato algoritmi e probabilistica algoritmi sono utilizzati in due contesti diversi. randomizzato algoritmi sono algoritmi che uso casualità, in contrapposizione con deterministica algoritmi che non lo fanno. probabilistica algoritmi , per esempio algoritmi probabilistici per il test di primalità, sono algoritmi che uso casualità e potrebbe fare un errore con un po 'di (si spera) piccola probabilità.

Una distinzione importante deve essere fatta tra il algoritmi Monte Carlo e algoritmi di Las Vegas . algoritmi di Las Vegas sono randomizzati algoritmi che restituiscono sempre la risposta giusta, ma la loro durata dipende dai lanci di monete. Un esempio è numero intero algoritmi di fattorizzazione - tornano sempre i fattori corretti, ma la loro durata dipende dalla casualità. Quando indicando il tempo di esecuzione di un algoritmo di Las Vegas (diciamo un algoritmo di fattorizzazione), in realtà affermiamo il atteso tempo di esecuzione; se siamo sfortunati, l'algoritmo potrebbe funzionare più a lungo.

algoritmi di Monte Carlo, d'altra parte, sono algoritmo randomizzato cui tempo di esecuzione è fissato prima del tempo. Tali algoritmi può fare un errore, ma di solito la probabilità di errore è molto basso. Un buon esempio è il test di primalità probabilistico. Questi algoritmi sono molto veloci, ma potrebbe fare un errore. Tuttavia, la probabilità di errore è lenta a bassa che, in pratica, non hanno mai fare un errore.

Ogni algoritmo di Las Vegas può essere convertito in un algoritmo Monte Carlo fermando l'esecuzione dopo un tempo sufficientemente lungo, in modo da algoritmi di Las Vegas sono in un certo senso "migliore" di algoritmi di Monte Carlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top