ข้ามไปยังเนื้อหาหลัก

คำอธิบายอัลกอริทึม Grover

ในส่วนนี้เราจะอธิบายอัลกอริทึม Grover เริ่มจากการพูดถึง phase query gates และวิธีสร้างมัน ตามด้วยคำอธิบายของตัวอัลกอริทึม Grover เอง สุดท้ายจะพูดสั้น ๆ ถึงวิธีที่อัลกอริทึมนี้ถูกนำไปใช้กับการค้นหาโดยธรรมชาติ

Phase query gates

อัลกอริทึม Grover ใช้การดำเนินการที่รู้จักในชื่อ phase query gates ต่างจาก query gate ธรรมดา UfU_f ที่กำหนดสำหรับฟังก์ชัน ff ที่กำหนดในแบบปกติที่อธิบายไว้ก่อนหน้า phase query gate สำหรับฟังก์ชัน ff ถูกกำหนดเป็น

Zfx=(1)f(x)xZ_f \vert x\rangle = (-1)^{f(x)} \vert x\rangle

สำหรับทุก string xΣnx\in\Sigma^n

การดำเนินการ ZfZ_f สามารถ implement ได้โดยใช้ query gate UfU_f หนึ่งตัว ดังที่ diagram นี้แนะนำ:

วงจรควอนตัมที่ implement gate Z_f โดยใช้ query gate หนึ่งตัวร่วมกับปรากฏการณ์ phase kickback

การ implement นี้ใช้ประโยชน์จากปรากฏการณ์ phase kickback และต้องการ workspace qubit หนึ่งตัวที่ initialize ในสถานะ \vert -\rangle Qubit นี้ยังคงอยู่ในสถานะ \vert - \rangle หลังจากการ implement เสร็จสิ้น และสามารถนำกลับมาใช้ใหม่ (เพื่อ implement ZfZ_f gates ต่อ ๆ ไป เป็นต้น) หรือจะละทิ้งก็ได้

นอกจากการดำเนินการ ZfZ_f แล้ว เราจะใช้ phase query gate สำหรับฟังก์ชัน OR แบบ nn บิต ซึ่งกำหนดดังต่อไปนี้สำหรับแต่ละ string xΣnx\in\Sigma^n

