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

การค้นหาแบบไม่มีโครงสร้าง

สรุปภาพรวม

เราจะเริ่มด้วยคำอธิบายของปัญหาที่อัลกอริทึม Grover แก้ ตามธรรมเนียม ให้ Σ={0,1}\Sigma = \{0,1\} แทน binary alphabet ตลอดการพูดถึงนี้

สมมติว่า

f:ΣnΣf:\Sigma^n \rightarrow \Sigma

คือฟังก์ชันจาก binary strings ความยาว nn ไปยัง bits เราจะสมมติว่าสามารถคำนวณฟังก์ชันนี้ได้อย่างมีประสิทธิภาพ แต่นอกจากนั้นมันเป็นฟังก์ชันที่กำหนดเองได้และเราไม่สามารถพึ่งพาให้มันมีโครงสร้างพิเศษหรือ implementation เฉพาะที่ตรงกับความต้องการของเรา

สิ่งที่อัลกอริทึม Grover ทำคือค้นหา string xΣnx\in\Sigma^n ที่ f(x)=1f(x) = 1 เราจะเรียก strings เหล่านี้ว่า solutions ของปัญหาการค้นหา ถ้ามี solutions หลายตัว ตัวใดตัวหนึ่งก็ถือว่าเป็น output ที่ถูกต้อง และถ้าไม่มี solutions เลย คำตอบที่ถูกต้องต้องรายงานว่าไม่มี solutions

งานนี้เรียกว่าปัญหา unstructured search เพราะเราไม่สามารถพึ่งพาให้ ff มีโครงสร้างใดเป็นพิเศษที่ทำให้ง่ายขึ้น เราไม่ได้ค้นหาในลิสต์ที่เรียงลำดับ หรือใน data structure ที่ออกแบบมาโดยเฉพาะเพื่ออำนวยความสะดวกในการค้นหา เราแค่กำลังมองหาเข็มในกองหญ้าโดยพื้นฐาน

โดยสัญชาตญาณ เราอาจจินตนาการว่ามี Boolean circuit ที่ซับซ้อนมากที่คำนวณ ff และเราสามารถรัน circuit นี้บน input string ที่เลือกได้ง่ายๆ แต่เพราะ circuit ซับซ้อนเกินไป เราไม่มีทางทำความเข้าใจ circuit ด้วยการตรวจดูมัน (นอกจากความสามารถในการประเมินมันบน input strings ที่เลือก)

วิธีหนึ่งในการทำงานค้นหานี้แบบคลาสสิกคือวน iterate ผ่าน strings ทั้งหมด xΣnx\in\Sigma^n โดยประเมิน ff กับแต่ละตัวเพื่อตรวจสอบว่ามันเป็น solution หรือไม่ ต่อจากนี้ให้เขียน

N=2nN = 2^n

เพื่อความสะดวก มี NN strings ใน Σn\Sigma^n ดังนั้นการ iterate ผ่านทั้งหมดต้องการการประเมิน ff จำนวน NN ครั้ง ภายใต้สมมติฐานที่ว่าเราจำกัดอยู่กับการประเมิน ff บน inputs ที่เลือก นี่คือสิ่งที่ดีที่สุดที่ทำได้ด้วย deterministic algorithm ถ้าต้องการรับประกันความสำเร็จ ด้วย probabilistic algorithm เราอาจหวังจะประหยัดเวลาโดยสุ่มเลือก input strings ให้กับ ff แต่เราก็ยังต้องการการประเมิน O(N)O(N) ครั้งถ้าต้องการให้วิธีนี้สำเร็จด้วยความน่าจะเป็นสูง

