นอกเหนือจากคนที่คุณกล่าวถึงโปรแกรมอื่นของ (แก้ไข) อัลกอริทึมของโกรเวอร์ซึ่งฉันรู้คือการแก้ปัญหาการปะทะกันในทฤษฎีความซับซ้อนของควอนตัมคอมพิวเตอร์และคณิตศาสตร์คำนวณ มันเรียกว่าอัลกอริทึมบาท
บทนำ :
ปัญหาการชนกันส่วนใหญ่มักอ้างถึงรุ่น2 ต่อ 1ซึ่งอธิบายโดย Scott Aaronson ในวิทยานิพนธ์ปริญญาเอกของเขา ระบุว่าคือแม้และฟังก์ชั่นF : { 1 , . . , n } → { 1 , . . , n }เรารู้ล่วงหน้าว่าfเป็น 1 ต่อ 1 หรือ 2 ต่อ 1 เราได้รับอนุญาตให้ทำการสอบถามเกี่ยวกับค่าของf ( i )สำหรับi ∈ { 1 , 2 ,nf:{1,...,n}→{1,...,n}ff(i) } จากนั้นปัญหาจะถามว่ามีคำถามจำนวนเท่าใดที่เราต้องพิจารณาเพื่อให้แน่ใจว่า fเป็น 1 ต่อ 1 หรือ 2 ต่อ 1i∈{1,2,...,n}f
การแก้ไขรุ่น 2 ต่อ 1 ต้องกำหนดอย่างแน่นอนต้องใช้แบบสอบถามและโดยทั่วไปแล้วฟังก์ชั่น r-to-1 ที่แตกต่างจากฟังก์ชั่น 1 ต่อ 1 ต้องใช้n /n/2+1คำสั่งn/r+1
วิธีการแก้ปัญหาแบบคลาสสิกที่กำหนด :
นี่เป็นแอปพลิเคชันที่ตรงไปตรงมาของหลักการของช่องพิราบ: หากฟังก์ชั่นคือ r-to-1, หลังจากนั้นหลังจากการค้นหาเรารับประกันว่าจะพบการชนกัน หากฟังก์ชั่นเป็น 1 ต่อ 1 แสดงว่าไม่มีการชนกัน หากเราโชคไม่ดีการค้นหาด้วยn / rสามารถส่งคืนคำตอบที่ชัดเจนได้ ดังนั้นจึงจำเป็นต้องค้นหาn / r + 1n/r+1n/rn/r+1
โซลูชันคลาสสิกแบบสุ่ม :
หากเราอนุญาตให้สุ่มปัญหาได้ง่ายขึ้น โดยวันเกิดที่ผิดธรรมดาถ้าเราเลือก (แตกต่าง) แบบสอบถามแบบสุ่มจากนั้นมีความน่าจะเป็นสูงที่เราจะพบการชนกันในฟังก์ชัน 2 ต่อ 1 คงที่หลังจาก
ข้อความค้นหาΘ(n−−√)
ควอนตัมโซลูชั่น BHT :
โดยสังหรณ์ใจอัลกอริทึมรวมการเร่งความเร็วรากที่สองจาก
ความขัดแย้งวันเกิด
โดยใช้การสุ่ม (คลาสสิก) กับการเร่งความเร็วรากที่สองจากอัลกอริทึมของโกรเวอร์ (ควอนตัม)
ครั้งแรกปัจจัยการผลิตที่จะฉได้รับการคัดเลือกโดยการสุ่มและฉสอบถามที่ทั้งหมดของพวกเขา หากมีการขัดแย้งกันระหว่างอินพุตเหล่านี้เราจะส่งคืนคู่การชนของอินพุต มิฉะนั้นปัจจัยเหล่านี้ทั้งหมด map กับค่าที่แตกต่างกันโดยฉ จากนั้นอัลกอริทึมของ Grover จะใช้ในการค้นหาอินพุตใหม่ไปยังfที่ collides เนื่องจากมีเพียง
n 2 / 3ปัจจัยการผลิตดังกล่าวเพื่อฉอัลกอริทึมของโกรเวอร์สามารถหาหนึ่ง (ถ้ามี) โดยการทำเพียง
O ( √n1/3ffffn2/3fO(n2/3−−−−√)=O(n1/3)f