OR(x)={0x=0n1x0n\mathrm{OR}(x) = \begin{cases} 0 & x = 0^n\\[0.5mm] 1 & x \neq 0^n \end{cases}

โดยชัดเจน phase query gate สำหรับฟังก์ชัน OR แบบ nn บิตทำงานดังนี้:

ZORx={xx=0nxx0n.Z_{\mathrm{OR}} \vert x\rangle = \begin{cases} \vert x\rangle & x = 0^n \\[0.5mm] - \vert x\rangle & x \neq 0^n. \end{cases}

เพื่อให้ชัดเจน นี่คือวิธีที่ ZORZ_{\mathrm{OR}} ทำงานกับ standard basis states; พฤติกรรมบน states ทั่วไปถูกกำหนดจากนิพจน์นี้โดยความเป็นเชิงเส้น

การดำเนินการ ZORZ_{\mathrm{OR}} สามารถ implement ได้ในรูป quantum circuit โดยเริ่มจาก Boolean circuit สำหรับฟังก์ชัน OR จากนั้นสร้างการดำเนินการ UORU_{\mathrm{OR}} (นั่นคือ standard query gate สำหรับฟังก์ชัน OR แบบ nn บิต) โดยใช้ขั้นตอนที่อธิบายในบทเรียน พื้นฐานอัลกอริทึมควอนตัม และสุดท้ายสร้างการดำเนินการ ZORZ_{\mathrm{OR}} โดยใช้ปรากฏการณ์ phase kickback ดังที่อธิบายข้างต้น ควรสังเกตว่าการดำเนินการ ZORZ_{\mathrm{OR}} ไม่มีการพึ่งพาฟังก์ชัน ff และสามารถ implement ได้ด้วย quantum circuit ที่ไม่มี query gates เลย

คำอธิบายอัลกอริทึม

เมื่อมีการดำเนินการสองอย่างคือ ZfZ_f และ ZORZ_{\mathrm{OR}} แล้ว เราสามารถอธิบายอัลกอริทึม Grover ได้

อัลกอริทึมอ้างถึงตัวเลข tt ซึ่งคือจำนวน iteration ที่มันทำ (และด้วยเหตุนี้คือจำนวน queries ต่อฟังก์ชัน ff ที่ต้องการ) ตัวเลข tt นี้ไม่ถูกระบุโดยอัลกอริทึม Grover ที่เราอธิบายอยู่ และจะพูดถึงภายหลังในบทเรียนว่าจะเลือกอย่างไร

อัลกอริทึม Grover
  1. Initialize register ของ nn qubit Q\mathsf{Q} เป็น all-zero state 0n\vert 0^n \rangle จากนั้นใช้การดำเนินการ Hadamard กับแต่ละ qubit ของ Q\mathsf{Q}
  2. ใช้การดำเนินการ unitary G=HnZORHnZfG = H^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n} Z_f กับ register Q\mathsf{Q} เป็นจำนวน tt ครั้ง
  3. วัด qubits ของ Q\mathsf{Q} ด้วย standard basis measurements และ output string ที่ได้

การดำเนินการ G=HnZORHnZfG = H^{\otimes n} Z_{\mathrm{OR}} H^{\otimes n} Z_f ที่วนซ้ำในขั้นตอน 2 จะเรียกว่า Grover operation ตลอดส่วนที่เหลือของบทเรียนนี้ นี่คือ quantum circuit ที่แทน Grover operation เมื่อ n=7 ⁣:n=7\!:

การแทน quantum circuit ของ Grover operation

ใน diagram นี้ การดำเนินการ ZfZ_f ถูกวาดให้ใหญ่กว่า ZORZ_{\mathrm{OR}} เป็นสัญลักษณ์บอกใบ้ว่ามันน่าจะเป็นการดำเนินการที่มีต้นทุนสูงกว่า โดยเฉพาะในแบบจำลอง query นั้น ZfZ_f ต้องการ query หนึ่งครั้งในขณะที่ ZORZ_{\mathrm{OR}} ไม่ต้องการ query เลย ถ้าเรามี Boolean circuit สำหรับฟังก์ชัน ff และแปลงเป็น quantum circuit สำหรับ ZfZ_f เราพอคาดได้ว่า quantum circuit ที่ได้จะใหญ่และซับซ้อนกว่า circuit สำหรับ ZORZ_{\mathrm{OR}}

นี่คือ diagram ของ quantum circuit สำหรับอัลกอริทึมทั้งหมดเมื่อ n=7n=7 และ t=3t=3 สำหรับค่า tt ที่ใหญ่กว่า เราสามารถแทรก Grover operation เพิ่มเติมได้ก่อนการวัด

Quantum circuit สำหรับอัลกอริทึม Grover เมื่อ t=3

อัลกอริทึม Grover สามารถนำไปใช้กับปัญหา Search ดังนี้:

  • เลือกตัวเลข tt ในขั้นตอน 2 (ซึ่งจะพูดถึงภายหลังในบทเรียน)
  • รันอัลกอริทึม Grover บนฟังก์ชัน ff โดยใช้ค่า tt ที่เลือก เพื่อได้ string xΣnx\in\Sigma^n
  • Query ฟังก์ชัน ff บน string xx เพื่อดูว่ามันเป็น solution ที่ถูกต้องหรือไม่:
    • ถ้า f(x)=1f(x) = 1 แปลว่าเราพบ solution แล้ว จึงหยุดและ output xx
    • มิฉะนั้น ถ้า f(x)=0f(x) = 0 เราสามารถรันกระบวนการอีกครั้งโดยอาจเลือก tt ต่างกัน หรือตัดสินใจยอมแพ้และ output "ไม่มี solution"

เมื่อวิเคราะห์วิธีทำงานของอัลกอริทึม Grover แล้ว เราจะเห็นว่าการเลือก t=O(N)t = O(\sqrt{N}) ทำให้ได้ solution ของปัญหาการค้นหา (ถ้ามี) ด้วยความน่าจะเป็นสูง

Source: IBM Quantum docs — updated 15 ม.ค. 2569
English version on doQumentation — updated 7 พ.ค. 2569
This translation based on the English version of approx. 26 มี.ค. 2569