มีคำอธิบายของคนธรรมดาสำหรับสาเหตุที่อัลกอริทึมของ Grover ทำงานอย่างไร


27

นี้บล็อกโพสต์โดยสกอตต์ Aaronsonเป็นคำอธิบายที่มีประโยชน์และเรียบง่ายของขั้นตอนวิธีของชอร์

ฉันสงสัยว่าถ้ามีเช่นคำอธิบายขั้นตอนวิธีควอนตัมที่มีชื่อเสียงมากที่สุดที่สอง: อัลกอริทึมของโกรเวอร์เพื่อการค้นหาเรียงลำดับฐานข้อมูลของขนาดO(n)ในO(n)เวลา

โดยเฉพาะอย่างยิ่งฉันต้องการเห็นสัญชาตญาณที่เข้าใจได้สำหรับผลเริ่มต้นที่น่าประหลาดใจของเวลาทำงาน!

คำตอบ:


20

มีคำอธิบายที่ดีโดย Craig Gidney ที่นี่ (เขายังมีเนื้อหาที่ยอดเยี่ยมอื่น ๆ รวมถึงตัวจำลองวงจรในบล็อกของเขา )

โดยพื้นฐานแล้วอัลกอริทึมของ Grover จะนำไปใช้เมื่อคุณมีฟังก์ชั่นซึ่งจะคืนค่าTrueเป็นหนึ่งในอินพุตที่เป็นไปได้และFalseสำหรับส่วนอื่น ๆ ทั้งหมด Trueงานของอัลกอริทึมที่จะหาคนที่ผลตอบแทน

ในการทำเช่นนี้เราแสดงอินพุตเป็นสตริงบิทและเข้ารหัสสิ่งเหล่านี้โดยใช้|0และ|1สถานะของสตริงของ qubits ดังนั้นสตริงบิต0011จะถูกเข้ารหัสในสี่สถานะ qubit |0011ยกตัวอย่างเช่น

นอกจากนี้เรายังต้องสามารถใช้งานฟังก์ชั่นโดยใช้ประตูควอนตัม โดยเฉพาะเราจำเป็นต้องค้นหาลำดับของประตูที่จะใช้งานยูรวมเช่นนั้น

ยู|a=-|a,ยู|=|

ที่คือสตริงบิตที่ฟังก์ชั่นจะกลับมาและใด ๆ ซึ่งมันก็จะกลับมาaTrueFalse

หากเราเริ่มต้นด้วยการซ้อนทับของสตริงบิตที่เป็นไปได้ทั้งหมดซึ่งค่อนข้างง่ายที่จะทำโดยเพียงแค่ Hadamarding ทุกอย่างอินพุตทั้งหมดเริ่มต้นด้วยแอมพลิจูดเดียวกัน12n (โดยที่nคือความยาวของสตริงบิตที่เรากำลังค้นหาดังนั้นจำนวน qubits ที่เราใช้) แต่ถ้าเราใช้ oracleยูแอมพลิจูดของสถานะที่เรากำลังมองหาจะเปลี่ยนเป็น-12n n

นี่ไม่ใช่ความแตกต่างที่สังเกตได้ง่ายดังนั้นเราต้องขยายมัน การทำเช่นนี้เราจะใช้โกรเวอร์แพร่ Operator , DDผลกระทบของโอเปอเรเตอร์นี้คือการดูว่าแต่ละแอมพลิจูดแตกต่างจากแอมพลิจูดเฉลี่ยแล้วกลับเปลี่ยนความแตกต่างนี้ ดังนั้นถ้าแอมพลิจูดบางตัวมีจำนวนมากกว่าแอมพลิจูดเฉลี่ยมันจะกลายเป็นจำนวนเดียวกันนั้นน้อยกว่าค่าเฉลี่ยและในทางกลับกัน

โดยเฉพาะอย่างยิ่งถ้าคุณมีการซ้อนทับของสตริงบิตJตัวดำเนินการแพร่จะมีผลกระทบ

D:ΣJαJ|JΣJ(2μ-αJ)|J

โดยที่μ=ΣJαJคือแอมพลิจูดเฉลี่ย ดังนั้นใด ๆ กว้างμ+δได้รับกลายเป็นμ-δ δ เพื่อดูว่าทำไมมันมีผลกระทบนี้และวิธีการที่จะใช้มันให้ดูเอกสารประกอบการบรรยายเหล่านี้

