คอมพิวเตอร์ควอนตัมจะเปลี่ยนการเขียนโปรแกรมอย่างไร [ปิด]


33

การเขียนโปรแกรมอัลกอริทึมควอนตัมแตกต่างกันอย่างไร? ภาษาเช่น C จะเป็นอย่างไรถ้ามันถูกออกแบบมาสำหรับ qubits ประเภทจะเปลี่ยนหรือไม่


หมายเหตุ: ฉันไม่แน่ใจว่านี่เป็นคำถามที่ถูกต้องหรือไม่ ขออภัยถ้าไม่ใช่
MaiaVictor

4
ฉันคิดว่ามันคือ. จากนั้นอีกครั้งฉันไม่รู้กฎของเว็บไซต์นี้เป็นอย่างดี และฉันไม่มีคำตอบที่ดีสำหรับคำถามนี้ แต่ฉันรู้ว่าอัลกอริทึมนี้สามารถใช้เพื่อแยกจำนวนเต็มได้อย่างมีประสิทธิภาพมากขึ้น: arxiv.org/abs/0812.0380
John Davis

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

คำตอบ:


17

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

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

คุณสมบัติอีกอย่างคือการได้รับคำตอบจากอัลกอริธึมเชิงควอนตัมนั้นเป็นเรื่องที่ได้รับความนิยมเพราะสิ่งที่คุณได้รับเมื่อสิ้นสุดการคำนวณคือคำตอบหลาย ๆ คำแต่ละครั้งมีความน่าจะเป็นของตัวเอง จะต้องดำเนินการในลักษณะที่คำตอบที่คุณต้องการมีโอกาสสูง ซึ่งอาจเกี่ยวข้องกับการรันอัลกอริทึมไปข้างหน้าและข้างหลังหลาย ๆ ครั้ง

ตรวจสอบโกรเวอร์ค้นหาอัลกอริทึม


แทรกเพื่อแสดงการทำงานพื้นฐานของอัลกอริทึมของ Grover สมมติว่ามีปัญหาการค้นหา คำตอบที่เป็นไปได้คือ 0, 1, 2 และ 3 แต่คำตอบที่ถูกต้องคือ 2 ดังนั้นคอมพิวเตอร์ควอนตัมจึงถูกวางซ้อนทับกันทั้งสี่สถานะและผ่านลำดับขั้นตอนเพื่อดูว่าอันไหนถูกต้องและ กลับค่าแอมพลิจูดของมันเช่นจุดสีดำและลูกศรด้านล่าง:

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถเห็นลูกศร 2 ที่กลับด้านในเครื่อง แต่ไม่มีวิธีที่จะบอกว่าข้างนอกเพราะมีเพียงความน่าจะเป็นที่มองเห็นได้จากด้านนอกซึ่งเป็นแอมพลิจูดกำลังสองและเมื่อกำลังสองพวกมันเท่ากันทั้งหมด

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

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

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

ไม่สนุกเหรอ?


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

เช่นถ้าอินพุตไปยังอัลกอริทึมเป็น 128 ไบต์หรือ 1024 บิตมี 2 ^ 1024 หรือ 10 ^ 308 อินพุตที่แตกต่างกัน ไม่มีวิธีการทดสอบว่าอินพุตจำนวนมากบนคอมพิวเตอร์ทั่วไป แต่คอมพิวเตอร์ควอนตัมสามารถลองทั้งหมดในแบบคู่ขนาน


2
ตรวจสอบอัลกอริทึมการค้นหาของ Grover ... โอ้พระเจ้า! ฉันไม่พร้อมสำหรับสิ่งนั้น!
ฟิลิป

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

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

@Philip: สมมติว่าคุณมีตารางรายการ 1024 รายการดังนั้นจะใช้เวลา 10 บิตในการจัดทำดัชนี คุณมีการลงทะเบียนบิต 10 (qu) และมี 1024 รัฐที่เป็นไปได้ ตกลงดังนั้นคุณจึงสร้างจักรวาลที่รีจิสเตอร์เป็น 0 และอีกอันหนึ่งในนั้นคือ 1, มากถึง 1024 จักรวาลคู่ขนาน จากนั้นควอนตัม "คำแนะนำ" ทำงานกับสิ่งเหล่านี้ทั้งหมดในแบบคู่ขนาน แต่ละจักรวาลมี "เวกเตอร์แอมพลิจูด" ซึ่งมีขนาดความน่าจะเป็น แต่มันก็มีทิศทางและสิ่งเหล่านั้นกำลังถูกจัดการ เนื่องจากคอลเลกชัน 1024 เวกเตอร์มีเวกเตอร์ที่ไม่เป็นศูนย์เฉลี่ยการหมุนจึงใหญ่ขึ้นหนึ่งส่วนที่เหลือก็เล็กลง
Mike Dunlavey

