อัลกอริทึมของ Grover: รายการอยู่ที่ไหน


15

อัลกอริทึมของโกรเวอร์ถูกนำมาใช้ในสิ่งอื่น ๆ ที่จะค้นหารายการyในรายการเรียงลำดับของรายการ[x0,x1,...,xn1]ของความยาวnnแม้ว่าจะมีคำถามมากมายเกี่ยวกับหัวข้อนี้ แต่ฉันก็ยังคิดถึงประเด็นนี้อยู่

การค้นหาในรายการแบบคลาสสิค

ปกติผมจะออกแบบฟังก์ชั่นการค้นหาด้วยวิธีนี้

search([x0,x1,...,xn1],y)=iNsuch that xi=y
ดังนั้นผมจึงให้รายการและรายการที่อยากเป็นปัจจัยการผลิตและผมได้รับตำแหน่งของรายการในรายการเป็นผลผลิต ฉันคิดว่าฉันได้เข้าใจว่าข้อมูลเกี่ยวกับการyถูกฝังอยู่ในขั้นตอนวิธีการผ่าน oracle ประตูOเพื่อฟังก์ชั่นของเราจะกลาย
searchy([x1,x2,...,xn])=iNsuch 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,x=10,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,|ψ=|53qubits0,otherwise

การสร้าง oracle ต้องการให้เรารู้ว่าอยู่ในตำแหน่งที่ 5 อะไรคือจุดที่จะใช้งานอัลกอริธึมถ้าเราค้นหาองค์ประกอบเพื่อสร้าง oracle?


ฉันยังมีปัญหาในการเข้าใจข้อดีของอัลกอริทึมของ Grover สมมติว่าฉันมี N รายการในรายการ ทุกครั้งที่โทรมายัง Oracle มันประเมินความเป็นไปได้ทั้งหมดของ N หรือไม่ แม้ว่าการประเมินจะเร็วมาก แต่ถ้าเรายังต้องวนซ้ำทุกการกำหนดค่าความซับซ้อนของการประเมินผลของ Oracle ก็คือ O (N) ดังนั้นอัลกอริทึมของโกรเวอร์จึงดูเหมือนจะไม่เร็วกว่าการค้นหาที่โง่ ถูกต้องหรือไม่
Sanparith Marukatat

@SanparithMarukatat มันไม่ถูกต้อง รายการในรายการของคุณเป็นเงื่อนไขการซ้อนทับของรัฐที่เกี่ยวข้องในการค้นหา เมื่อ Oracle ทำงานในสถานะนี้จะนับเป็นการดำเนินการเดียว ความสามารถของ Oracle ในการทำเครื่องหมายข้อความค้นหา - สำหรับคำทับซ้อนของคุณเป็นส่วนพื้นฐานของการเข้าใจของโกรเวอร์ เพื่อทำความเข้าใจอัลกอริทึมของโกรเวอร์ฉันแนะนำให้คุณเข้าใจก่อนว่าการทำเครื่องหมายนี้ออกจากสถานะที่ต้องการเกิดขึ้นได้อย่างไร หลังจากนั้นตรวจสอบให้แน่ใจว่าได้เข้าใจบทบาทของรัฐใน Oracle |
R. Chopin

หากคุณเข้าใจเช่นนั้นคุณควรศึกษาผู้ปฏิบัติงานที่สามารถเพิ่มความกว้างของคำศัพท์ที่ต้องการในการทับซ้อนในขณะเดียวกันก็ลดความกว้างของคำศัพท์ที่ไม่พึงประสงค์ของการซ้อนทับ สำหรับฉันวิธีที่ง่ายที่สุดในการเข้าหา Grover คือดูที่โอเปอเรเตอร์ที่มีค่าเฉลี่ย (บางคนใช้มุมมองทางเรขาคณิต แต่ฉันไม่คิดว่าชัดเจน)
R. Chopin

คำตอบ:


10

หากคุณมี 8 รายการในรายการ (เช่นในตัวอย่างการ์ดของคุณ) ดังนั้นอินพุตของ oracle คือ 3 (qu) บิต จำนวนไพ่ในสำรับ (52) ไม่เกี่ยวข้องคุณต้องใช้ 3 บิตเท่านั้นในการเข้ารหัสไพ่ 8 ใบ

คุณสามารถคิดว่า 3 บิตเข้ารหัสตำแหน่งในรายการการ์ดที่คุณกำลังค้นหา ถ้าอย่างนั้นคุณก็ไม่รู้ตำแหน่ง แต่ oracle รู้ดี ดังนั้นถ้าคุณกำลังค้นหาเอซโพดำแล้วออราเคิลก็รู้ว่าเอซโพดำคือการ์ดที่ 6 (หรือการนับครั้งที่ 5 จากศูนย์) และใช้ฟังก์ชัน

