การปฏิเสธการสุ่มตัวอย่างเป็นวิธีเดียวที่จะได้รับการแจกแจงตัวเลขที่เหมือนกันอย่างแท้จริงหรือไม่?


21

สมมติว่าเรามีตัวสร้างแบบสุ่มที่ส่งออกตัวเลขในช่วง[0..R1]ด้วยการแจกแจงแบบเดียวกันและเราจำเป็นต้องสร้างตัวเลขสุ่มในช่วง[0..N1] ด้วยการแจกแจงแบบเดียวกัน

สมมติว่าN<RและNไม่เท่ากันแบ่งR ; เพื่อให้ได้การกระจายที่เหมือนกันอย่างแท้จริงเราสามารถใช้ วิธีการสุ่มตัวอย่างการปฏิเสธ :

  • ถ้าkเป็นจำนวนเต็มที่มากที่สุดเช่นนั้นkN<R
  • เลือกตัวเลขสุ่มrใน[0..R1]
  • ถ้าr<kNจากนั้นเอาท์พุทมิฉะนั้นก็ลองกับตัวเลขสุ่มอื่น ๆ r ', r ", ... จนกว่าจะเจอเงื่อนไขrmodN
การปฏิเสธการสุ่มตัวอย่างเป็นวิธีเดียวที่จะได้การกระจายแบบไม่ต่อเนื่องสม่ำเสมออย่างแท้จริงหรือไม่?

หากคำตอบคือใช่ทำไม

หมายเหตุ: หากความคิดเหมือนกัน: สร้างตัวเลขสุ่มในตัวอย่างเช่นโดยที่เป็นตัวเลขสุ่มในช่วงR ' [ 0 .. R เมตร - 1 ] , R > = N R ' = R ( . . . R ( R R 1 + R 2 ) . . . ) + R R ฉัน [ 0 .. R - 1 ]N>Rr[0..Rm1],Rm>=Nr=R(...R(Rr1+r2)...)+rmri[0..R1]


คำตอบ:


13

ใช่และไม่ใช่ขึ้นอยู่กับสิ่งที่คุณหมายถึงโดย "วิธีเดียว" ใช่ในการที่ไม่มีวิธีที่รับประกันว่าจะยุติสิ่งที่ดีที่สุดที่คุณสามารถทำได้ (สำหรับค่าทั่วไปของและ ) เป็นอัลกอริธึมที่สิ้นสุดลงด้วยความน่าจะเป็น 1 ไม่เช่นนั้นคุณสามารถทำให้ "ขยะ" มีขนาดเล็ก ตามที่คุณต้องการ.RNR

ทำไมการเลิกจ้างที่รับประกันจึงเป็นไปไม่ได้โดยทั่วไป

สมมติว่าคุณมีเครื่องมือการคำนวณที่กำหนด (เครื่องทัวริงหรือสิ่งที่ลอยเรือของคุณ) บวก oracle ที่สร้างองค์ประกอบสุ่มของที่ชุดองค์ประกอบ[0..R-1]เป้าหมายของคุณคือการสร้างองค์ประกอบของที่ชุดองค์ประกอบN-1] ผลลัพธ์ของเครื่องยนต์ของคุณขึ้นอยู่กับลำดับของค่าที่ส่งคืนโดย oracle เท่านั้น มันเป็นฟังก์ชั่การที่ลำดับที่อาจเกิดขึ้นไม่มีที่สิ้นสุดldots)[ 0 .. R - 1 ] N [ 0 , N - 1 ] f ( r 0 , r 1 , r 2 , )R[0..R1]N[0,N1]f(r0,r1,r2,)

สมมติว่าเครื่องยนต์ของคุณเรียก oracle มากที่สุดครั้ง อาจมีร่องรอยที่ oracle เรียกว่าน้อยกว่าครั้ง ถ้าเป็นเช่นนั้นการเรียก oracle พิเศษครั้งเพื่อให้มันถูกเรียกเสมอว่าครั้งไม่เปลี่ยนผลลัพธ์ ดังนั้นโดยไม่สูญเสียความคิดเราจึงสันนิษฐานว่าพยากรณ์ถูกเรียกว่าคูณ จากนั้นน่าจะเป็นของผลที่คือจำนวนของลำดับเช่นว่าx ตั้งแต่พยากรณ์เป็นเครื่องกำเนิดไฟฟ้าแบบสุ่มเครื่องแบบลำดับแต่ละ equiprobable และมีความน่าจะเป็นเมตร ดังนั้นความน่าจะเป็นของผลลัพธ์แต่ละรายการจึงอยู่ในรูปแบบm m m x ( r 0 , , r m - 1 ) f ( r 0 , , r m - 1 ) = x 1 / R m A / R m A 0 R mmmmmx(r0,,rm1)f(r0,,rm1)=x1/RmA/Rmที่เป็นจำนวนเต็มระหว่างและเมตรA0Rm