แอมพลิจูดส่วนใหญ่จะเล็กกว่าค่าเฉลี่ยเล็กน้อยเล็กน้อย (เนื่องจากเอฟเฟกต์ของ single -12n ) ดังนั้นพวกเขาจะน้อยกว่าค่าเฉลี่ยเล็กน้อยผ่านการดำเนินการนี้ ไม่ใช่การเปลี่ยนแปลงครั้งใหญ่

สถานะที่เรากำลังมองหาจะได้รับผลกระทบมากขึ้น แอมพลิจูดของมันมีค่าน้อยกว่าค่าเฉลี่ยมากและจะกลายเป็นค่าเฉลี่ยที่มากขึ้นหลังจากใช้โอเปอเรเตอร์การกระจาย ผลสุดท้ายของผู้ดำเนินการแพร่กระจายคือสาเหตุที่ทำให้เกิดสัญญาณรบกวนในสถานะที่ skims แอมพลิจูดของ12nจากคำตอบที่ผิดทั้งหมดและเพิ่มไปยังคำตอบที่ถูกต้อง ด้วยการทำซ้ำขั้นตอนนี้เราสามารถไปยังจุดที่ทางออกของเราโดดเด่นจากฝูงชนมากจนเราสามารถระบุได้

แน่นอนทั้งหมดนี้แสดงให้เห็นว่างานทั้งหมดกระทำโดยผู้ดำเนินการแพร่กระจาย การค้นหาเป็นเพียงแอปพลิเคชันที่เราสามารถเชื่อมต่อได้

ดูคำตอบของคำถามอื่น ๆ สำหรับรายละเอียดเกี่ยวกับวิธีการที่ฟังก์ชั่นและผู้ประกอบการแพร่กระจายจะดำเนินการ


4

ฉันพบว่าวิธีการแบบกราฟิกค่อนข้างดีสำหรับการให้ข้อมูลเชิงลึกโดยไม่ต้องใช้เทคนิคเกินไป เราต้องการอินพุตบางส่วน:

  • เราสามารถสร้างรัฐด้วยไม่ใช่ศูนย์ทับซ้อนกับ 'เครื่องหมาย' รัฐ| x : x | ψ 0|ψ|xx|ψ0
  • เราสามารถใช้การดำเนินการยู1=-(ผม-2|ψψ|)
  • เราสามารถใช้การดำเนินการ.ยู2=ผม-2|xx|

การดำเนินการครั้งสุดท้ายนี้เป็นสิ่งที่สามารถทำเครื่องหมายรายการที่เราทำเครื่องหมายด้วยเฟส -1 นอกจากนี้เรายังสามารถกำหนดสถานะจะเป็น orthonormal ไป| x เช่นนั้น{ | x , | ψ }รูปแบบพื้นฐาน orthonormal สำหรับช่วงของ{ | x , | ψ } ทั้งการดำเนินการที่เราได้กำหนดไว้สงวนพื้นที่นี้: คุณเริ่มต้นด้วยบางสถานะในช่วงของ{ | x , | ψ }|ψ|x{|x,|ψ}{|x,|ψ}{|x,|ψ}และพวกเขากลับสถานะภายในช่วง ยิ่งไปกว่านั้นทั้งสองยังรวมกันดังนั้นความยาวของเวกเตอร์อินพุตจึงถูกสงวนไว้

เวกเตอร์ที่มีความยาวคงที่ภายในพื้นที่สองมิติสามารถมองเห็นเป็นเส้นรอบวงของวงกลม ลองตั้งค่าวงกลมที่มีสองทิศตั้งฉากกับและ| x|ψ|xป้อนคำอธิบายรูปภาพที่นี่

|ψ|x|ψ|ψ|ψ|ψθป้อนคำอธิบายรูปภาพที่นี่

ยู1|ψยู2|ψป้อนคำอธิบายรูปภาพที่นี่

ยู2ยู12θ|xป้อนคำอธิบายรูปภาพที่นี่

|ψθ|xx

|x|ψพี«1O(1/พี)พี=บาปθθθRบาป((2R+1)θ)1Rπ2θπ2พี


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