Masalah berikut muncul selama penelitian, dan ternyata sangat bersih:
Anda memiliki sumber koin. Setiap koin memiliki bias, yaitu probabilitas bahwa koin itu jatuh di atas "kepala". Untuk setiap koin secara mandiri ada probabilitas 2/3 bahwa ia memiliki bias setidaknya 0,9, dan dengan sisa probabilitas biasnya dapat berupa angka dalam [0,1]. Anda tidak tahu bias dari koin. Yang bisa Anda lakukan pada langkah apa pun adalah melempar koin dan mengamati hasilnya.
Untuk n tertentu, tugas Anda adalah menemukan koin dengan bias setidaknya 0,8 dengan probabilitas minimal . Bisakah Anda melakukannya dengan hanya menggunakan lemparan koin O (n)?
ds.algorithms
pr.probability
Dana Moshkovitz
sumber
sumber
Jawaban:
Berikut ini adalah algoritma undianO(nlogn) agak mudah .
Asumsikan1−exp(−n) adalah probabilitas kesalahan yang kami tuju. Misalkan N adalah kekuatan 2 yaitu antara katakanlah 100n dan 200n (hanya beberapa waktu konstan yang cukup besar n ). Kami mempertahankan satu set calon koin, C . Awalnya, kami menempatkan N koin di C .
Sekarang untuki=1,…,logN , lakukan yang berikut: C untuk Di=2i1010 kali (hanya beberapa konstanta yang cukup besar). N/2i dengan kepala terbanyak.
Aduk setiap koin dalam
Simpan koin
Buktinya didasarkan pada beberapa batasan Chernoff. Gagasan utama adalah bahwa kami setengah dari jumlah kandidat setiap kali dan dengan demikian mampu membayar dua kali lebih banyak dari setiap koin.
sumber