f(x)={1,if x = 5, or binary '101'0,otherwise

PS: เป็นการดีกว่าถ้าคุณคิดว่าอัลกอริทึมของ Grover แตกต่างกัน: คุณมี oracle ที่ใช้ฟังก์ชั่นบูลีนซึ่งมีเอาต์พุตสำหรับการรวมบิตของอินพุตบิตเดียวมิฉะนั้นจะแสดงผลลัพธ์เป็นศูนย์และงานของคุณคือ ปัญหามีความซับซ้อนเช่นเดียวกับการค้นหาในรายการหรือฐานข้อมูลที่ไม่เรียงลำดับนั่นคือสาเหตุที่อัลกอริทึมของ Grover อธิบายไว้เป็นการค้นหาในฐานข้อมูลที่ไม่เรียงลำดับ แต่การใช้อัลกอริทึมกับการค้นหาฐานข้อมูลในโลกแห่งความเป็นจริงทำให้เกิดคำถามที่เกินกว่าอัลกอริทึม อัลกอริทึมของ Grover กำลังค้นหาสิ่งที่ oracle รู้1


ใช่ขออภัยว่า 6 มาจากการแก้ไขก่อนหน้านี้
incud

2
ขอบคุณสำหรับคำตอบ. ฉันแก้ไขการเขียนผิดพลาด อะไรคือจุดประสงค์ในการดำเนินการของอัลกอริทึมหากต้องการสร้าง oracle ฉันต้องทราบตำแหน่งขององค์ประกอบการสืบค้น
incud

1
@ incud แน่นอนมันไม่สมเหตุสมผล ฉันได้อัพเดตคำตอบแล้ว
kludg

" อัลกอริทึมของ Grover กำลังค้นหาสิ่งที่ oracle รู้ ": ไม่จำเป็น พยากรณ์อาจตรวจสอบเฉพาะคุณสมบัติบางอย่างของอินพุตดังนั้นผลลัพธ์ที่ได้ในตอนท้ายจะมีข้อมูลมากกว่าที่เข้ารหัสใน oracle itsef ตัวอย่างทั่วไปคือการค้นหาในสมุดโทรศัพท์ oracle "ถาม" สำหรับบันทึกที่แนบมากับชื่อเฉพาะ แต่เมื่อพบระเบียนที่ถูกต้องแล้วเราจะได้รับข้อมูลเพิ่มเติมของหมายเลขโทรศัพท์ที่แนบกับบันทึกนั้นซึ่งไม่ได้เข้ารหัสใน oracle
glS

4

ในขณะที่เราคิดว่าฟังก์ชั่นของ oracle อาจจะง่ายที่สุดในการคำนวณค่าเหล่านี้ทั้งหมด แต่นั่นไม่ใช่สิ่งที่ทำ ในกรณีที่คุณอธิบายพยากรณ์มี 8 ปัจจัยการผลิตที่เป็นไปได้ (เช่นการเข้ารหัสใน 3 (คู) บิต) และพยากรณ์ไม่ทั้งหมดคำนวณที่คุณต้องการได้ทันที ดังนั้นขณะที่คุณพยายามประเมิน oracle สำหรับค่า , oracle ค้นหา (ในตัวอย่างนี้) การ์ดที่มีค่าxxxสอดคล้องกับแล้วตรวจสอบว่าการ์ดนั้นเป็นการ์ดที่ทำเครื่องหมายไว้หรือไม่ แนวคิดที่ว่าทุกครั้งที่คุณเรียกออราเคิลจะต้องผ่านกระบวนการนั้นหนึ่งครั้ง โดยรวมแล้วคุณประเมินฟังก์ชันเป็นจำนวนครั้งที่เท่ากับจำนวนครั้งที่คุณเรียกใช้ oracle จุดประสงค์ของอัลกอริธึมการค้นหาใด ๆ คือการเรียก oracle นั้นให้น้อยที่สุดเท่าที่จะทำได้

ในกรณีที่ฟังดูเป็นวงกลมเล็กน้อย (รับอินพุต , หาการ์ดที่สอดคล้องกับ) จำไว้ว่าตารางค้นหาของคุณสำหรับxxxสอดคล้องกับการ์ดที่สามารถสั่งได้ซึ่งเป็นคำถามค้นหาที่แตกต่างกันง่ายกว่าและเร็วกว่ามาก

ความแตกต่างที่สำคัญในตัวอย่างของคุณเปรียบเทียบกับสถานการณ์การใช้งานที่สมจริงยิ่งขึ้นคือ:

  • พื้นที่การค้นหามักจะมีขนาดใหญ่มาก ไม่มีโอกาสที่เป็นจริงในการคำนวณค่าทั้งหมดล่วงหน้า แน่นอนว่าเป็นสิ่งที่เราพยายามหลีกเลี่ยง

  • โดยปกติแล้วเราไม่ได้พูดว่า 'find ace ace of spades' แต่มีที่ไม่น่ารำคาญที่จะประเมินเพื่อทดสอบว่าxf(x)xเป็นรายการ 'ที่ทำเครื่องหมายไว้' หรือไม่ ความจริงที่ว่า oracle สามารถใช้เวลาค่อนข้างนานในการประเมินแม้จะเป็นรายการเดียวก็คือสิ่งที่ทำให้ oracle เป็นส่วนที่มีค่าใช้จ่ายสูงในการดำเนินการ (และประตูอื่น ๆ ทั้งหมดให้ฟรี) และทำไมคุณต้องลดจำนวนการโทร .

xy=f(x)y=1xf(x)x0


2

คำถามคือท้ายที่สุด: "อะไรคือจุดประสงค์ในการใช้งานอัลกอริธึมถ้าเราค้นหาองค์ประกอบเพื่อสร้าง oracle แล้ว?"

ในขณะที่บางคนสร้าง oracle ไว้ล่วงหน้ามันอาจจะไม่ใช่คนที่ใช้ oracle

size of listขนาดของรายการตามธรรมชาติเราไม่สามารถหวังการค้นหาฐานข้อมูลตามที่เสนอก่อนหน้านี้ซึ่งฉันไม่สามารถแสดงความคิดเห็นสำหรับการขาดชื่อเสียงเมื่อพูดว่า 5 ล้านปุ่มจะส่งคืนเนื้อหาที่เราต้องการหากเนื้อหาของเราไม่ได้รับการจัดการโดย 5 ล้านกุญแจเหล่านั้น คีย์ที่ 9 ล้านซึ่งไม่เกิดขึ้นในตัวอย่างของเรา อัลกอริทึมของ Grover ทำอย่างไร

เราถาม oracle: อะไรคือคำตอบที่มีอยู่แล้วสำหรับคำถามที่มีอยู่แล้ว? แม้แต่ Mateus และ Omar ก็ยังถามถึง "oracle-for-a-specific-symbol-symbol" ระหว่างรันไทม์ตำแหน่งของสัญลักษณ์ในสตริงที่รวบรวมไว้แล้วคืออะไร? oracle จะให้คำตอบกับคำถามของเราหลังจากการปรึกษาหารือเพียงครั้งเดียว แต่ในเรื่องนี้ไม่สามารถเขียนคำตอบในรูปของไบนารี่สตริงและส่งมาให้เราผ่านช่องทางการสื่อสารแบบดั้งเดิม มันจะซ่อนคำตอบในทับซ้อนสำหรับเราที่จะดึงมันออกมา

ฉันปล่อยให้จินตนาการหรือคำอุปมาวิ่งหนีไปในบิตต่อไปนี้: เราไม่ค่อยได้ยินคำตอบในครั้งแรกและเราต้องขอให้นักพยากรณ์ทำซ้ำคำตอบเดิมซ้ำแล้วซ้ำอีกจนกว่าเราจะแน่ใจว่าคำพยากรณ์นั้นพูด ยกเว้นว่าเราเริ่มเห็นภาพหลอนจากข้อมูลที่ผิดในกระบวนการแพร่ถ้าเราถามหลายครั้งเกินไป


2

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

(x)={1,x[0,...,3]+x[4,...,7]=10100,มิฉะนั้น

สิ่งที่พยากรณ์นี้มีความหมายว่าคุณมีการค้นหา 8-qubit ที่คุณใช้สี่ qubits แรกและเพิ่มลงในสี่ qubits ที่สองและพลิก M หากการเพิ่มทำให้ 10 (1010 ในไบนารี) ความแตกต่างระหว่าง oracle นี้กับที่คุณให้ไว้คือ oracle นี้ทดสอบรูปแบบ (ตัวถูกดำเนินการเพิ่มเป็น 10) ในขณะที่คุณทดสอบความเท่าเทียมกัน (คือดัชนี 5) oracle นี้สร้างได้ยากกว่ามาก แต่ใช้ประโยชน์จากพลังที่แท้จริงของ Grover's ซึ่งก็คือการค้นหาที่โหดร้ายซึ่ง oracle ของคุณกำหนดพื้นที่การค้นหา

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