Diberi koin dengan bias yang tidak diketahui, hasilkan variasi dari koin adil secara efisien

10

Diberi koin dengan bias tidak diketahui , bagaimana saya bisa menghasilkan variasi - seefisien mungkin - yang didistribusikan oleh Bernoulli dengan probabilitas 0,5? Artinya, menggunakan jumlah minimum flips per variate yang dihasilkan.hal

Neil G
sumber
3
Solusi sederhana adalah membalik koin dua kali: Jika memetakannya menjadi kepala, jika memetakannya menjadi ekor. Jika tidak, ulangi percobaan hingga salah satu dari keduanya tercapai. T HHTTH
kardinal
1
@ kardinal: Bagus! Mengapa tidak menambahkan jawaban?
Neil G
2
@ Glen_b: Oke, tetapi bisakah Anda melakukannya dengan jumlah minimum flips per variate yang dihasilkan?
Neil G
3
@MichaelLugo: Saya akan mengatakan itu pasti tergantung pada . :-) Jika kita tahu kita bisa melakukannya dalam satu flip. Jika kita tahu kita bisa melakukannya dalam dua dan, kita tahu bahwa ini optimal dalam kedua kasus. Jawabannya harus terkait dengan entropi . Jika kita tidak tahu apa - apa tentang selain dari , maka saya menduga hasil teori permainan sederhana akan menghasilkan sesuatu yang dekat dengan skema dalam komentar pertama saya sebagai "optimal" dengan cara yang tepat. p = 1 / 2 p = 1 / 4 H ( p ) p p ( 0 , 1 )halhal=1/2hal=1/4H(hal)halhal(0,1)
kardinal
4
Halo, Giorgio1927, dan selamat datang di situs ini! Harap tambahkan tag "belajar sendiri" ke pertanyaan ini, karena memungkinkan orang melihat bahwa mereka harus membimbing Anda untuk jawabannya daripada sekadar memberikannya.
jbowman

Jawaban:

6

Ini adalah masalah yang terkenal dengan beberapa solusi bagus yang telah dibahas di sini dan di stackoverflow (sepertinya saya tidak dapat memposting lebih dari satu tautan tetapi pencarian google cepat memberi Anda beberapa entri yang menarik). Lihatlah entri wikipedia

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

Carlos Fuentes
sumber
Maaf, saya memodifikasi pertanyaan agar tidak semudah itu untuk Google…
Neil G
Bagi orang yang berpikir untuk menjawab pertanyaan, perhatikan bahwa jawaban ini tidak optimal untuk pertanyaan saya yang diedit.
Neil G
3

Ini adalah masalah klasik, saya percaya awalnya dikaitkan dengan von Neumann. Salah satu solusinya adalah dengan terus melemparkan koin berpasangan sampai pasangan berbeda, dan kemudian tunduk pada hasil koin pertama dalam pasangan.

Biarkan secara eksplisit menjadi hasil dari lemparan i , dengan X i menjadi koin pertama, dan Y i menjadi koin kedua. Setiap koin memiliki probabilitas p kepala. Kemudian P ( X i = H | X iY i ) = P ( X i = T | X iY i ) karena simetri, yang menyiratkan P ((Xsaya,Ysaya)sayaXsayaYsayahalP(Xsaya=H|XsayaYsaya)=P(Xsaya=T|XsayaYsaya) . Untuk secara eksplisit melihat catatan simetri ini bahwa X iY i menyiratkan hasilnya adalah ( H , T ) atau ( T , H ) , keduanya sama-sama kemungkinan karena independensi.P(Xsaya=H|XsayaYsaya)=1/2XsayaYsaya(H,T)(T,H)

Secara empiris, waktu tunggu hingga pasangan yang tidak setara itu

1/P(XY)=11-hal2-(1-hal)2=12hal(1-hal),

yang meledak ketika mendekati 0 atau 1 (yang masuk akal).hal

Alex R.
sumber
2

Saya tidak yakin bagaimana untuk meringkas persyaratan efisien, tetapi kita dapat berhenti kapan jumlah gulungan dan jumlah keberhasilan t adalah seperti yang ( nnt bahkan karena kita dapat mempartisi urutan berbeda yang dapat kita capaindantmenjadi dua kelompok dengan probabilitas yang sama, masing-masing sesuai dengan label keluaran yang berbeda. Kita perlu berhati-hati bahwa kita belum berhenti untuk elemen-elemen ini, yaitu, bahwa tidak ada elemen memiliki awalan panjangndengantberhasil sehingga ( n(nt)ntntgenap. Saya tidak yakin bagaimana mengubahnya menjadi jumlah flips yang diharapkan.(nt)

Menggambarkan:

Kita bisa berhenti pada TH atau HT karena ini memiliki probabilitas yang sama. Bergerak turun ke segitiga Pascal, istilah genap berikutnya berada di baris keempat: 4, 6, 4. Berarti kita dapat berhenti setelah gulungan jika satu kepala muncul karena kita dapat membuat pencocokan bipartit: HHHT dengan HHTH, dan secara teknis HTHH dengan THHH meskipun kita sudah berhenti untuk itu. Demikian pula, menghasilkan HHTT yang cocok dengan TTHH (sisanya, kita sudah akan berhenti sebelum mencapai mereka).(42)

Untuk , semua urutan telah menghentikan awalan. Itu menjadi sedikit lebih menarik di ( 8(52) tempat kami mencocokkan FFFFTTFT dengan FFFFTTTF.(83)

Untuk setelah 8 gulungan, peluang untuk tidak berhenti adalah1hal=12 dengan jumlah gulungan yang diharapkan jika kita berhenti dari531128 . Untuk solusi di mana kami terus memutar pasangan hingga berbeda, peluang untuk tidak berhenti adalah15316 dengan jumlah gulungan yang diharapkan jika kita telah berhenti dari 4. Dengan rekursi, batas atas pada flip yang diharapkan untuk algoritma yang disajikan adalah128116. 1281275316=424127<4

Saya menulis program Python untuk mencetak titik pemberhentian:

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()

cetakan:

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
sumber
halhal0hal1hal2/((hal(1-hal))
@whuber: Saya tidak mengerti mengapa itu harus optimal. Solusi saya berhenti dalam semua kasus yang sama seperti miliknya. Namun, ia akan terus berguling setelah tthh misalnya, sedangkan itu mungkin untuk berhenti.
Neil G
Apa solusinya? Saya tidak melihat satu pun yang dijelaskan di sini. Saya pikir kita mungkin memiliki konsep berbeda dari solusi @ Cardinal. Saya mengerti artinya "berhenti setiap kali jumlah kepala sama dengan jumlah ekor dan petakan itu dengan nilai hasil pertama dalam urutan."
whuber
@whuber: Maksud Anda: "Solusi sederhana adalah membalik koin dua kali: Jika HT memetakannya menjadi kepala, jika TH memetakannya menjadi ekor. Jika tidak, ulangi percobaan sampai salah satu dari dua ini tercapai." Ini tidak akan berhenti untuk HHTT. Menunggu pasangan HT atau TH pada indeks genap.
Neil G
Solusi saya adalah menemukan pencocokan bipartit dari awalan yang dapat dilengkapi (tidak ada yang merupakan awalan yang lain) dan menghubungkan setiap bagian dari pencocokan dengan kepala atau ekor.
Neil G