ถ้าหารสำหรับบางคุณสามารถสร้างการกระจายแบบสม่ำเสมอเหนือองค์ประกอบโดยการเรียกตัวสร้างแบบสุ่มครั้ง (นี่คือการออกกำลังกายไปยังผู้อ่าน) มิฉะนั้นเป็นไปไม่ได้: มีวิธีการที่จะได้รับผลที่มีความน่าจะไม่มี N โปรดทราบว่าเงื่อนไขนั้นเทียบเท่ากับการบอกว่าปัจจัยสำคัญทั้งหมดของก็เป็นปัจจัยของ (ซึ่งอนุญาตได้มากกว่าสิ่งที่คุณเขียนไว้ในคำถามของคุณตัวอย่างเช่นคุณสามารถเลือกองค์ประกอบสุ่มระหว่าง 4 กับ 6-fair fair ตายแม้ว่า 4 จะไม่แบ่ง 6)R m m N m 1 / N N RNRmmNm1/NNR

ลดปริมาณขยะ

ในกลยุทธ์ของคุณเมื่อคุณไม่จำเป็นต้องวาดใหม่ทันที สังหรณ์ใจมีบิตของเอนโทรปีเหลืออยู่ในซึ่งคุณสามารถผสมได้[ krkN[kN..R1]

สมมติว่าสำหรับช่วงเวลาที่คุณจะได้ในความเป็นจริงให้สร้างตัวเลขสุ่มด้านล่างตลอดไปและคุณสร้างของพวกเขาในเวลาโดยการดึง ถ้าคุณทำตัวอย่างการปฏิเสธตรงไปตรงมาในการสร้างการจัดกลุ่มนี้เสียมากกว่าดึงเป็นคือเหลือหารด้วยจำนวนการจับ นี้อาจจะเป็นเพียงN) เมื่อและเป็น coprime คุณสามารถทำให้เสียขนาดเล็กโดยพลการโดยการเลือกค่ามากพอของdสำหรับค่าทั่วไปของและU d d R d - kNuddRdkNudRdmodNuR N d R n gcd ( R , N ) N / gcd ( R , N )gcd(R,N)RNdRNการคำนวณมีความซับซ้อนมากขึ้นเพราะคุณต้องคำนึงถึงการสร้างและแยกต่างหาก แต่คุณสามารถทำให้ขยะมีขนาดเล็กและมีกลุ่มใหญ่เพียงพอgcd(R,N)N/gcd(R,N)

ในทางปฏิบัติแม้จะมีตัวเลขสุ่มที่ไม่มีประสิทธิภาพ (เช่นในการเข้ารหัส) มันไม่ค่อยคุ้มค่าที่จะทำอะไรนอกจากการสุ่มตัวอย่างการปฏิเสธอย่างง่ายเว้นแต่จะมีขนาดเล็ก ตัวอย่างเช่นในการเข้ารหัสที่โดยทั่วไปแล้วคือพลังของ 2 และโดยทั่วไปจะเป็นร้อยหรือพันบิตบิตการสร้างหมายเลขสุ่มสม่ำเสมอจะดำเนินการโดยการสุ่มตัวอย่างการปฏิเสธแบบตรงในช่วงที่ต้องการR NNRN


ข้อพิสูจน์แรกมีข้อบกพร่อง: การมีอยู่ของนั้นแรงเกินไป เราสามารถมีเครื่องจักรที่ใช้องค์ประกอบหลายอย่างตามอำเภอใจ แต่จะยุติเสมอ โดยทั่วไปเราต้องการยกเว้นหนึ่งลำดับ (ลำดับที่ไม่มีวันสิ้นสุด) แต่คุณจะยกเว้นทั้งหมด แต่มีจำนวน จำกัด m
กราฟิลส์

@ ราฟาเอลฉันไม่แน่ใจว่าฉันเข้าใจสิ่งที่คุณหมายถึง คุณยกตัวอย่างเช่นเครื่องได้ไหม
Gilles 'หยุดความชั่วร้าย'

อากังวลของฉันกว้างเกินไป ที่นี่ - เนื่องจากขาดข้อมูล - คุณพูดถูก หากคำนวณทั้งหมดยุติมีหลายขีด (ไม่มีการป้อนข้อมูลจำนวน จำกัด ของการตัดสินใจต่อขั้นตอนเพราะฉะนั้น จำกัด ต้นไม้) จึงมีความยาวที่สุดที่ช่วยให้คุณmm
กราฟิลส์

