คำตอบนี้พิจารณารูปแบบการคำนวณที่แตกต่าง: รุ่น RAM ราคาต่อหน่วย ในรูปแบบนี้คำพูดของเครื่องมีขนาดและการดำเนินงานที่พวกเขาใช้เวลาO ( 1 )เวลา นอกจากนี้เรายังถือว่าสำหรับความเรียบง่ายเหมาะกับว่าแต่ละองค์ประกอบอาร์เรย์ในคำหนึ่งเครื่อง (และเพื่อให้เป็นที่มากที่สุดn O ( 1 )ในขนาด)O ( บันทึกn )O ( 1 )nO ( 1 )
เราจะสร้างเส้นเวลาสุ่มอัลกอริทึมที่มีข้อผิดพลาดด้านเดียว (อัลกอริทึมอาจประกาศสองอาร์เรย์จะมีองค์ประกอบเดียวกันแม้ว่านี้ไม่ได้เป็นกรณี) สำหรับปัญหาที่ยากลำบากมากขึ้นในการระบุว่าสองอาร์เรย์1 , ... , nและb 1 , … , b nมีองค์ประกอบเดียวกัน (เราไม่จำเป็นต้องใด ๆ ของพวกเขาที่จะเรียง.) ขั้นตอนวิธีการของเราจะทำให้ข้อผิดพลาดกับความน่าจะเป็นที่มากที่สุด1 / na1, … , anข1, … , bn1 / n
ความคิดคือตัวตนต่อไปนี้ถือ IFF อาร์เรย์มีองค์ประกอบเหมือนกัน:
การคำนวณชื่อพหุนามเหล่านี้จะใช้เวลานานเกินไป แต่เราเลือกสุ่มนายกรัฐมนตรีpและสุ่มx 0และทดสอบว่า
Πi = 1n( x - aผม) = ∏i = 1n( x - b)ผม) .
พีx0∏ n i = 1 ( x - a i ) - ∏ n i = 1 ( x - b i ) a i , b ฉันn O ( 1 ) 2 n n O ( n ) = n O ( n ) O ( n ) Ω ( n ) n 2 p nΠi = 1n( x0-ผม) ≡ ∏i = 1n( x0- ขผม)( modP )
หากอาร์เรย์มีค่าเท่ากันการทดสอบจะผ่านไปเสมอดังนั้นเราควรให้ความสนใจกับกรณีที่อาร์เรย์ต่างกัน โดยเฉพาะสัมประสิทธิ์ไม่ใช่ศูนย์ เนื่องจากมีขนาดเป็นสัมประสิทธิ์นี้มีขนาดเป็นและมีค่ามากที่สุดไพรม์ ปัจจัยที่มีขนาด(n) ซึ่งหมายความว่าถ้าเราเลือกชุดอย่างน้อยช่วงที่มีขนาดอย่างน้อย (พูด) แล้วสำหรับนายกสุ่มของชุดนี้จะถือมีโอกาสอย่างน้อยที่
Πni = 1( x -aผม) -∏ni = 1( x -b)ผม)aผม, bผมnO ( 1 )2nnO ( n )= nO ( n )O ( n )Ω ( n )n2พี p 1 - 1 / n n ∏ i = 1 ( x - a i ) - n ∏ i = 1 ( x - b i ) ≢ 0n2พี1 - 1 / nx 0 p 1 - n / p ≥ 1 - 1 / n n nΠi = 1n( x - aผม) - ∏i = 1n( x - b)ผม) ≢ 0( modP )
การสุ่มโมดูโลจะเป็นพยานในเรื่องนี้ด้วยความน่าจะเป็น (เนื่องจากพหุนามของดีกรีที่ส่วนใหญ่มีรากมากที่สุด )
x0พี1−n/p≥1−1/nnn
โดยสรุปหากเราเลือกขนาดสุ่มโดยประมาณในกลุ่มของช่วงเวลาที่แตกต่างกันอย่างน้อยและสุ่ม moduloดังนั้นเมื่ออาร์เรย์ไม่มีองค์ประกอบเดียวกันการทดสอบของเราจะล้มเหลว กับความน่าจะเป็นn) การรันการทดสอบต้องใช้เวลาเนื่องจากพอดีกับจำนวนคำของเครื่องจักรn 2 n 2 x 0 p 1 - O ( 1 / n ) O ( n ) ppn2n2x0p1−O(1/n)O(n)p
ใช้การทดสอบเวลา primality พหุนามและเนื่องจากความหนาแน่นของจำนวนเฉพาะที่มีขนาดประมาณเป็นเราสามารถเลือกนายกสุ่มในเวลา(1)} การเลือกสุ่มโมดูโลสามารถดำเนินการในรูปแบบต่างๆและทำง่ายขึ้นเนื่องจากในกรณีที่เราไม่จำเป็นต้องมีการสุ่มชุดสมบูรณ์x_0 Ω ( 1 /บันทึกn ) p ( บันทึกn ) O ( 1 ) x 0 p x 0n2Ω(1/logn)p(logn)O(1)x0px0
โดยสรุปอัลกอริทึมของเราทำงานในเวลาเสมอเอาท์พุท YES ถ้าอาร์เรย์มีองค์ประกอบเดียวกันและเอาต์พุต NO ที่มีความน่าจะเป็นถ้าอาร์เรย์ไม่มีองค์ประกอบเดียวกัน เราสามารถปรับปรุงความน่าจะเป็นข้อผิดพลาดสำหรับการใด ๆ คงC1 - O ( 1 / n ) 1 - O ( 1 / n C ) CO(n)1−O(1/n)1−O(1/nC)C