Simula un dado giusto con un dado parziale


18

Dato un dado con lato distorto , come si può generare uniformemente un numero casuale nell'intervallo ? La distribuzione di probabilità delle facce del dado non è nota, tutto ciò che è noto è che ogni faccia ha una probabilità diversa da zero e che la distribuzione della probabilità è la stessa su tutti i tiri (in particolare, i tiri sono indipendenti). Questa è l'ovvia generalizzazione dei risultati giusti con un dado ingiusto .N[1,N]

Detto questo in termini di informatica, abbiamo un oracolo che rappresenta i tiri di dado: tale che è diverso da zero e indipendente da . Stiamo cercando un algoritmo deterministico che è parametrizzata da (cioè può effettuare chiamate a ) tale che . L'algoritmo deve terminare con la probabilità 1, ovvero la probabilità che faccia più di chiamate a deve convergere a come .D:N[1,N]pi=P(D(k)=i)kADADP(A()=i)=1/NAnD0n

Per (simulare una moneta corretta dai lanci di una moneta con una moneta distorta), esiste un noto algoritmo:N=2

  • Ripeti "capovolgi due volte" fino a quando i due tiri non ottengono risultati distinti ((testa, coda) o (coda, testa)). In altre parole, ciclo per fino ak=0..D(2k+1)D(2k)
  • Restituisce 0 se l'ultima coppia di lanci era (teste, code) e 1 se era (code, teste). In altre parole, restituisce dove k è l'indice in cui il ciclo è stato terminato.D(2k)k

Un modo semplicistico per fare un dado imparziale da uno distorto è quello di usare il metodo di unbiasing di lancio della moneta per costruire una moneta giusta e costruire un dado giusto con campionamento di rifiuto, come in Unbiasing delle sequenze . Ma è ottimale (per i valori generici della distribuzione di probabilità)?

In particolare, la mia domanda è: che cos'è un algoritmo che richiede il minor numero previsto di chiamate all'oracolo ? Se l'insieme di valori attesi raggiungibili è aperto, qual è il limite inferiore e qual è una classe di algoritmi che converge verso questo limite inferiore?

Nel caso in cui diverse famiglie di algoritmi siano ottimali per diverse distribuzioni di probabilità, concentriamoci su dadi quasi equi: sto cercando un algoritmo o una famiglia di algoritmi che sia ottimale per distribuzioni tali che i,|pi1/N|<ϵ per alcuni ϵ>0 .


Nota che è importante definire attentamente l'ottimale, poiché ad esempio potresti ricevere un dado completamente corretto o un dado con , per o qualsiasi altro tipo di morire. Uno schema ottimale per il dado giusto richiede solo un tiro, mentre per l'esempio ingiusto uno schema ottimale richiede molti. Inoltre, il supremo dell'ottimale su tutti i possibili stampi distorti è probabilmente illimitato. Quindi potresti voler introdurre un parametro e supporre che per esempio. p i = ϵ / ( N - 1 ) i > 1 max i p i1 - ϵp1=1-εpio=ε/(N-1)io>1maxiopio1-ε
usul

@usul Non capisco il tuo commento. Esistono algoritmi più efficienti per alcuni valori di (ad esempio if ), ma sto solo chiedendo algoritmi che non dipendono da . Qual è il punto di ? i , p i = 1 / N ( p i ) ϵpioio,pio=1/N(pio)ε
Gilles 'SO- smetti di essere malvagio' il

Come si misura l'efficienza di un algoritmo che non dipende da ? Probabilmente per tale algoritmo, non vi è alcun limite superiore al numero previsto di chiamate necessarie, portando il mio esempio distorto die con . Questo è ciò che intendo per "il supremo dell'ottimale ... è probabilmente illimitato". Quindi, se tutti gli algoritmi possono richiedere arbitrariamente molti tiri di dado in attesa, come possiamo decidere quale sia la migliore? ϵ 0(pi)ϵ0
usul

@usul Non c'è limite superiore al numero di tiri, ovviamente, ma sto chiedendo del valore atteso (cioè il numero medio di tiri). Per una data distribuzione , il valore atteso per l'algoritmo che crea una moneta giusta e che utilizza per il campionamento del rifiuto è finito, non è vero? È vero che l'aspettativa dipende dalla distribuzione, quindi diversi algoritmi (famiglie di) potrebbero essere ottimali per diverse distribuzioni. Se è così, diciamo che sono interessato a dadi quasi onesti. (pio)
Gilles 'SO- smetti di essere malvagio' il

Non esattamente la domanda, ma saresti disposto a cercare solo un risultato vicino all'uniforme (in / distanza di variazione totale)? In tal caso, a seconda della garanzia richiesta dalla distribuzione originale, questo è studiato in un recente documento (in presentazione), sotto il nome di "miglioratore di campionamento per uniformità" - che mostra in particolare che è possibile ottenere un numero di estrazioni indipendente da per migliorare da distance a distance . N 1 ε ε 1N1εε
Clemente C.,

