Dada una moneda con sesgo desconocido, genera variaciones de una moneda justa de manera eficiente

10

Dada una moneda con sesgo desconocido , ¿cómo puedo generar variables, de la manera más eficiente posible, que estén distribuidas por Bernoulli con probabilidad 0.5? Es decir, usar el número mínimo de vueltas por variante generada.pag

Neil G
fuente
3
Una solución simple es voltear la moneda dos veces: si es mapearla en cara , si es mapearla en cruz. De lo contrario, repita el experimento hasta que se logre uno de estos dos. T HHTTH
cardenal
1
@cardinal: ¡Qué bien! ¿Por qué no agregar una respuesta?
Neil G
2
@Glen_b: De acuerdo, pero ¿puedes hacerlo con el número mínimo de vueltas por variante generada?
Neil G
3
@MichaelLugo: Diría que definitivamente depende de la . :-) Si sabemos que podemos hacerlo de una sola vez. Si sabemos que podemos hacerlo en dos y sabemos que esto es óptimo en ambos casos. La respuesta debe estar relacionada con la entropía . Si no sabemos nada sobre no sea , entonces sospecho que un simple resultado de la teoría del juego arrojará algo cercano al esquema en mi primer comentario como "óptimo" de una manera apropiada. p = 1 / 2 p = 1 / 4 H ( p ) p p ( 0 , 1 )pagpag=1/ /2pag=1/ /4 4H(pag)pagpag(0 0,1)
Cardenal
44
Hola, Giorgio1927, y bienvenido al sitio. Agregue la etiqueta "autoestudio" a esta pregunta, ya que permite que las personas vean que deben guiarlo hacia la respuesta en lugar de simplemente proporcionar una.
jbowman

Respuestas:

6

Este es un problema bien conocido con varias soluciones agradables que se han discutido aquí y en stackoverflow (parece que no puedo publicar más de un enlace, pero una búsqueda rápida en Google le ofrece algunas entradas interesantes). Echa un vistazo a la entrada de wikipedia

http://en.wikipedia.org/wiki/Fair_coin#Fair_results_from_a_limited_coin

Carlos Fuentes
fuente
Lo siento, modifiqué la pregunta para que no sea tan fácil de Google ...
Neil G
Para las personas que están pensando en responder la pregunta, tenga en cuenta que esta respuesta no es óptima para mi pregunta editada.
Neil G
3

Este es un problema clásico, creo atribuido originalmente a von Neumann. Una solución es seguir lanzando la moneda en pares hasta que los pares sean diferentes, y luego diferir el resultado de la primera moneda en el par.

