คำถามติดแท็ก grovers-algorithm

อัลกอริทึมการค้นหาของ Grover เป็นอัลกอริทึมที่สามารถทำการค้นหาตามลำดับของรากที่สองของขนาดอินพุต นี่เป็นความเร็วที่พิสูจน์ได้มากกว่าอัลกอริทึมคลาสสิกที่ดีที่สุดซึ่งต้องใช้เวลาในการสั่ง N เพื่อทำการค้นหา

3
มีคำอธิบายของคนธรรมดาสำหรับสาเหตุที่อัลกอริทึมของ Grover ทำงานอย่างไร
นี้บล็อกโพสต์โดยสกอตต์ Aaronsonเป็นคำอธิบายที่มีประโยชน์และเรียบง่ายของขั้นตอนวิธีของชอร์ ฉันสงสัยว่าถ้ามีเช่นคำอธิบายขั้นตอนวิธีควอนตัมที่มีชื่อเสียงมากที่สุดที่สอง: อัลกอริทึมของโกรเวอร์เพื่อการค้นหาเรียงลำดับฐานข้อมูลของขนาดO ( n )O(n)O(n)ในO ( n--√)O(n)O(\sqrt{n})เวลา โดยเฉพาะอย่างยิ่งฉันต้องการเห็นสัญชาตญาณที่เข้าใจได้สำหรับผลเริ่มต้นที่น่าประหลาดใจของเวลาทำงาน!

2
มีการพัฒนาควอนตัมอัลกอริธึมอย่างแท้จริงตั้งแต่ Grover และ Shor หรือไม่?
(ขออภัยสำหรับคำถามที่ค่อนข้างชำนาญ) ฉันศึกษาการคำนวณควอนตัมตั้งแต่ปีพ. ศ. 2547 ถึง 2550 แต่ฉันก็ไม่ได้ติดตามสนามตั้งแต่นั้นมา ในขณะที่มีจำนวนมากเกินจริงและพูดคุยของ QC อาจแก้ปัญหาทุกประเภทโดย outperforming คอมพิวเตอร์คลาสสิก แต่ในทางปฏิบัติมีเพียงสองนวัตกรรมทางทฤษฎี: อัลกอริทึมของ Shor ซึ่งแสดงความเร็วอย่างมีนัยสำคัญ แต่มีการบังคับใช้ที่ จำกัด และไม่ได้มีประโยชน์มากนักนอกเหนือจากการแยกตัวประกอบจำนวนเต็ม อัลกอริธึมของโกรเวอร์ซึ่งสามารถใช้กับปัญหาในวงกว้าง (เนื่องจากสามารถใช้เพื่อแก้ปัญหา NP-Complete) แต่แสดงเฉพาะความเร็วพหุนามเมื่อเทียบกับคอมพิวเตอร์แบบดั้งเดิม ควอนตัมหลอมก็พูดคุยกัน แต่ก็ไม่ชัดเจนว่ามันดีกว่าการจำลองแบบดั้งเดิมหรือไม่ QC ที่ใช้การวัดและการแสดงสถานะกราฟของ QC ก็เป็นหัวข้อที่ร้อนแรงเช่นกัน มีความคืบหน้าในด้านของอัลกอริทึมควอนตัมมาตั้งแต่ไหนแล้ว? โดยเฉพาะอย่างยิ่ง: มีอัลกอริธึมทำลายพื้นดินอย่างแท้จริงนอกเหนือจากโกรเวอร์และชอร์หรือไม่? มีความคืบหน้าในการกำหนดความสัมพันธ์ของ BQP กับ P, BPP และ NP หรือไม่? เรามีความคืบหน้าในการทำความเข้าใจธรรมชาติของควอนตัมเร็วขึ้นกว่าที่บอกว่า "มันต้องเป็นเพราะการพัวพัน"?