ฉันเป็นนักฟิสิกส์ที่ได้รับการปฏิรูปและฉันได้ลดคำตอบลงเพราะมันทำให้เข้าใจผิด 1) ขั้นตอนวิธีการควอนตัมบ่อยมีโดยเฉพาะอย่างยิ่ง (asymptotically) ได้อย่างรวดเร็ว - โกรเวอร์วิธีการค้นหาวิ่งใน O (sqrt (n)) ในขณะที่ที่ดีที่สุดสำหรับเครื่องคอมพิวเตอร์ที่คลาสสิกสามารถทำได้คือ O (n) ถ้าคอมพิวเตอร์ควอนตัมไม่ได้เร็วแบบไม่แสดงอาการก็จะไม่น่าสนใจมาก ฮาร์ดแวร์อาจช้าในขณะนี้ แต่นั่นไม่ใช่ความผิดของอัลกอริทึม!
Benjamin Hodgson

7

ภาษาเช่น C จะเป็นอย่างไรถ้ามันถูกออกแบบมาสำหรับ qubits ประเภทจะเปลี่ยนหรือไม่

มันจะแตกต่างกันอย่างมากจนเข้าใจยากเหมือน C.

ปัญหาหลัก (ตามที่ฉันเข้าใจ) คือการคำนวณควอนตัมไม่ทำงานในลักษณะที่จำเป็นอย่างยิ่ง 'ทำสิ่งนี้จากนั้นจึงเป็นอย่างนั้น การพยายามบังคับความสามารถของ C ในการทำเช่นนั้นใน 'ตัวประมวลผล' ของคอมพิวเตอร์ควอนตัมจะเป็นไปไม่ได้ถ้าหากเป็นไปไม่ได้

อัลกอริธึมการเขียนโปรแกรมสำหรับคอมพิวเตอร์ควอนตัม (อีกครั้งที่ฉันเข้าใจพวกเขา) มีแนวโน้มที่จะใกล้เคียงกับรูปแบบการเขียนโปรแกรมการทำงาน / ลดตั้งแต่การคำนวณควอนตัมช่วยให้ผู้สมัครทั้งหมดในส่วน 'ลด' จะอยู่พร้อมกัน เมื่อสังเกต

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


ELI5 สำหรับอัลกอริทึมควอนตัมจะดีมาก
MaiaVictor

3

เพื่อให้การใช้ควอนตัมคอมพิวเตอร์เป็นไปได้อย่างมีประสิทธิภาพมากที่สุดเราจำเป็นต้องสามารถจัดการกับอินพุตและเอาต์พุตที่เป็นสถานะของการลงทะเบียนควอนตัมซึ่งไม่มีอนาล็อกแบบดั้งเดิม พูดจากประสบการณ์หลายปีในด้านข้อมูลควอนตัมฉันต้องเตือนคุณว่าไม่มีใครมีสัญชาตญาณที่ดีสำหรับเรื่องนี้นอกเหนือจากคณิตศาสตร์เชิงนามธรรมของ C * algebras และฉันก็บอกว่าแม้สัญชาตญาณนี้จะไม่เพียงพอ ถ้าคุณเริ่มสงสัยเกี่ยวกับทฤษฎีสัมพัทธภาพ

ระดับของปัญหาที่สามารถแก้ไขได้อย่างมีประสิทธิภาพในคอมพิวเตอร์ควอนตัมเป็นที่รู้จักกันในชื่อ BQP สำหรับพหุนามควอนตัมที่ถูก จำกัด นี่เป็นรุ่นควอนตัมของ BPP และคุณสามารถค้นหาข้อมูลเพิ่มเติมในเอกสารนี้: http://www.scottaaronson.com/papers/bqpph.pdf

เมื่อคืนนี้ฉันได้รับการบอกเล่าจากนักวิจัยอัลกอริธึมเชิงควอนตัมว่ามีปัญหาที่สำคัญมากที่สมบูรณ์แบบ BQP: การแก้ระบบเชิงเส้นของสมการ N คลาสสิกสามารถแก้ไขได้ในขั้นตอน O (N) ด้วยการกำจัดแบบเกาส์เซียน อัลกอริทึม Harrow-Hassidim-Lloyd ( http://arxiv.org/abs/0811.3171 ) แก้ปัญหาใน polylog (N) หากคุณยินดีที่จะยอมรับคำตอบที่มีการเข้ารหัสเป็นสถานะควอนตัม หากคุณต้องการใช้คอมพิวเตอร์ควอนตัมอย่างเต็มรูปแบบคุณจึงจำเป็นต้องมีประเภทที่สอดคล้องกับสถานะของการลงทะเบียนควอนตัม

แม้ว่าตอนนี้ฉันจะมีความเชี่ยวชาญเฉพาะด้านอยู่เล็กน้อย แต่ฉันก็ยังเสี่ยงต่อการเดาว่าคุณจะสามารถเขียนโปรแกรมคอมพิวเตอร์ควอนตัมได้ตราบใดที่คุณสามารถเข้าถึงประเภทที่เกี่ยวข้องกับสถานะเวทย์มนตร์ แม้ว่าจะเป็นแนวคิดที่ยาก แต่ก็ต้องมีการศึกษาค่อนข้างมาก

ได้รับการเตือนว่าเราเป็นเวลานานมากจากการมีภาษาโปรแกรมควอนตัมเพราะเราอยู่ในขั้นตอนดั้งเดิมของการวิจัยการคำนวณควอนตัม ขอควอนตัม C ตอนนี้อยากไป Alan Turing และขอให้เขาออกแบบ Python เรายังไม่มีหลอดสูญญากาศเวอร์ชันควอนตัมเลย!

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