อัลกอริทึม Grover แก้ปัญหาการค้นหานี้ด้วยความน่าจะเป็นสูงโดยใช้เพียง O(N)O(\sqrt{N}) การประเมิน ff เพื่อให้ชัดเจน การประเมินฟังก์ชันเหล่านี้ต้องเกิดขึ้น ใน superposition คล้ายกับ query algorithms ที่พูดถึงใน บทเรียน Quantum query algorithms รวมถึงอัลกอริทึม Deutsch, อัลกอริทึม Deutsch-Jozsa, และอัลกอริทึม Simon ต่างจากอัลกอริทึมเหล่านั้น อัลกอริทึม Grover ใช้แนวทาง iterative: มันประเมิน ff บน superpositions ของ input strings และแทรกการดำเนินการอื่น ๆ ระหว่างการประเมินเหล่านั้น ซึ่งมีผลสร้าง interference patterns ที่นำไปสู่ solution ด้วยความน่าจะเป็นสูง (ถ้ามี) หลังจาก O(N)O(\sqrt{N}) iterations

การระบุปัญหาอย่างเป็นทางการ

เราจะทำให้ปัญหาที่อัลกอริทึม Grover แก้เป็นทางการโดยใช้ query model ของการคำนวณ นั่นคือ เราจะสมมติว่าเราสามารถเข้าถึงฟังก์ชัน f:ΣnΣf:\Sigma^n\rightarrow\Sigma ผ่าน query gate ที่กำหนดในแบบปกติ:

Uf(ax)=af(x)xU_f \bigl( \vert a\rangle \vert x\rangle \bigr) = \vert a \oplus f(x) \rangle \vert x \rangle

สำหรับทุก xΣnx\in\Sigma^n และ aΣa\in\Sigma นี่คือการกระทำของ UfU_f บน standard basis states และการกระทำโดยทั่วไปถูกกำหนดโดยความเป็นเชิงเส้น

ดังที่พูดถึงในบทเรียน พื้นฐานอัลกอริทึมควอนตัม ถ้าเรามี Boolean circuit สำหรับการคำนวณ ff เราสามารถแปลง Boolean circuit นั้นให้เป็น quantum circuit ที่ implement UfU_f ได้ (โดยใช้ workspace qubits บางส่วนที่เริ่มและสิ้นสุดการคำนวณในสถานะ 0\vert 0\rangle) ดังนั้น แม้เราจะใช้ query model เพื่อทำให้ปัญหาที่อัลกอริทึม Grover แก้เป็นทางการ มันไม่ได้จำกัดอยู่กับ model นี้; เราสามารถรันอัลกอริทึม Grover บนฟังก์ชัน ff ใด ๆ ที่เรามี Boolean circuit

นี่คือการระบุปัญหาอย่างแม่นยำ ซึ่งตั้งชื่อว่า Search เพราะเรากำลังค้นหา solution หมายถึง string xx ที่ทำให้ ff ประเมินได้เป็น 11

Search

Input: ฟังก์ชัน f:ΣnΣf:\Sigma^n\rightarrow\Sigma
Output: string xΣnx\in\Sigma^n ที่ตรงตามเงื่อนไข f(x)=1f(x) = 1 หรือ "no solution" ถ้าไม่มี string xx ดังกล่าว

สังเกตว่านี่ ไม่ใช่ promise problem — ฟังก์ชัน ff เป็นฟังก์ชันที่กำหนดเองได้ อย่างไรก็ตาม จะเป็นประโยชน์ที่จะพิจารณา promise variant ของปัญหาต่อไปนี้ ซึ่งรับประกันว่ามี solution อยู่พอดีหนึ่งตัว ปัญหานี้ปรากฏเป็นตัวอย่างของ promise problem ในบทเรียน Quantum query algorithms

Unique search

Input: ฟังก์ชันในรูปแบบ f:ΣnΣf:\Sigma^n \rightarrow \Sigma
Promise: มี string zΣnz\in\Sigma^n พอดีหนึ่งตัวที่ f(z)=1f(z) = 1 โดย f(x)=0f(x) = 0 สำหรับทุก string xzx\neq z
Output: string zz

ยังสังเกตด้วยว่าปัญหา Or ที่กล่าวถึงในบทเรียนเดียวกันมีความสัมพันธ์อย่างใกล้ชิดกับ Search สำหรับปัญหานั้น เป้าหมายคือแค่ตรวจสอบว่า solution มีอยู่หรือไม่ ต่างจากการหา 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