2
การคำนวณควอนตัมแบบอะเดียแบติกสามารถเร็วกว่าอัลกอริธึมของโกรเวอร์ได้หรือไม่?
ได้รับการพิสูจน์แล้วว่าการประมวลผลควอนตัมแบบอะเดียแบติกเทียบเท่ากับ "มาตรฐาน" หรือการคำนวณควอนตัมแบบเกท อย่างไรก็ตามการคำนวณแบบอะเดียแบติกแสดงให้เห็นถึงสัญญาสำหรับปัญหาการปรับให้เหมาะสมซึ่งวัตถุประสงค์คือเพื่อลด (หรือขยาย) ฟังก์ชั่นที่เกี่ยวข้องกับปัญหาอย่างใดอย่างหนึ่งนั่นคือการค้นหาอินสแตนซ์ที่ย่อเล็กสุด ปัญหา. ตอนนี้สำหรับฉันแล้วดูเหมือนว่าอัลกอริทึมของ Grover สามารถทำสิ่งเดียวกันได้โดยการค้นหาพื้นที่ของโซลูชันมันจะหาวิธีแก้ปัญหาหนึ่ง (ซึ่งอาจจะเป็นทางออกหลายอย่าง) ซึ่งเป็นไปตามเกณฑ์พยากรณ์ของออราเคิลซึ่งในกรณีนี้ ในเวลาโดยที่NO(N−−√)O(N)O(\sqrt N)NNNคือขนาดของพื้นที่โซลูชัน อัลกอริทึมนี้ได้รับการแสดงว่าเหมาะสมที่สุด: ตาม Bennett และคณะ (1997) กล่าวว่า "คลาสไม่สามารถแก้ไขได้บนเครื่องควอนตัมทัวริงในเวลาo ( 2 n / 2 ) " ในความเข้าใจของฉันนี่หมายความว่าไม่มีวิธีสร้างอัลกอริทึมควอนตัมใด ๆ ที่ค้นหาวิธีแก้ปัญหาด้วยการค้นหาพื้นที่เร็วกว่าO ( √)NPNP\rm NPo(2n/2)o(2n/2)o(2^{n/2})โดยที่Nปรับขนาดด้วยปัญหาO(N−−√)O(N)O(\sqrt N)NNN ดังนั้นคำถามของฉันคือ: ในขณะที่การคำนวณควอนตัมแบบอะเดียแบติกมักจะแสดงให้เห็นว่าดีกว่าเมื่อพูดถึงปัญหาการปรับให้เหมาะสมจริง ๆ แล้วมันจะเร็วกว่า? ถ้าใช่สิ่งนี้ดูเหมือนจะขัดแย้งกับการหาค่าเหมาะที่สุดของอัลกอริทึมของ Grover เนื่องจากอัลกอริธึมแบบอะเดียแบติกสามารถถูกจำลองโดยวงจรควอนตัม ถ้าไม่จุดประสงค์ของการพัฒนาอัลกอริธึมอะเดียแบติกคืออะไรถ้ามันไม่เคยเร็วกว่าสิ่งที่เราสามารถสร้างขึ้นด้วยวงจรอย่างเป็นระบบ หรือมีบางอย่างผิดปกติกับความเข้าใจของฉัน?O(N−−√)O(N)O(\sqrt N)