Risposte:


3

L'articolo che segue risponde a una stretta variante di questa domanda: La costruzione efficiente di una sequenza casuale impari, Elias 1972 .

La domanda sembra essere questa: dato l'accesso a questa fonte indipendente distorta, emettere una sequenza di numeri casuali in (notare la differenza dalla domanda in cui è richiesto un solo simbolo di output). Mentre la lunghezza dell'output desiderato va all'infinito, l '"efficienza" dello schema nel documento (che sembra una generalizzazione naturale di von Neumann) va a , il che significa, credo, che un input con entropia viene convertito in un output di entropia si avvicina .1 h h[1,N]1hh

La domanda sembra comportarsi molto meglio quando formulata in questo modo, piuttosto che richiedere una singola cifra di output, perché, ad esempio, se disegniamo campioni e finiamo con un output con molte informazioni (ad esempio, tutti gli simboli di input sono distinti) , quindi possiamo usare tutte queste informazioni per produrre molti simboli di output, mentre con la domanda qui espressa, qualsiasi informazione oltre a quella usata per produrre un simbolo di output va sprecata.NNN

Credo che lo schema prenda ripetutamente disegni, guarda la sequenza e lo mappa alcuni output o la stringa vuota. Forse c'è un modo per migliorare lo schema della tua domanda osservando i prefissi e fermandoci se abbiamo informazioni "sufficienti" per generare un simbolo? Non lo so.N


Non ho cercato lavoro successivo o lavoro citando il documento, quindi non lo so, ma forse qualcuno ha migliorato lo schema, ne ha offerto un altro, ha risposto alla tua domanda, ecc.
Usul,

2

Il metodo che descrivi per generalizza. Usiamo che tutte le permutazioni di sono ugualmente probabili anche con un dado distorto (poiché i rotoli sono indipendenti). Quindi, possiamo continuare a rotolare fino a quando non vediamo una tale permutazione come gli ultimi rotoli e l'output dell'ultimo tiro.[ 1 .. N ] NN=2[1..N]N

Un'analisi generale è complicata; è chiaro, tuttavia, che il numero atteso di tiri cresce rapidamente in poiché la probabilità di vedere una permutazione in ogni dato passo è piccola (e non indipendente dai passi prima e dopo, quindi difficile). E è maggiore di per fisso , tuttavia, quindi la procedura termina quasi sicuramente (cioè con probabilità ).0 N 1N0N1

Per fisso possiamo costruire una catena di Markov sull'insieme di vettori Parikh che si sommano a , riassumendo i risultati degli ultimi tiri e determinando il numero atteso di passi fino a raggiungere per la prima volta . Ciò è sufficiente poiché tutte le permutazioni che condividono un vettore Parikh sono ugualmente probabili; le catene e i calcoli sono più semplici in questo modo.N N ( 1 , , 1 )NNN(1,,1)

Supponiamo che siamo in stato di con . Quindi, la probabilità di ottenere un elemento (ovvero il prossimo tiro è ) è sempre data dan i = 1 v iN iv=(v1,,vN)i=1nviNii

Pr[gain i]=pi .

D'altra parte, la propensione a far cadere un elemento dalla storia è data dai

Prv[drop i]=viN

quando (e altrimenti) proprio perché tutte le permutazioni con il vettore Parikh sono ugualmente probabili. Queste probabilità sono indipendenti (poiché i rulli sono indipendenti), quindi possiamo calcolare le probabilità di transizione come segue:0 vi=1nvi=N0v

