อัลกอริทึมของโกรเวอร์ถูกนำมาใช้ในสิ่งอื่น ๆ ที่จะค้นหารายการyในรายการเรียงลำดับของรายการ[x0,x1,...,xn−1]ของความยาวnnแม้ว่าจะมีคำถามมากมายเกี่ยวกับหัวข้อนี้ แต่ฉันก็ยังคิดถึงประเด็นนี้อยู่
การค้นหาในรายการแบบคลาสสิค
ปกติผมจะออกแบบฟังก์ชั่นการค้นหาด้วยวิธีนี้
search([x0,x1,...,xn−1],y)=i∈Nsuch that xi=y
ดังนั้นผมจึงให้รายการและรายการที่อยากเป็นปัจจัยการผลิตและผมได้รับตำแหน่งของรายการในรายการเป็นผลผลิต ฉันคิดว่าฉันได้เข้าใจว่าข้อมูลเกี่ยวกับการyถูกฝังอยู่ในขั้นตอนวิธีการผ่าน oracle ประตูOเพื่อฟังก์ชั่นของเราจะกลาย
searchy([x1,x2,...,xn])=i∈Nsuch that xi=y
ลองทำตัวอย่างที่เป็นประโยชน์ พิจารณาการค้นหาเอซโพดำ1♠ตามลำดับไพ่ 8 ใบจากสำรับมาตรฐาน 52 ใบ:
รายการความยาว8คือ[x0=J♣, x1=10♢, x2=4♡, x3=Q♣, x4=3♠, x5=1♠, x6=6♠, x7=6♣] ]
องค์ประกอบที่อยากเป็นx5 5 ฉันควรจะได้รับsearch♠(cards)=5 5 บัตรแต่ละใบสามารถเข้ารหัสด้วย⌈log252⌉=6บิตรายการมี8องค์ประกอบดังนั้นเราต้องการ6×8=48บิตในการเข้ารหัสรายการ ในกรณีนี้ oracle Oจะใช้ฟังก์ชัน:
f(x)={1,0,x=1♠otherwise
อย่างไรก็ตามอินพุตของอัลกอริทึมของ Grover ไม่ใช่สถานะของ48 qubits
(หมายเหตุ: ภาพของสำรับสับถูกนำมาจากที่นี่ )
Grover และ oracle ของมัน
(. เช่นหลายแหล่งที่มาที่นี่ - กราฟิกอธิบาย) บอกว่าใส่ของขั้นตอนวิธีการที่แตกต่างกัน: การป้อนข้อมูลที่เป็นรัฐที่นำมาจากพื้นที่ค้นหาS={0,1,2,...,N}={0,1,2,...,7}โดยที่Nคือจำนวนองค์ประกอบของรายการ แต่ละหมายเลขสอดคล้องกับตำแหน่งขององค์ประกอบในรายการ
การป้อนข้อมูลของsearch♠(⋅)คือตอนนี้⌈log28⌉=3 qubit เวกเตอร์|ψ⟩ซึ่งจะต้องเป็นซ้อนของรายการทั้งหมดในพื้นที่ค้นหาSS
พวกเรารู้
- |03qubits⟩=|000⟩สอดคล้องกับJ♣ ;
- |13qubits⟩=|001⟩สอดคล้องกับ10♢ ;
- |23qubits⟩=|010⟩สอดคล้องกับ4♡ ;
- |53qubits⟩=|101⟩สอดคล้องกับ1♠ซึ่งเป็นองค์ประกอบที่ต้องการ
- และอื่น ๆ ...
ในกรณีนี้เรามี
search♠(|ψ⟩)=|53qubits⟩
แต่ในกรณีนี้, Oracle ของเราจะต้องมีการใช้ฟังก์ชั่น
f(|ψ⟩)={1,0,|ψ⟩=|53qubits⟩otherwise
การสร้าง oracle ต้องการให้เรารู้ว่า♠อยู่ในตำแหน่งที่ 5 อะไรคือจุดที่จะใช้งานอัลกอริธึมถ้าเราค้นหาองค์ประกอบเพื่อสร้าง oracle?