การเขียนโปรแกรมอัลกอริทึมควอนตัมแตกต่างกันอย่างไร? ภาษาเช่น C จะเป็นอย่างไรถ้ามันถูกออกแบบมาสำหรับ qubits ประเภทจะเปลี่ยนหรือไม่
การเขียนโปรแกรมอัลกอริทึมควอนตัมแตกต่างกันอย่างไร? ภาษาเช่น C จะเป็นอย่างไรถ้ามันถูกออกแบบมาสำหรับ qubits ประเภทจะเปลี่ยนหรือไม่
คำตอบ:
เมื่อฉันดูในช่วงเวลาที่ผ่านมามันเป็นที่ชัดเจนว่าอัลกอริทึมควอนตัมในขณะที่ไม่เร็วโดยเฉพาะอย่างยิ่งอนุญาตให้ขนานขนานใหญ่ชี้แจง ดังนั้นพวกเขาจะส่องแสงในกรณีที่เกี่ยวข้องกับการค้นหาในช่องว่างที่ไม่สามารถใช้งานได้กับฮาร์ดแวร์ตามลำดับแม้กระทั่งฮาร์ดแวร์ที่เรียงตามลำดับแบบขนาน
หนึ่งในคุณสมบัติของอัลกอริควอนตัมคือการที่พวกเขาจะต้องย้อนกลับได้ อัลกอริทึมที่กำหนดใด ๆ สามารถแปลเป็นหนึ่งที่สามารถย้อนกลับได้โดยเพิ่มการเก็บบันทึกเพียงพอที่จะอนุญาตให้เรียกใช้ย้อนหลังได้
คุณสมบัติอีกอย่างคือการได้รับคำตอบจากอัลกอริธึมเชิงควอนตัมนั้นเป็นเรื่องที่ได้รับความนิยมเพราะสิ่งที่คุณได้รับเมื่อสิ้นสุดการคำนวณคือคำตอบหลาย ๆ คำแต่ละครั้งมีความน่าจะเป็นของตัวเอง จะต้องดำเนินการในลักษณะที่คำตอบที่คุณต้องการมีโอกาสสูง ซึ่งอาจเกี่ยวข้องกับการรันอัลกอริทึมไปข้างหน้าและข้างหลังหลาย ๆ ครั้ง
ตรวจสอบโกรเวอร์ค้นหาอัลกอริทึม
แทรกเพื่อแสดงการทำงานพื้นฐานของอัลกอริทึมของ Grover สมมติว่ามีปัญหาการค้นหา คำตอบที่เป็นไปได้คือ 0, 1, 2 และ 3 แต่คำตอบที่ถูกต้องคือ 2 ดังนั้นคอมพิวเตอร์ควอนตัมจึงถูกวางซ้อนทับกันทั้งสี่สถานะและผ่านลำดับขั้นตอนเพื่อดูว่าอันไหนถูกต้องและ กลับค่าแอมพลิจูดของมันเช่นจุดสีดำและลูกศรด้านล่าง:
คุณสามารถเห็นลูกศร 2 ที่กลับด้านในเครื่อง แต่ไม่มีวิธีที่จะบอกว่าข้างนอกเพราะมีเพียงความน่าจะเป็นที่มองเห็นได้จากด้านนอกซึ่งเป็นแอมพลิจูดกำลังสองและเมื่อกำลังสองพวกมันเท่ากันทั้งหมด
อย่างไรก็ตามช่วงกว้างของคลื่นมีค่าเฉลี่ยที่ระบุโดยเส้นสีแดงและคอมพิวเตอร์ที่สามารถทำไปผ่านลำดับขั้นตอนที่ตีความแต่ละกว้างเกี่ยวกับค่าเฉลี่ย เมื่อเสร็จแล้วแอมพลิจูดและความน่าจะเป็นจะถูกโอนไปสู่สถานะ 2 ซึ่งเป็นคำตอบที่ถูกต้อง ! ดังนั้นหากเครื่องถูกตรวจพบสถานะ 2 ส่องออกมา
มันไม่ง่ายอย่างนี้ โดยทั่วไปจะใช้เวลาหลายรอบของเครื่องไปข้างหน้าและข้างหลังย้อนกลับในตอนท้ายของแต่ละรอบเพื่อเพิ่มความน่าจะเป็นของคำตอบที่เหมาะสม นอกจากนี้เราต้องระวังอย่าทำเกินกว่าจำนวนครั้งนั้นเพราะมันสามารถย้อนกลับได้ง่าย
แล้วทำไมพวกเขาถึงบอกว่าคอมพิวเตอร์ควอนตัมนั้นเร็วขนาดนี้ เพราะทุกครั้งที่คุณเพิ่มจำนวน qubits เป็นสองเท่าคุณจะเพิ่มความเหมือนของสี่เหลี่ยมจัตุรัส แต่คุณไม่ต้องยกกำลังสองของระยะเวลาดังนั้นในที่สุดมันจึงชนะ
ไม่สนุกเหรอ?
ฉันมีความสนใจเป็นการส่วนตัวว่าจะนำไปใช้กับการตรวจสอบความถูกต้องของซอฟต์แวร์ได้อย่างไร ตอนนี้เราทดสอบซอฟต์แวร์โดยการโยนอินพุตทดสอบจำนวนมากและ (เพื่อให้ง่ายเกินไป) เพื่อดูว่ามันกระทบ Assert หรือไม่ ในคอมพิวเตอร์ควอนตัมมันอาจเป็นไปได้ที่จะเรียกใช้มันขนานกับชุดของอินพุตที่มีความหนาแน่นมากขึ้น
เช่นถ้าอินพุตไปยังอัลกอริทึมเป็น 128 ไบต์หรือ 1024 บิตมี 2 ^ 1024 หรือ 10 ^ 308 อินพุตที่แตกต่างกัน ไม่มีวิธีการทดสอบว่าอินพุตจำนวนมากบนคอมพิวเตอร์ทั่วไป แต่คอมพิวเตอร์ควอนตัมสามารถลองทั้งหมดในแบบคู่ขนาน
ภาษาเช่น C จะเป็นอย่างไรถ้ามันถูกออกแบบมาสำหรับ qubits ประเภทจะเปลี่ยนหรือไม่
มันจะแตกต่างกันอย่างมากจนเข้าใจยากเหมือน C.
ปัญหาหลัก (ตามที่ฉันเข้าใจ) คือการคำนวณควอนตัมไม่ทำงานในลักษณะที่จำเป็นอย่างยิ่ง 'ทำสิ่งนี้จากนั้นจึงเป็นอย่างนั้น การพยายามบังคับความสามารถของ C ในการทำเช่นนั้นใน 'ตัวประมวลผล' ของคอมพิวเตอร์ควอนตัมจะเป็นไปไม่ได้ถ้าหากเป็นไปไม่ได้
อัลกอริธึมการเขียนโปรแกรมสำหรับคอมพิวเตอร์ควอนตัม (อีกครั้งที่ฉันเข้าใจพวกเขา) มีแนวโน้มที่จะใกล้เคียงกับรูปแบบการเขียนโปรแกรมการทำงาน / ลดตั้งแต่การคำนวณควอนตัมช่วยให้ผู้สมัครทั้งหมดในส่วน 'ลด' จะอยู่พร้อมกัน เมื่อสังเกต
โปรดทราบว่ามีอัลกอริทึมที่มีอยู่สำหรับคอมพิวเตอร์ควอนตัมแม้ว่าอุปกรณ์จะไม่มีอยู่ในการรัน ยกตัวอย่างเช่นอัลกอริทึมของไซม่อน
เพื่อให้การใช้ควอนตัมคอมพิวเตอร์เป็นไปได้อย่างมีประสิทธิภาพมากที่สุดเราจำเป็นต้องสามารถจัดการกับอินพุตและเอาต์พุตที่เป็นสถานะของการลงทะเบียนควอนตัมซึ่งไม่มีอนาล็อกแบบดั้งเดิม พูดจากประสบการณ์หลายปีในด้านข้อมูลควอนตัมฉันต้องเตือนคุณว่าไม่มีใครมีสัญชาตญาณที่ดีสำหรับเรื่องนี้นอกเหนือจากคณิตศาสตร์เชิงนามธรรมของ 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 เรายังไม่มีหลอดสูญญากาศเวอร์ชันควอนตัมเลย!