4
อัลกอริทึมของ Grover: รายการอยู่ที่ไหน
อัลกอริทึมของโกรเวอร์ถูกนำมาใช้ในสิ่งอื่น ๆ ที่จะค้นหารายการyy\mathbf{y}ในรายการเรียงลำดับของรายการ[x0,x1,...,xn−1][x0,x1,...,xn−1][\mathbf{x}_0, \mathbf{x}_1, ..., \mathbf{x}_{n-1}]ของความยาวnnnnแม้ว่าจะมีคำถามมากมายเกี่ยวกับหัวข้อนี้ แต่ฉันก็ยังคิดถึงประเด็นนี้อยู่ การค้นหาในรายการแบบคลาสสิค ปกติผมจะออกแบบฟังก์ชั่นการค้นหาด้วยวิธีนี้ search([x0,x1,...,xn−1],y)=i∈Nsuch that xi=ysearch([x0,x1,...,xn−1],y)=i∈Nsuch that xi=y \mathrm{search}([\mathbf{x}_0, \mathbf{x}_1, ..., \mathbf{x}_{n-1}], \mathbf{y}) = i \in \mathbb{N} \quad \text{such that } \mathbf{x}_i = \mathbf{y} ดังนั้นผมจึงให้รายการและรายการที่อยากเป็นปัจจัยการผลิตและผมได้รับตำแหน่งของรายการในรายการเป็นผลผลิต ฉันคิดว่าฉันได้เข้าใจว่าข้อมูลเกี่ยวกับการyy\mathbf{y}ถูกฝังอยู่ในขั้นตอนวิธีการผ่าน oracle ประตูOOOเพื่อฟังก์ชั่นของเราจะกลาย searchy([x1,x2,...,xn])=i∈Nsuch that xi=ysearchy([x1,x2,...,xn])=i∈Nsuch that xi=y \mathrm{search}_\mathbf{y}([\mathbf{x}_1, \mathbf{x}_2, ..., \mathbf{x}_n] ) = i \in \mathbb{N} \quad \text{such …

2
ผู้ดำเนินการแพร่กระจายของโกรเวอร์ทำงานอย่างไรและทำไมจึงเหมาะสมที่สุด
ในคำตอบนี้อธิบายถึงอัลกอริทึมของ Grover คำอธิบายบ่งชี้ว่าอัลกอริทึมนั้นอาศัยตัวดำเนินการกระจาย Groverอย่างมากแต่ไม่ได้ให้รายละเอียดเกี่ยวกับการทำงานภายในของตัวดำเนินการนี้ โดยย่อ Grover Diffusion Operator สร้าง 'การผกผันเกี่ยวกับค่าเฉลี่ย' เพื่อสร้างความแตกต่างเล็ก ๆ น้อย ๆ ในขั้นตอนก่อนหน้านี้ให้ใหญ่พอที่จะวัดได้ คำถามอยู่ในขณะนี้: ตัวดำเนินการแพร่ของ Grover บรรลุเป้าหมายอย่างไร ทำไมส่งผลให้เวลาในการค้นหาฐานข้อมูลที่ไม่มีการเรียงลำดับดีที่สุด?O(n−−√)O(n)O(\sqrt{n})

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

2
อัลกอริทึมของ Grover: ตัวอย่างชีวิตจริงหรือไม่?
ฉันค่อนข้างสับสนเกี่ยวกับวิธีการใช้อัลกอริทึมของ Grover ในทางปฏิบัติและฉันต้องการขอความช่วยเหลือในการอธิบายผ่านตัวอย่าง สมมติว่าฐานข้อมูลองค์ประกอบที่มีสีแดง, ส้ม, เหลือง, เขียว, ฟ้า, น้ำเงิน, ครามและม่วงไม่จำเป็นต้องเรียงตามลำดับนี้ เป้าหมายของฉันคือค้นหา Red ในฐานข้อมูลN=8N=8N=8 อินพุตสำหรับอัลกอริทึมของ Grover คือ qubits โดยที่ 3 qubits เข้ารหัสดัชนีของชุดข้อมูล ความสับสนของฉันมาที่นี่ (อาจจะสับสนเกี่ยวกับสถานที่ดังนั้นแทนที่จะพูดว่าความสับสนเกิดขึ้นที่นี่) ตามที่ฉันเข้าใจแล้ว oracle จะค้นหาดัชนีของชุดข้อมูลอย่างใดอย่างหนึ่ง (แทนด้วยการซ้อนทับของ 3 qubits) และยิ่งไปกว่านั้น oracle คือ "hardcoded" สำหรับดัชนีที่ควรค้นหาn=log2(N=8)=3n=log2⁡(N=8)=3n = \log_2(N=8) = 3 คำถามของฉันคือ: ฉันผิดอะไรที่นี่ หาก oracle กำลังมองหาดัชนีตัวใดตัวหนึ่งในฐานข้อมูลนั่นหมายความว่าเรารู้แล้วว่าเรากำลังค้นหาดัชนีตัวใดอยู่ทำไมจึงต้องค้นหา เมื่อพิจารณาตามเงื่อนไขข้างต้นด้วยสีใครบางคนสามารถชี้ให้เห็นว่าเป็นไปได้หรือไม่ที่โกรเวอร์มองหาชุดสีแดงในชุดข้อมูลที่ไม่มีโครงสร้าง มีการใช้งานสำหรับอัลกอริทึมของ Grover โดยมี oracle สำหรับค้นหา | …

3
Grover-Algorithm ใช้กับฐานข้อมูลอย่างไร
คำถาม ฉันต้องการที่จะใช้โกรเวอร์-อัลกอริทึมในการค้นหาฐานข้อมูลไม่ได้เรียงลำดับสำหรับองค์ประกอบxxxxตอนนี้คำถามเกิดขึ้นฉันจะเริ่มต้นดัชนีและมูลค่าของฐานข้อมูลด้วย qubits ได้อย่างไร ตัวอย่าง สมมติว่าฉันมี444 qubits ดังนั้น24= 1624=162 ^ 4 = 16ค่าคลาสสิกสามารถถูกแมป ฐานข้อมูลไม่ได้เรียงลำดับของฉันdddมีองค์ประกอบดังต่อไปนี้: d[ ค่า] = [ 3 , 2 , 0 , 1 ]d[Value]=[3,2,0,1]d [\text{Value}] = [3,2,0,1] ] ฉันต้องการค้นหาx = 2d= 10ข= | 10 ⟩x=2d=10b=|10⟩x = 2_d = 10_b = |10\rangle ⟩ วิธีการของฉัน: ดัชนีฐานข้อมูลdddกับd[ ( ดัชนีมูลค่า) ] = …

