การเลือกจำนวนรอบการวนซ้ำ
เราได้พิสูจน์แล้วว่าเวกเตอร์สถานะของ register ในอัลกอริทึมของ Grover ยังคงอยู่ใน subspace สองมิติที่ถูก span ด้วย และ เมื่อขั้นตอนการตั้งค่าเริ่มต้นเสร็จสิ้น
เป้าหมายคือการหาสมาชิก , และเป้าหมายนี้จะสำเร็จหากเราสามารถได้สถานะ — เพราะถ้าเราวัดสถานะนี้ เรารับประกันว่าจะได้ผลการวัด เมื่อสถานะของ หลังจาก รอบในขั้นตอนที่ 2 คือ
เราควรเลือก เพื่อให้
ใกล้เคียง มากที่สุดในค่าสัมบูรณ์ เพื่อเพิ่มความน่าจะเป็นที่จะได้ จากการวัด สำหรับมุมใดๆ , ค่า จะ แกว่ง เมื่อ เพิ่มขึ้น แม้ว่าจะไม่จำเป็นต้องเป็น periodic — ไม่มีการรับประกันว่าเราจะได้ค่าเดิมซ้ำ
ตามธรรมชาติ นอกจากการทำให้ความน่าจะเป็นที่จะได้สมาชิก จากการวัดมีค่าสูงแล้ว เราก็ต้องการเลือก ให้น้อยที่สุดเท่าที่จะทำได้ เพราะการใช้ ครั้งของการดำเนินการ ต้องการ คำถามถึงฟังก์ชัน เพราะเรามุ่งทำให้ ใกล้เคียง ในค่าสัมบูรณ์ วิธีที่เป็นธรรมชาติในการทำเช่นนี้คือเลือก เพื่อให้
การหาค่า ให้ได้
แน่นอนว่า ต้องเป็นจำนวนเต็ม ดังนั้นเราอาจไม่สามารถได้ค่านี้พอดี — แต่สิ่งที่เราทำได้คือเลือกจำนวนเต็มที่ใกล้เคียงที่สุดกับค่านี้ ซึ่งคือ
นี่คือจำนวนรอบการวนซ้ำที่แนะนำสำหรับอัลกอริทึมของ Grover เมื่อเราดำเนินการวิเคราะห์ต่อ เราจะเห็นว่าความใกล้เคียงของจำนวนเต็มนี้กับค่าเป้าหมายส่งผลต่อประสิทธิภาพของอัลกอริทึมตามธรรมชาติ
(สำหรับข้อสังเกต หากค่าเป้าหมาย อยู่กึ่งกลางระหว่างจำนวนเต็มสองตัวพอดี นิพจน์ นี้คือสิ่งที่ได้จากการปัดขึ้น เราอาจเลือกปัดลงแทน ซึ่งสมเหตุสมผลเพราะหมายถึงคำถามน้อยลงหนึ่งครั้ง — แต่นี่เป็นเรื่องรองและไม่สำคัญสำหรับบทเรียนนี้)
จำไว้ว่าค่าของมุม ให้โดยสูตร
เราจะเห็นว่าจำนวนรอบการวนซ้ำที่แนะนำ ขึ้นอยู่กับจำนวนสตริงใน นี่สร้างความท้าทายหากเราไม่รู้จำนวนคำตอบ ดังที่เราจะพูดถึงในภายหลัง
การค้นหาเอกลักษณ์
ก่อนอื่น ลองมุ่งเน้นไปที่สถานการณ์ที่มีสตริง เดียวที่ อีกวิธีในการพูดนี้คือเรากำลังพิจารณา instance ของปัญหา Unique search ในกรณีนี้เรามี
ซึ่งสามารถประมาณได้อย่างสะดวกเป็น
เมื่อ มีค่ามาก ถ้าเราแทน ในนิพจน์
เราจะได้
เมื่อนึกถึงว่า ไม่เพียงแต่เป็นจำนวนครั้งที่การดำเนินการ ถูกนำไปใช้ แต่ยังเป็นจำนวนคำถามถึงฟังก์ชัน ที่อัลกอริทึมต้องการ เราจะเห็นว่าเรากำลังดำเนินการสู่การได้อัลกอริทึมที่ต้องการ คำถาม
ตอนนี้เราจะตรวจสอบว่าการเลือก ที่แนะนำทำงานได้ดีแค่ไหน ความน่าจะเป็นที่การวัดสุดท้ายจะให้ผลเป็นคำตอบเอกลักษณ์สามารถแสดงได้อย่างชัดเจนเป็น
อาร์กิวเมนต์แรก หมายถึงจำนวนไอเทมที่เราค้นหา และอาร์กิวเมนต์ที่สองซึ่งเป็น ในกรณีนี้ หมายถึงจำนวนคำตอบ ในภายหลังเราจะใช้สัญกรณ์เดิมนี้อย่างทั่วไปขึ้น โดยมีคำตอบหลายตัว
ต่อไปนี้คือตารางความน่าจะเป็นของความสำเร็จสำหรับค่า ที่เพิ่มขึ้น
สังเกตว่าความน่าจะเป็นเหล่านี้ไม่ได้เพิ่มขึ้นอย่างเคร่งครัด โดยเฉพาะอย่างยิ่ง เรามีความผิดปกติที่น่าสนใจเมื่อ ที่เราได้คำตอบอย่างแน่นอน อย่างไรก็ตาม สามารถพิสูจน์ได้โดยทั่วไปว่า
สำหรับ ทั้งหมด ดังนั้นความน่าจะเป็นของความสำเร็จจะเข้าหา ในขีดจำกัดเมื่อ มีค่ามาก ดังที่ค่าข้างต้นดูเหมือนจะบ่งบอก ดีมาก!
แต่สังเกตว่า แม้แต่ขอบเขตอ่อนเช่น ก็ยังแสดงถึงประโยชน์ของอัลกอริทึมของ Grover ไม่ว่าผลการวัด ที่เราได้จากการรันขั้นตอน เราสามารถตรวจสอบเสมอว่า โดยใช้คำถามเดียวถึง และถ้าเราล้มเหลวในการได้สตริงเอกลักษณ์ ที่ ด้วยความน่าจะเป็นสูงสุด จากการรันขั้นตอนหนึ่งครั้ง หลังจากรัน ครั้งอิสระ เราจะล้มเหลวในการได้สตริงเอกลักษณ์ นี้ด้วยความน่าจะเป็นสูงสุด กล่าวคือ โดยใช้ คำถามถึง เราจะได้คำตอบเอกลักษณ์ ด้วยความน่าจะเป็นอย่างน้อย การใช้ขอบเขตที่ดีกว่า แสดงให้เห็นว่าความน่าจะเป็นที่จะหา โดยวิธีนี้จริงๆ แล้วอย่างน้อย
คำตอบหลายตัว
เมื่อจำนวนสมาชิกใน เปลี่ยนแปลง มุม ก็เปลี่ยนตาม ซึ่งอาจส่งผลอย่างมีนัยสำคัญต่อความน่าจะเป็นของความสำเร็จของอัลกอริทึม เพื่อความกระชับ ลองเขียน เพื่อแทนจำนวนคำตอบ และดังก่อนหน้านี้เราจะสมมติว่า
สำหรับตัวอย่างที่จูงใจ ลองจินตนาการว่าเรามี คำตอบแทนที่จะเป็นคำตอบเดียวอย่างที่เราพิจารณาข้างต้น ซึ่งหมายความว่า
ซึ่งมีค่าประมาณสองเท่าของมุมที่เรามีในกรณี เมื่อ มีค่ามาก สมมติว่าเราไม่รู้ดีกว่านี้ และเลือกค่า เดิมอย่างในการตั้งค่าคำตอบเอกลักษณ์:
ผลจะเป็นหายนะดังที่ตารางความน่าจะเป็นต่อไปนี้เปิดเผย
คราวนี้ความน่าจะเป็นของความสำเร็จเข้าหา เมื่อ เข้าหาอนันต์ สิ่งนี้เกิดขึ้นเพราะเราหมุนเร็วเป็นสองเท่าของตอนที่มีคำตอบเอกลักษณ์ ทำให้เราพุ่งผ่านเป้าหมาย และไปลงที่ใกล้
อย่างไรก็ตาม ถ้าแทนที่เราใช้การเลือก ที่แนะนำ ซึ่งคือ
สำหรับ
ประสิทธิภาพจะดีขึ้น พูดให้ชัดขึ้น การใช้การเลือก นี้นำไปสู่ความสำเร็จด้วยความน่าจะเป็นสูง
เมื่อสรุปสิ่งที่กล่าวไว้ก่อนหน้านี้ สามารถพิสูจน์ได้ว่า
ที่เราใช้สัญกรณ์ที่แนะนำก่อนหน้านี้: แทนความน่าจะเป็นที่อัลกอริทึมของ Grover ที่รันเป็นเวลา รอบจะเปิดเผยคำตอบเมื่อมี คำตอบทั้งหมดจาก ความเป็นไปได้
ขอบเขตล่าง ของความน่าจะเป็นของความสำเร็จนี้ค่อนข้างแปลก ตรงที่คำตอบมากขึ้นหมายถึงขอบเขตล่างที่แย่ลง — แต่ภายใต้สมมติฐานว่า น้อยกว่า อย่างมีนัยสำคัญ เราก็ยังสรุปได้ว่าความน่าจะเป็นของความสำเร็จอยู่ในระดับที่ดีพอสมควร ดังเดิม ข้อเท็จจริงที่ว่า มีค่าพอสมควรแสดงถึงประโยชน์ของอัลกอริทึม
นอกจากนี้ยังเป็นความจริงที่ว่า
ขอบเขตล่างนี้อธิบายความน่าจะเป็นที่สตริง ที่เลือกแบบสุ่มสม่ำเสมอจะเป็นคำตอบ — ดังนั้นอัลกอริทึมของ Grover จะทำงานได้ดีอย่างน้อยเท่ากับการเดาแบบสุ่มเสมอ (ที่จริงแล้ว เมื่อ , อัลกอริทึมของ Grover คือ การเดาแบบสุ่ม)
ตอนนี้ลองดูจำนวนรอบการวนซ้ำ (และด้วยเหตุนี้จำนวนคำถาม)
สำหรับ
สำหรับทุก , เป็นความจริงที่ว่า , ดังนั้น
ซึ่งหมายความว่า
นี่แปลไปสู่การประหยัดในจำนวนคำถามเมื่อ เพิ่มขึ้น โดยเฉพาะอย่างยิ่ง จำนวนคำถามที่ต้องการคือ
จำนวนคำตอบที่ไม่รู้
หากจำนวนคำตอบ ไม่ทราบ จำเป็นต้องใช้วิธีการที่ต่างออกไป เพราะในสถานการณ์นี้เราไม่มีความรู้เกี่ยวกับ เพื่อแจ้งการเลือก ของเรา อันที่จริงมีหลายวิธีการ
วิธีหนึ่งที่เรียบง่ายคือการเลือก
แบบสุ่มสม่ำเสมอ การเลือก ในลักษณะนี้จะหาคำตอบได้เสมอ (สมมติว่ามีคำตอบอยู่) ด้วยความน่าจะเป็นมากกว่า 40% แม้ว่าสิ่งนี้จะไม่ชัดเจนและต้องการการวิเคราะห์ที่จะไม่รวมอยู่ที่นี่ อย่างไรก็ตาม มันสมเหตุสมผล โดยเฉพาะเมื่อเราคิดถึงภาพเรขาคณิต: การหมุนสถานะของ จำนวนครั้งแบบสุ่มเช่นนี้ไม่ต่างจากการเลือกเวกเตอร์หน่วยแบบสุ่มในปริภูมิที่ถูก span ด้วย และ ซึ่งมีแนวโน้มที่ค่าสัมประสิทธิ์ของ จะมีค่าพอสมควร ด้วยการทำซ้ำขั้นตอนนี้และตรวจสอบผลลัพธ์ในลักษณะเดียวกับที่อธิบายก่อนหน้านี้ ความน่าจะเป็นที่จะหาคำตอบสามารถทำให้ใกล้เคียง มากได้
มีวิธีที่ปรับปรุงแล้วซึ่งหาคำตอบเมื่อมีอยู่โดยใช้ คำถาม แม้ไม่ทราบจำนวนคำตอบ และต้องการ คำถามเพื่อพิจารณาว่าไม่มีคำตอบเมื่อ
แนวคิดพื้นฐานคือการเลือก แบบสุ่มสม่ำเสมอจากเซต แบบวนซ้ำ สำหรับค่า ที่เพิ่มขึ้น โดยเฉพาะอย่างยิ่ง เราสามารถเริ่มต้นด้วย และเพิ่มขึ้นแบบ exponential โดยสิ้นสุดกระบวนการทันทีที่หาคำตอบได้ และกำหนดเพดาน เพื่อไม่สูญเสียคำถามเมื่อไม่มีคำตอบ กระบวนการใช้ประโยชน์จากข้อเท็จจริงที่ว่าต้องการคำถามน้อยกว่าเมื่อมีคำตอบมากขึ้น อย่างไรก็ตาม ต้องระมัดระวัง เพื่อสมดุลอัตราการเติบโตของ กับความน่าจะเป็นของความสำเร็จในแต่ละรอบ (การใช้ ทำงานได้ ตามที่การวิเคราะห์แสดงให้เห็น แต่การเพิ่มสองเท่าของ ไม่ทำงาน — นี่กลายเป็นการเพิ่มที่เร็วเกินไป)
กรณีพื้นฐาน
ตลอดการวิเคราะห์ที่เราเพิ่งผ่านไป เราสมมติว่าจำนวนคำตอบไม่ใช่ศูนย์ อันที่จริง โดยการอ้างถึงเวกเตอร์
เราได้สมมติโดยนัยว่า และ ทั้งคู่ไม่ว่างเปล่า ที่นี่เราจะพิจารณาโดยย่อว่าจะเกิดอะไรขึ้นเมื่อเซตใดเซตหนึ่งว่างเปล่า
ก่อนที่เราจะวิเคราะห์ ลองสังเกตสิ่งที่ชัดเจน: หากทุกสตริง เป็นคำตอบ เราก็จะเห็นคำตอบเมื่อเราวัด และเมื่อไม่มีคำตอบ เราก็จะไม่เห็น ในแง่หนึ่งไม่จำเป็นต้องไปลึกกว่านี้
อย่างไรก็ตาม เราสามารถตรวจสอบคณิตศาสตร์สำหรับกรณีพื้นฐานเหล่านี้ได้อย่างรวดเร็ว สถานการณ์ที่ หรือ หนึ่งในนั้นว่างเปล่าเกิดขึ้นเมื่อ เป็น constant; ว่างเปล่าเมื่อ สำหรับทุก และ ว่างเปล่าเมื่อ สำหรับทุก ซึ่งหมายความว่า
และดังนั้น
ดังนั้น ไม่ว่าจำนวนรอบการวนซ้ำ ที่เราทำในกรณีเหล่านี้ การวัดจะเปิดเผยสตริงสุ่มสม่ำเสมอ เสมอ