Pr[v(v1,,vj+1,,vN)]={Pr[gain j],v<N0, else,Pr[v(v1,,vi1,vj+1,,vN)]={0,v<Nvi=0vj=NPrv[drop i]Pr[gain j], else andPr[vv]={0,v<Nvi0Prv[drop i]Pr[gain i], else;

tutte le altre probabilità di transizione sono zero. Il singolo stato di assorbimento è , il vettore Parikh di tutte le permutazioni di .[ 1 .. N ](1,,1)[1..N]

Per la risultante catena Markov¹ èN=2

Catena di Markov per N = 2
[ fonte ]

con il numero previsto di passi fino all'assorbimento

Epassaggi=2p0p12+Σio3(p0io-1p1+p1io-1p0)io=1-p0+p02p0-p02,

usando per semplificazione che . Se ora, come suggerito, per alcuni , allorap 0 = 1p1=1-p0ϵ[0,1p0=12±εε[0,12)

Epassaggi=3+4ε21-4ε2 .

Per e distribuzioni uniformi (il caso migliore) ho eseguito i calcoli con l'algebra del computer²; poiché lo spazio degli stati esplode rapidamente, valori più grandi sono difficili da valutare. I risultati (arrotondati verso l'alto) sonoN6

NormalPlot LogPlot
I grafici mostrano in funzione di ; a sinistra una trama regolare e a destra una trama logaritmica.NEpassaggiN

La crescita sembra essere esponenziale ma i valori sono troppo piccoli per fornire buone stime.

Per quanto riguarda la stabilità contro le perturbazioni della possiamo guardare la situazione per : N = 3pioN=3

Numero previsto di passaggi per N = 3 e scelte diverse
Il diagramma mostra in funzione di e ; naturalmente, .p 0 p 1 p 2 = 1 - p 0 - p 1Epassaggip0p1p2=1-p0-p1

Supponendo immagini simili per più grande (il kernel si arresta in modo anomalo calcolando i risultati simbolici anche per ), il numero previsto di passaggi sembra essere abbastanza stabile per tutti tranne le scelte più estreme (quasi tutte o nessuna massa in qualche ).N = 4 p iNN=4pio

Per fare un confronto, simulare una moneta basata su (ad es. Assegnando i risultati dei dadi a e nel modo più uniforme possibile), utilizzarlo per simulare una moneta corretta e infine eseguire campionamenti di rifiuto bit-saggio richiede al massimo0 1ε01

2logN3+4ε21-4ε2

i tiri di dado nell'aspettativa - probabilmente dovresti continuare con quello.


  1. Poiché la catena si sta assorbendo in i bordi accennati in grigio non vengono mai attraversati e non influenzano i calcoli. Li includo solo per completezza e scopi illustrativi.(11)
  2. Implementazione in Mathematica 10 ( Notebook , Bare Source ); scusa, è quello che so per questo tipo di problemi.

1

Solo un breve commento sul caso . Prendete un po 'elevato numero m , e il campione m getta dello stampo. Se hai head allora puoi estrarre bit. Supponendo che il dado è di parte, l'importo medio delle informazioni è Per ottenere questa stima, usa il fatto che la variabile binomiale è concentrata intorno a insieme alla stima . Man mano che si ingrandisce, otteniamo il tasso ottimale diN=2mmregistro ( mklog(mk)p

k=0mpk(1p)mk(mk)log(mk)mh(p).
k=pmlog(mk)mh(k/m)mh(p) per lancio della moneta (ciò è ottimale per ragioni teoriche dell'informazione, ad esempio la proprietà di equipartizione asintotica).

Puoi usare lo stesso metodo per generale e probabilmente otterrai lo stesso . Questi algoritmi sono ottimali solo nel limite e potrebbero esserci algoritmi che raggiungono il limite più velocemente di questi. In effetti, ho trascurato di calcolare la velocità della convergenza: potrebbe essere un esercizio interessante.NH(p)


1

Vorrei rischiare la seguente risposta.

Il caso specifico di 2 che hai menzionato sopra è il caso specifico di espansione (dove è prob di testa e prob di coda) che ti dà un termine Questo significa che puoi ottenere per un caso e per l'altro caso. Dovrai ripetere il campionamento fino a quando non vedi o (head-tail o tail-head) Usandoli come simulazione, darai pari probabilità.(p+q)2pq2pqpqqppqqp

Quando hai l'espansione che ti dà il termine . In questo caso, fai la stessa cosa, campionando finché non vedi tutti e 3 i risultati , , in un certo ordine in 3 prove consecutive.N=3(p+q+r)3pqrqpr

Lo stesso vale per il caso generale. Pensando attentamente, devo dire che il caso 2 è il caso migliore in cui si possono risolvere le cose nell'espansione. Quando ci sono 6 sequenze diverse per e ci sono molti altri termini nell'espansione. Mi sentirei piuttosto a disagio con altri termini in cui ci sono molti altri risultati.N=3pqr

.

Extra:

Questo mi fa pensare all'idea di campionare molto per stimare la probabilità di ogni risultato del dado. Nel caso più semplice di un modello di livello senza livello nascosto (un modello noto), possiamo elaborare un limite per concludere che la stima converge rapidamente. In effetti Chernoff bound ci mostra che l'errore diminuisce in modo esponenziale all'aumentare del campionamento (in modo lineare).

Ora che è nota una buona stima delle probabilità per ciascun lato del dado, ci sono molte opzioni. Un'opzione è che possiamo fare di nuovo l'espansione sopra, ma questa volta possiamo potenzialmente usare molti altri termini nell'espansione che hanno lo stesso valore di (o qualsiasi termine che si utilizza come sequenza basata). Questo sarà un po 'più efficiente perché verranno utilizzati più termini nell'espansione. Ma ammetto di non sapere se questo comporterà il minor numero di chiamate all'oracolo per avere una garanzia su qualunque condizione preliminare (come il parametro di confidenza), se vengono date.Πio=1io=npio

Tuttavia, questo approccio è una risposta a diversi aspetti della domanda. La domanda richiede una perfetta imparzialità garantita al costo di campionamenti potenzialmente di grandi dimensioni (anche se bassa prob). Questo approccio utilizza solo il campionamento finito con parametro legato alla confidenza. Quindi non penso che questo approccio sia appropriato a questa domanda anche se è molto interessante.

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.