Sea explícitamente el resultado del lanzamiento i , siendo X i la primera moneda e Y i la segunda moneda. Cada moneda tiene probabilidad p de caras. Entonces P ( X i = H | X iY i ) = P ( X i = T | X iY i ) debido a la simetría, lo que implica P ((Xyo,Yyo)yoXyoYyopagPAG(Xyo=HEl |XyoYyo)=PAG(Xyo=TEl |XyoYyo) . Para ver explícitamente esta simetría, tenga en cuenta que X iY i implica que los resultados son ( H , T ) o ( T , H ) , los cuales son igualmente probables debido a la independencia.PAG(Xyo=HEl |XyoYyo)=1/ /2XyoYyo(H,T)(T,H)

Empíricamente, el tiempo de espera hasta un par tan desigual es

1/ /PAG(XY)=11-pag2-(1-pag)2=12pag(1-pag),

que explota cuando se acerca a 0 o 1 (lo cual tiene sentido).pag

Alex R.
fuente
2

No estoy seguro de cómo resumir los términos de manera eficiente, pero podemos detenernos siempre que el número total de tiradas y el número total de éxitos t sean tales que ( nnortet se debe a que podemos dividir los diferentes ordenamientos que podríamos haber logradonyten dos grupos de igual probabilidad, cada uno correspondiente a una etiqueta de salida diferente. Debemos tener cuidado de no habernos detenido para estos elementos, es decir, que ningún elemento tenga un prefijo de longitudn'contéxitos tales que ( n(nortet)nortetnortetes par. No estoy seguro de cómo convertir esto en un número esperado de lanzamientos.(nortet)

Para ilustrar:

Podemos detenernos en TH o HT ya que estos tienen la misma probabilidad. Moviendo hacia abajo el triángulo de Pascal, los siguientes términos pares están en la cuarta fila: 4, 6, 4. Lo que significa que podemos parar después de los rollos si ha aparecido una cabeza ya que podemos crear una coincidencia bipartita: HHHT con HHTH, y técnicamente HTHH con THHH aunque ya nos habríamos detenido por eso. Del mismo modo, produce el HHTT correspondiente con TTHH (el resto, ya nos habríamos detenido antes de llegar a ellos).(4 42)

Para , todas las secuencias tienen prefijos detenidos. Se pone un poco más interesante en ( 8(5 52) donde hacemos coincidir FFFFTTFT con FFFFTTTF.(83)

Para después de 8 tiradas, la posibilidad de no haberse detenido es1pag=12 con un número esperado de rollos si nos hemos detenido de531128 . Para la solución donde seguimos rodando pares hasta que difieren, la posibilidad de no haberse detenido es153dieciséis con un número esperado de lanzamientos si nos hemos detenido de 4. Por recursividad, un límite superior en los lanzamientos esperados para el algoritmo presentado es1281dieciséis. 12812753dieciséis=424127<4 4

Escribí un programa de Python para imprimir los puntos de parada:

import scipy.misc
from collections import defaultdict


bins = defaultdict(list)


def go(depth, seq=[], k=0):
    n = len(seq)
    if scipy.misc.comb(n, k, True) % 2 == 0:
        bins[(n,k)].append("".join("T" if x else "F"
                                   for x in seq))
        return
    if n < depth:
        for i in range(2):
            seq.append(i)
            go(depth, seq, k+i)
            seq.pop()

go(8)

for key, value in sorted(bins.items()):
    for i, v in enumerate(value):
        print(v, "->", "F" if i < len(value) // 2 else "T")
    print()

huellas dactilares:

FT -> F
TF -> T

FFFT -> F
FFTF -> T

FFTT -> F
TTFF -> T

TTFT -> F
TTTF -> T

FFFFFT -> F
FFFFTF -> T

TTTTFT -> F
TTTTTF -> T

FFFFFFFT -> F
FFFFFFTF -> T

FFFFFFTT -> F
FFFFTTFF -> T

FFFFTTFT -> F
FFFFTTTF -> T

FFFFTTTT -> F
TTTTFFFF -> T

TTTTFFFT -> F
TTTTFFTF -> T

TTTTFFTT -> F
TTTTTTFF -> T

TTTTTTFT -> F
TTTTTTTF -> T
Neil G
fuente
pagpag0 0pag1pag2/ /((pag(1-pag))
@whuber: No veo por qué debería ser óptimo. Mi solución se detiene en todos los mismos casos que la suya. Sin embargo, continuará rodando después de ththh, por ejemplo, mientras que es posible detenerse.
Neil G
¿Cuál es tu solución? No veo uno descrito aquí. Creo que podríamos tener diferentes conceptos de la solución de @ Cardinal. Entiendo que significa "detenerse siempre que el número de caras sea igual al número de colas y asignar eso al valor del primer resultado en la secuencia".
whuber
@whuber: Te refieres a esto: "Una solución simple es lanzar la moneda dos veces: si es HT mapearla en cara, si es TH mapearla en cruz. De lo contrario, repita el experimento hasta que se logre uno de estos dos". Esto no se detendrá para HHTT. Espera un par HT o TH en un índice par.
Neil G
Mi solución es encontrar una coincidencia bipartita de prefijos equiprobables (ninguno de los cuales es un prefijo otro) y asociar cada mitad de la coincidencia con caras o colas.
Neil G