อัลกอริทึมควอนตัมใด ๆ ที่พัฒนาขึ้นสำหรับ SAT แบบดั้งเดิมหรือไม่


29

อัลกอริธึมแบบคลาสสิคสามารถแก้ปัญหา 3-SAT ในเวลา (สุ่ม) หรือเวลา (กำหนดขึ้น) (การอ้างอิง: ขอบเขตบนที่ดีที่สุดใน SAT )1.3071n1.3303n

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

แน่นอนว่าอัลกอริธึมแบบดั้งเดิมนั้นสามารถใช้กับคอมพิวเตอร์ควอนตัมโดยสมมติว่ามีพื้นที่ทำงานเพียงพอ ฉันสงสัยว่าอัลกอริทึมควอนตัมโดยเนื้อแท้

คำตอบ:


21

ฉันคิดว่าเราสามารถได้รับขอบเขตบนที่ไม่สำคัญจากการคำนวณควอนตัมโดยเร่งอัลกอริธึมแบบสุ่มของSchöningสำหรับ 3-SAT อัลกอริธึมของSchöningรันในเวลาและการใช้เทคนิคการขยายความกว้างมาตรฐานหนึ่งสามารถรับอัลกอริทึมควอนตัมที่ทำงานในเวลาซึ่งเร็วกว่า อัลกอริทึมแบบดั้งเดิม(4/3)n(2/3)n=1.15n


เยี่ยมมากนั่นดูดี แสดงให้เห็นว่าฉันควรจะดูอัลกอริธึมคลาสสิคก่อนถาม! :) การอ่านเพิ่มเติมบางอย่างชี้ให้เห็นว่าอัลกอริทึมแบบสุ่มที่ดีที่สุดสำหรับ (ไม่ซ้ำกันไม่จำเป็น) คือ 3-SAT คือดังนั้นฉันเดาว่าเราน่าจะคาดหวังจากคอมพิวเตอร์ควอนตัม ... ขอบคุณ! 1.32065n1.1492n
Alex Meiburg

คุณอาจจะเพลิดเพลินกับกระดาษนี้: digitalcommons.utep.edu/cgi/…
Martin Schwarz

30

ตามจริงแล้ว wwjohnsmith1 กล่าวว่าคุณสามารถรับความเร็วรากที่สองผ่านอัลกอริทึมของSchöningสำหรับ 3-SAT แต่โดยทั่วไปแล้วสำหรับอัลกอริทึมของSchöningสำหรับ k-SAT ในความเป็นจริงอัลกอริทึมแบบสุ่มจำนวนมากสำหรับ k-SAT สามารถนำไปใช้งานได้เร็วขึ้นเป็นสองเท่าบนคอมพิวเตอร์ควอนตัม

เหตุผลสำหรับปรากฏการณ์ทั่วไปนี้มีดังต่อไปนี้ อัลกอริทึมแบบสุ่มจำนวนมากสำหรับ k-SAT ที่ทำงานในเวลา (โดยเป็นฟังก์ชันที่เพิ่มขึ้นอย่างมากของ ) ทำสิ่งที่แข็งแกร่งจริง ๆ ที่เป็นแกนหลักของพวกเขามีขั้นตอนวิธีการพหุนามเวลาที่ผลการมอบหมายความพึงพอใจถ้ามีมีความน่าจะเป็นอย่างน้อย1 / T ( n ) จากนี้เป็นที่ชัดเจนว่าถ้าคุณทำซ้ำอัลกอริทึมโพลีเวลานี้O ( T ( n ) )หลายครั้งและยอมรับว่าการรันใด ๆ ส่งคืนโซลูชันคุณจะได้รับอัลกอริทึมแบบสุ่มสำหรับ k-SAT ที่ทำงานในเวลาO(T(n)poly(n))T(n)n1/T(n)O(T(n)) )O(T(n)poly(n))

ตอนนี้แทนที่จะเรียกใช้อัลกอริธึมครั้งนี้คุณสามารถเรียกใช้แอมพลิจูดแอมพลิจูดของแอมพลิจูดเวลานี้ได้ การขยายความกว้างเป็นขั้นตอนวิธีควอนตัมทั่วไปที่สามารถตัดสินใจได้ว่าอัลกอริทึมอื่นยอมรับด้วยความน่าจะเป็น 0 หรือที่มีความน่าจะเป็น1 / Tใช้เพียงO ( O(T(n))1/Tใช้อัลกอริทึมนี้ การใช้แอมพลิจูดแอมพลิจูดกับตัวแก้ k-SAT ดังกล่าวจะให้อัลกอริทึมควอนตัมสำหรับ k-SAT กับเวลารันO ทันที(O(T)ซึ่งเร็วกว่ากำลังสองของกำลังสอง (ละเว้นคำโพลี (n))O(T(n)poly(n))

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