4
อัลกอริทึมของ Grover และความสัมพันธ์กับคลาสความซับซ้อน?
ฉันสับสนเกี่ยวกับอัลกอริทึมของ Grover และเชื่อมต่อกับคลาสความซับซ้อน อัลกอริทึมของ Grover ค้นหาและองค์ประกอบในฐานข้อมูลของ (เช่นที่ ) ขององค์ประกอบที่มี เรียกไปยัง oraclekkk f ( k ) = 1 ∼ √ยังไม่มีข้อความ= 2nN=2nN=2^nฉ( k ) = 1f(k)=1f(k)=1∼ N--√= 2n / 2∼N=2n/2\sim \sqrt{N}=2^{n/2} ดังนั้นเราจึงมีปัญหาต่อไปนี้: ปัญหา: ค้นหาในฐานข้อมูลที่f ( k ) = 1kkkฉ( k ) = 1f(k)=1f(k)=1 ตอนนี้ฉันรู้แล้วว่านี่ไม่ใช่ปัญหา desision และทำให้คำจำกัดความปกติของคลาสความซับซ้อน ,ฯลฯ ไม่ได้ใช้ แต่ฉันอยากรู้ว่าเราจะกำหนดระดับความซับซ้อนในกรณีเช่นนี้อย่างไร - และสภาพอากาศที่ทำกับหรือ ?NP …

1
ทำไมออราเคิลควิบิตจึงจำเป็นในอัลกอริทึมของ Grover
ฉันสับสนเล็กน้อยเกี่ยวกับความจำเป็นของ oracle qubit ในอัลกอริทึมของ Grover คำถามของฉันคือมันขึ้นอยู่กับว่าคุณใช้ oracle ของคุณว่าคุณต้องการ oracle qubit หรือไม่? หรือว่ามีเหตุผลอะไรบ้างสำหรับออราเคิลควิบิต (เช่นมีปัญหาบางอย่างที่ไม่สามารถแก้ไขได้โดยไม่มี oracle qubit หรือคิดง่ายขึ้นเกี่ยวกับปัญหาของ orbit qubit หรือเป็นแบบแผน ฯลฯ ) ทรัพยากรจำนวนมากแนะนำอัลกอริทึมของ Grover ด้วย oracle qubit แต่ฉันพบว่ามีบางกรณีที่คุณไม่จำเป็นต้องมี orbit qubit ตัวอย่างเช่นที่นี่มีการใช้งานสองอย่างของอัลกอริทึมของ Grover ในเครื่องจำลอง IBM Q อันหนึ่งใช้ออราเคิลควิบิตและอีกอันไม่ใช่ ในทั้งสองกรณีฉันต้องการค้นหา | 11> จากช่องว่างของ | 00>, | 01>, | 10> และ | 11> ในทั้งสองกรณี oracle …