@ ราฟาเอลความคิดเห็นของคุณทำให้ฉันคิดถึงงานนำเสนอที่ดีกว่าสำหรับผู้ชม TCS: ทำให้ RNG เป็นอินพุตของ TM แทน oracle เราคิดว่า TM สิ้นสุดลง (มิฉะนั้นอัลกอริทึมไม่ถูกต้อง) หากมีเช่นนั้นไม่ว่าอินพุตจะเป็นอย่างไร TM จะพิจารณาเซลล์อินพุตส่วนใหญ่ดังนั้น <blah blah หารได้ด้วย blah ไม่สามารถมีผลลัพธ์ equiprobable ได้> มิฉะนั้นสำหรับทุกน่าจะเป็นของที่ต้องใช้เวลาอย่างน้อยดึงอย่างน้อยm} m R m N m m R - mmmRmNmmRm
Gilles 'หยุดความชั่วร้าย'

1
@ ราฟาเอล: บทแทรกของKönigแสดงให้เห็นว่าหากเครื่องหยุดเสมอแล้วในความเป็นจริงมีขอบเขตบนของเวลาทำงาน สิ่งนี้ทำงานได้ตราบใดที่ชุดเอาต์พุตของ RNG นั้น จำกัด (และมิฉะนั้นจะเป็นความผิดพลาดเล็กน้อย)
Yuval Filmus

6

ทฤษฎีการเข้ารหัสซอร์สของแชนนอนแสดงให้เห็นว่าในความหมายที่แน่นอนคุณต้องตัวอย่าง (โดยเฉลี่ย) ของประเภทเพื่อสร้างจำนวนสุ่มของประเภทN-1] แม่นยำยิ่งขึ้นแชนนอนให้อัลกอริทึม (ไม่มีประสิทธิภาพ) ที่ให้ตัวอย่างของประเภทแรกผลลัพธ์ตัวอย่างของประเภทที่สองมีความน่าจะเป็นสูง นอกจากนี้เขายังแสดงให้เห็นว่าการส่งออกตัวอย่างมีความน่าจะเป็นสูงนั้นเป็นไปไม่ได้[ 0 , , R - 1 ] [ 0 , , N - 1 ] m m ( log N / log R - ϵ ) m ( log N / log R + ϵ )logN/logR[0,,R1][0,,N1]mm(logN/logRϵ)m(logN/logR+ϵ)

ทฤษฎีบทของแชนนอนยังทำงานในกรณีทั่วไปมากขึ้นของการแจกแจงอินพุตแบบเบ้ (และอาจเป็นการกระจายสัญญาณแบบเบ้) ในกรณีนั้นคุณต้องแทนที่ลอการิทึมด้วยเอนโทรปี ในขณะที่อัลกอริธึมที่กำหนดโดยทฤษฎีบทนั้นถูกกำหนดแบบสุ่มในบางกรณีมันเป็นไปได้ที่จะแยกแยะมันออกมา


5

ที่จริงแล้วไม่มีการสุ่มตัวอย่างการปฏิเสธอยู่ไกลจากวิธีเดียวในการดำเนินการ น่าเสียดายที่เมื่อพิจารณาว่าคอมพิวเตอร์เก็บข้อมูลทั้งหมดเป็นบิตและสามารถจัดการบิตสุ่มของข้อมูลเท่านั้นอัลกอริธึมใด ๆ ในการวาดตัวแปรสุ่มแบบสม่ำเสมอของช่วงจะไม่มีที่สิ้นสุดหากการพัฒนาฐานสองของไม่มีที่สิ้นสุดNNN

ทฤษฎีบทนี้เป็นผลลัพธ์แบบคลาสสิกโดย Knuth and Yao (1976) ผู้พัฒนากรอบการทำงานของต้นไม้ DDG (ต้นไม้สร้างการกระจายแบบไม่ต่อเนื่อง)

วิธีการเปิดเผยโดย Gilles เป็นวิธีการทั่วไปที่ทำเพื่อลดปริมาณขยะที่เกิดขึ้นจากการถูกปฏิเสธ แต่แน่นอนว่าถ้าใครสามารถสร้างต้นไม้ของ Knuth และ Yao ได้อย่างมีประสิทธิภาพมากขึ้นโดยเฉลี่ย 96% ของบิตสุ่ม จะถูกบันทึกไว้

ผมได้ให้ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ในต่อไปนี้โพสต์ CStheory

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.