Jawaban Vor memberikan definisi standar. Biarkan saya mencoba menjelaskan perbedaannya sedikit lebih intuitif.
Misalkan adalah algoritma probabilistik polinomial-waktu kesalahan terbatas untuk bahasa L yang menjawab dengan benar dengan probabilitas setidaknya p ≥ 1ML. Biarkanxmenjadi input danp≥12+δx ukuran input.n
Apa yang membedakan sewenang-wenang algoritma dari algoritma adalah gap positif antara probabilitas untuk menerima dan probabilitas untuk menerima . PP x ∈ L x ∉ L BPPx∈Lx∉LHal penting tentang adalah bahwa kesenjangannya setidaknya . Saya akan mencoba menjelaskan mengapa perbedaan ini penting dan memungkinkan kita untuk mempertimbangkan untuk dianggap sebagai algoritma yang efisien (bahkan diperkirakan sama dengan ) sedangkann - O ( 1 ) B P P P P P P P N PBPPn−O(1)BPPPPP dianggap tidak efisien (sebenarnya berisiPPNP ). Semua ini berasal dari celah ini.
Mari kita mulai dengan melihat lebih hati-hati.PP
Perhatikan bahwa jika suatu algoritma menggunakan paling banyak bit acak selama eksekusi dan probabilitas kesalahan lebih kecil dari maka probabilitas kesalahan sebenarnya , tidak mungkin ada pilihan bit acak yang akan buat jawaban algoritma salah.2 - r ( n ) 0r(n)2−r(n)0
Lebih jauh lagi, suatu algoritma dengan running time tidak dapat menggunakan lebih dari bit acak, jadi jika kesalahan algoritma probabilistik dengan case-run-time terburuk lebih baik daripadat ( n ) t ( n )t(n)t(n)t(n)
Dengan argumen yang sama kita dapat menunjukkan bahwa kasus di mana perbedaan antara probabilitas menerima dan probabilitas menerima terlalu kecil mirip dengan kasus di mana kita hampir tidak memiliki perbedaan. seperti dalam kasus .x ∉ L P Px∈Lx∉LPP
Sekarang mari kita beralih ke .BPP
Dalam algoritma probabilistik, kita dapat meningkatkan probabilitas untuk menjawab dengan benar. Katakanlah kita ingin meningkatkan probabilitas kebenaran menjadi untuk mengatakan probabilitas kesalahanϵ = 2 - n1−ϵϵ=2−n (kesalahan kecil secara eksponensial).
Idenya sederhana: lari M beberapa kali dan ambil jawaban mayoritas.
Berapa kali kita menjalankan untuk mendapatkan probabilitas kesalahan paling banyak ?ϵ Θ ( δ - 1 lg ϵ )MϵΘ(δ−1lgϵ) kali. Buktinya diberikan di bagian bawah jawaban ini.
Sekarang mari kita pertimbangkan bahwa algoritma yang kita diskusikan harus polinomial-waktu. Itu berarti bahwa kita tidak dapat menjalankan lebih dari berkali-kali secara polinomi. Dengan kata lain,Θ ( δ - 1 ln ϵ ) = n O ( 1 )MΘ(δ−1lnϵ)=nO(1) , atau lebih sederhana
δ−1lgϵ=nO(1)
Relasi ini mengkategorikan algoritma probabilitas kesalahan terbatas ke dalam kelas tergantung pada probabilitas kesalahan mereka. Tidak ada perbedaan antara probabilitas kesalahan menjadi atau konstanta positif (yaitu tidak berubah dengan ) atau2 - n n 1ϵ2−nn12−nO(1) . Kita dapat berpindah dari yang satu ini ke yang lainnya sambil tetap berada di dalam waktu polinomial.
Namun jika terlalu kecil, katakan , , atau bahkan maka kita tidak memiliki cara untuk meningkatkan probabilitas kebenaran dan mengurangi probabilitas kesalahan cukup untuk masuk ke0 2 - n n - ω ( 1 ) B P Pδ02−nn−ω(1)BPP .
Poin utama di sini adalah bahwa dalam kita dapat secara efisien mengurangi probabilitas kesalahan secara eksponensial sehingga kita hampir pasti tentang jawabannya dan itulah yang membuat kita menganggap kelas algoritma ini sebagai algoritma yang efisien. Probabilitas kesalahan dapat dikurangi sedemikian rupa sehingga kegagalan perangkat keras lebih mungkin atau bahkan meteor yang jatuh pada komputer lebih mungkin daripada membuat kesalahan dengan algoritma probabilistik.BPP
Itu tidak benar untuk , kita tidak tahu cara mengurangi kemungkinan kesalahan dan kita dibiarkan hampir seolah-olah kita menjawab dengan melempar koin untuk mendapatkan jawaban (kita tidak sepenuhnya, probabilitasnya adalah bukan setengah dan setengah, tetapi sangat dekat dengan situasi itu).PP
Bagian ini memberikan bukti bahwa untuk mendapatkan probabilitas kesalahan ketika kita mulai dengan algoritma dengan gap kita harus menjalankan( 1ϵMΘ(δ-1lgϵ)(12−δ,12+δ)M Θ(δ−1lgϵ) kali.
Biarkan menjadi algoritma yang menjalankan untuk kali dan kemudian menjawab sesuai dengan jawaban mayoritas. Untuk kesederhanaan, mari kita asumsikan bahwa M k kNkMkk itu aneh sehingga kita tidak memiliki ikatan.
Pertimbangkan kasus yang . Kasus ini mirip. Kemudian
Untuk menganalisis probabilitas kebenaran kita perlu memperkirakan probabilitas bahwa mayoritas yang berjalan menerima.x ∉ L P r { M ( x ) menerima } = p ≥ 1x∈Lx∉LNkk
Pr{M(x) accepts}=p≥12+δ
Nkk
Mari menjadi 1 jika run th menerima dan menjadi jika menolak. Perhatikan bahwa setiap proses independen dari yang lain karena mereka menggunakan bit acak independen. Dengan demikian adalah variabel acak Boolean independen di mana
i 0 X i E [ X i ] = P r { X i = 1 } = P r { M ( x ) menerima } = p ≥ 1Xii0Xi
E[Xi]=Pr{Xi=1}=Pr{M(x) accepts}=p≥12+δ
Biarkan . Kita perlu memperkirakan probabilitas yang diterima mayoritas, yaitu probabilitas bahwa . Y ≥ kY=Σki=1XiY≥k2
Pr{Nk(x) accepts}=Pr{Y≥k2}
Bagaimana cara melakukannya? Kita dapat menggunakan batas Chernoff yang memberi tahu kita konsentrasi probabilitas di dekat nilai yang diharapkan. Untuk setiap variabel acak dengan nilai yang diharapkan , kami milikiμZμ
Pr{|Z−μ|>αμ}<eα24μ
yang mengatakan bahwa probabilitas adalah jauh dari nilai yang diharapkan menurun secara eksponensial ketika meningkat. Kami akan menggunakannya untuk mengikat probabilitasα μ μ α Y < kZαμμαY<k2 .
Perhatikan bahwa dengan linearitas harapan kita memiliki
E[Y]=E[Σki=1Xi]=Σki=1E[Xi]=kp≥k2+kδ
Sekarang kita bisa menerapkan ikatan Chernoff. Kami ingin batas atas pada probabilitas . Batas Chernoff akan memberikan batas atas pada probabilitas yang cukup. Kita punya | Y-(kY<k2|Y−(k2+kδ)|>kδ
Pr{|Y−kp|>αkp}<e−α24kp
dan jika kita memilih sehingga kita selesai, jadi kita memiliha k p = k δ a = δααkp=kδα=δp≤2δ2δ+1 .
Karena itu kami punya
Pr{Y<k2}≤Pr{|Y−(k2+kδ)|>kδ}≤Pr{|Y−kp|>αkp}<e−α24kp
dan jika Anda melakukan perhitungan Anda akan melihat itu
α24kp≤δ24δ+2k=Θ(kδ)
kita punya
Pr{Y<k2}<e−Θ(kδ)
Kami ingin kesalahan paling banyak , jadi kami mauϵ
e−Θ(kδ)≤ϵ
atau dengan kata lain
Θ(δ−1lgϵ)≤k
Satu poin penting di sini adalah bahwa dalam proses ini kita akan menggunakan lebih banyak bit acak dan juga waktu berjalan akan meningkat, yaitu waktu berjalan terburuk dari akan kira-kira kali waktu berjalanNkkM .
Di sini titik tengah jeda adalah . Tetapi secara umum hal ini tidak perlu terjadi. Kita dapat mengadopsi metode serupa untuk nilai-nilai lain dengan mengambil pecahan lain menggantikan mayoritas untuk menerima.12