2
การติดตั้งใช้งาน oracle ของอัลกอริทึมของ Grover บน IBM Q โดยใช้สาม qubits
ฉันกำลังพยายามทำความคุ้นเคยกับ IBM Q โดยใช้อัลกอริทึมของ qubits Grover สามตัว แต่มีปัญหาในการใช้ oracle คุณสามารถแสดงวิธีการดังกล่าวหรือแนะนำทรัพยากรที่ดีบางอย่างเพื่อให้ชินกับการเขียนโปรแกรมวงจร Q ของ IBM ได้หรือไม่? สิ่งที่ฉันต้องการจะทำคือการทำเครื่องหมายรัฐใดสถานะหนึ่งโดยการพลิกเครื่องหมายของมันเป็น oracle ควรจะทำ ตัวอย่างเช่นฉันมี 1 / 8-√( | 000 ⟩ + | 001 ⟩ + | 010 ⟩ + | 011 ⟩ + | 100 ⟩ + | 101 ⟩ + | 110 ⟩ + | …

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

2
เราสามารถเร่งอัลกอริทึมของโกรเวอร์ด้วยการรันกระบวนการแบบขนานได้หรือไม่?
ในการคำนวณแบบคลาสสิกเราสามารถรันการค้นหาคีย์ (เช่น AES) โดยการเรียกใช้โหนดการคำนวณแบบขนานให้มากที่สุด เป็นที่ชัดเจนว่าเราสามารถใช้อัลกอริทึมของ Grover ได้เช่นกัน คำถามของฉันคือ ; เป็นไปได้ไหมที่จะเพิ่มความเร็วโดยใช้อัลกอริทึมของ Grover มากกว่าหนึ่งตัวในการคำนวณแบบดั้งเดิม

1
อัลกอริทึมของโกรเวอร์: สิ่งใดที่ต้องป้อนเข้าสู่ Oracle
ฉันสับสนเกี่ยวกับสิ่งที่ป้อนเข้าสู่ Oracle ในอัลกอริทึมของ Grover เราไม่จำเป็นต้องใส่สิ่งที่เรากำลังมองหาและจะหาสิ่งที่เรากำลังมองหาเพื่อ Oracle นอกเหนือจากรัฐควอนตัมซ้อน? ตัวอย่างเช่นสมมติว่าเรามีรายชื่อของผู้คน {"Alice", "Bob", "Corey", "Dio"} และเราต้องการค้นหาว่า "Dio" อยู่ในรายการหรือไม่ จากนั้น Oracle ควรใช้เป็นอินพุตและเอาต์พุตrangle) ฉันเข้าใจดีว่า1/2(|00⟩+|01⟩+|10⟩+|11⟩)1/2(|00⟩+|01⟩+|10⟩+|11⟩)1/2(|00\rangle + |01\rangle + |10\rangle + |11\rangle)1/2(|00⟩+|01⟩+|10⟩−|11⟩)1/2(|00⟩+|01⟩+|10⟩−|11⟩)1/2(|00\rangle + |01\rangle + |10\rangle - |11\rangle) แต่เราไม่จำเป็นต้องป้อนคำว่า "Dio" และรายการ {"Alice", "Bob", "Corey", "Dio"} ไปยัง Oracle หรือไม่ ไม่เช่นนั้น Oracle จะคืนค่าเอาต์พุตได้อย่างไร มันไม่ได้กล่าวถึงอย่างชัดเจนเนื่องจาก Oracle เป็นกล่องดำและเราไม่ต้องคิดเกี่ยวกับวิธีการใช้งานหรือไม่ ความเข้าใจของฉันเกี่ยวกับ Oracle คือ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.