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


14

Daniel Sank พูดถึงในความคิดเห็นตอบสนองต่อความคิดเห็นของฉันว่าความเร็วคงที่สำหรับปัญหาที่ยอมรับอัลกอริทึมเวลาพหุนามนั้นน้อย108

ทฤษฎีความซับซ้อนเป็นวิธีที่หมกมุ่นเกินไปกับขีด จำกัด ขนาดที่ไม่มีขีด จำกัด สิ่งที่สำคัญในชีวิตจริงคือความรวดเร็วในการตอบปัญหาของคุณ

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

แต่ฉันเข้าใจว่านี่เป็นสถานการณ์ที่แตกต่างกันเล็กน้อยขณะนี้เรา:

  1. ไม่ได้เปรียบเทียบอัลกอริธึมสองตัวที่ทำงานบนคอมพิวเตอร์เครื่องเดียวกัน แต่อัลกอริทึมที่แตกต่างกันสอง (เล็กน้อย) บนคอมพิวเตอร์สองเครื่องที่แตกต่างกันมาก
  2. ตอนนี้เรากำลังทำงานกับคอมพิวเตอร์ควอนตัมซึ่งการวัดความสมบูรณ์แบบแบบดั้งเดิมอาจไม่เพียงพอ

โดยเฉพาะอย่างยิ่งวิธีการวิเคราะห์ขั้นตอนวิธีการเป็นเพียงวิธีการ ฉันคิดว่าวิธีการคำนวณแบบใหม่อย่างรุนแรงต้องการการตรวจสอบที่สำคัญของวิธีการประเมินประสิทธิภาพปัจจุบันของเรา!

ดังนั้นคำถามของฉันคือ:

เมื่อเปรียบเทียบประสิทธิภาพของอัลกอริธึมบนคอมพิวเตอร์ควอนตัมกับอัลกอริธึมบนคอมพิวเตอร์คลาสสิคการฝึกปฏิบัติของค่าคงที่ 'ละเว้น' เป็นวิธีปฏิบัติที่ดีหรือไม่?


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

1
@DanielSank ดังที่ได้กล่าวมาการเพิกเฉยค่าคงที่ในการวิเคราะห์อัลกอริทึมทำงานได้ค่อนข้างดีสำหรับการคำนวณแบบดั้งเดิม นอกจากนี้ยังเป็นมาตรฐาน de facto สำหรับนักวิจัยขั้นตอนวิธีการ ฉันค่อนข้างสนใจที่จะได้ยินเกี่ยวกับนักวิจัยของอัลกอริธึมที่ไม่เห็นด้วย เหตุผลหลักที่ฉันถามคำถามนี้ก็คือ 'การเพิกเฉยค่าคงที่' เป็นกฎมากกว่าไม่ได้ทำเพื่อนักวิจัยของอัลกอริทึมเกือบทุกชนิด เนื่องจากฉันแน่ใจว่าไซต์นี้จะมีผู้คนที่มีประโยชน์เช่นนี้มันน่าสนใจที่จะรู้ว่าควรปรับความคิดเช่นนี้เมื่อเปรียบเทียบควอนตัมกับคลาสสิกหรือไม่
จิ้งจกไม่ต่อเนื่อง

3
การสนทนาที่น่าสนใจเกี่ยวกับคำถามนี้อยู่ที่นี่
DanielSank

คำตอบ:


9

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

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

วิธีที่เป็นนามธรรมมากกว่านี้ในการศึกษาอัลกอริธึมคือและเป็นผลสำเร็จอย่างมาก แต่ตอนนี้เรากำลังเผชิญหน้ากับสถานการณ์ที่เรามีรูปแบบการคำนวณสองแบบ

  • หนึ่งอยู่ในสถานะขั้นสูงของวุฒิภาวะทางเทคโนโลยี (การคำนวณแบบดั้งเดิม); และ
  • หนึ่งอยู่ในสถานะที่ยังไม่บรรลุนิติภาวะมาก แต่กำลังพยายามที่จะตระหนักถึงแบบจำลองทางทฤษฎีซึ่งสามารถนำไปสู่การปรับปรุงเชิงซีมโทติคที่สำคัญ (การคำนวณควอนตัม)

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

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

สิ่งที่สำคัญจริง ๆ สำหรับการคำนวณเชิงปฏิบัติคือ - และได้รับเสมอ - ไม่ใช่แค่อัลกอริธึม แต่การนำอัลกอริธึมมาใช้ : อัลกอริทึมที่รับรู้ได้ในบางวิธีบนสถาปัตยกรรมที่แน่นอน การปฏิบัติร่วมกันของการวิเคราะห์เชิง asymptotic ซึ่งไม่สนใจปัจจัยคงที่ช่วยให้เราใส่ใจกับระบบเหตุผลทางคณิตศาสตร์สำหรับความแตกต่างในการทำงานของอัลกอริทึมและมีแรงจูงใจในทางปฏิบัติในโอกาสเหล่านั้นเมื่อความแตกต่างทางสถาปัตยกรรมไม่ใหญ่ .

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


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

1
@Discretelizard: ฉันชอบที่จะไม่ทิ้งค่าคงที่ในสถานการณ์ที่ค่าคงที่สร้างความแตกต่างในทางปฏิบัติ ค่าคงที่อย่างเช่น 1e8 ยังมีความสำคัญในการคำนวณแบบดั้งเดิมเช่นกัน แต่เราอาจไม่สนใจค่าคงที่ดังกล่าวเพื่อพยายามค้นหารายละเอียดอื่น ๆ ซึ่งอาจน่าสนใจมาก แต่มันก็เป็นความจริงที่ว่า 1e8 มีความสำคัญมากกว่าในการเปรียบเทียบระหว่างควอนตัมและเทคโนโลยีคลาสสิกตามที่พวกเขายืนอยู่ในปัจจุบันมากกว่าที่มันจะสำคัญในการคำนวณแบบดั้งเดิม
Niel de Beaudrap

5

O([ยังไม่มีข้อความ])ยังไม่มีข้อความ ) ที่มีค่อนข้าง จำกัด ด้วยเหตุนี้เราจึงไม่ทราบด้วยซ้ำว่าเราอยู่ในขีด จำกัด ของเส้นกำกับ ("พฤติกรรมที่แท้จริงของอุปกรณ์")

1010 prefactor ผมจะเรียกว่ามันมีประโยชน์สำหรับการใช้งาน

300


2

คุณไม่สามารถเพิกเฉยต่อปัจจัยคงที่เมื่อเปรียบเทียบการคำนวณควอนตัมกับการคำนวณแบบดั้งเดิม มันใหญ่เกินไป

ตัวอย่างเช่นนี่คือภาพจากสไลด์บางภาพที่ฉันนำเสนอเมื่อปีที่แล้ว:

ควอนตัมและประตู

สิ่งที่อยู่ด้านล่างคือโรงงานแห่งรัฐเวทย์มนตร์ พวกเขามีรอยเท้าของ 150k ทางกายภาพ qubits เนื่องจากเกต AND ใช้ 150K qubits เป็น 0.6 มิลลิวินาทีเราคาดการณ์ว่าปริมาตรกาลอวกาศของควอนตัมและเกตเป็นลำดับ 90 วินาที

หนึ่งในเป้าหมายของเพื่อนร่วมงานของฉันคือใช้ 1 cpu ต่อ 100 qubits เมื่อทำการแก้ไขข้อผิดพลาด ดังนั้นเราอาจพูดได้ว่า 90 qubit วินาทีต้องใช้ 0.9 cpu วินาทีในการทำงาน เราสร้างโครงสร้างควอนตัมให้มีประสิทธิภาพมากกว่าเดิมหลายเท่านับตั้งแต่สร้างภาพด้านบนเราจึงเรียกมันว่า 0.1 cpu วินาทีแทน

(มีข้อสันนิษฐานมากมายที่นำมาใช้ในการประมาณค่าเหล่านี้สถาปัตยกรรมชนิดใดอัตราความผิดพลาด ฯลฯ ฉันพยายามถ่ายทอดลำดับความคิดขนาดใหญ่)

ใช้เวลา 63 และประตูเพื่อทำการเพิ่ม 64 บิต 63 * 0.1 cpu วินาที ~ = 6 cpu วินาที Quantumly การเพิ่ม 64 บิตมีราคามากกว่า CPU ที่สอง คลาสสิกการเพิ่ม 64 บิตมีค่าใช้จ่ายน้อยกว่า CPU nanosecond มีความแตกต่างของปัจจัยคงที่ได้ง่ายที่นี่ 10,000 ล้าน หากคุณเปรียบเทียบกับเครื่องจักรแบบคลาสสิกแบบขนานเช่น GPU ตัวเลขนั้นแย่ลงกว่าเดิม คุณไม่สามารถมองข้ามปัจจัยคงที่ด้วยตัวเลขจำนวนมาก

ตัวอย่างเช่นพิจารณาอัลกอริทึมของ Grover ซึ่งช่วยให้เราสามารถค้นหาอินพุตที่น่าพอใจสำหรับฟังก์ชันในการประเมิน sqrt (N) ของฟังก์ชันแทนการประเมิน N เพิ่มในปัจจัยคงที่ที่ 10,000 ล้านและแก้จุดที่คอมพิวเตอร์ควอนตัมเริ่มต้องการการประเมินน้อยลง:

ยังไม่มีข้อความ>1010ยังไม่มีข้อความยังไม่มีข้อความ>1020

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

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


1

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

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

แต่ก่อนอื่นฉันคิดว่าการท่องเที่ยวระยะสั้นนั้นเป็นสิ่งจำเป็น

เรามีอัลกอริทึมที่มีประสิทธิภาพเมื่อใด

106

  1. P
  2. P2P Pสำหรับแต่ละคอมโพสิตเก็บที่ primes คู่ที่ใช้ในการสร้าง
  3. P2

P2PPP2 (บางทีเราอาจต้องการใช้แฮชแผนที่หรือบางอย่าง)

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

ดังนั้นฉันจะตอบกลับ: "ปลุกฉันเมื่อมีการวัดประสิทธิภาพที่ดีกว่า"

แล้วเราจะทำได้ดีกว่านี้ได้อย่างไร

หากเราสามารถทดสอบอัลกอริทึม 'กล่องดำ' ของเราได้ในทุกกรณีเราจะไม่สามารถถูกหลอกได้จากข้างต้น อย่างไรก็ตามนี่เป็นไปไม่ได้สำหรับสถานการณ์จริง (สิ่งนี้สามารถทำได้ในรูปแบบเชิงทฤษฎี!)

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

O(n3)

ดังนั้นจะทำอย่างไรกับค่าคงที่?

ฉันคิดเพียงแค่ระบุ "109 speedup, wow! "เป็นวิธีที่ไม่ดีในการจัดการกับคดีนี้ แต่ฉันก็คิดว่าการเพิกเฉยต่อผลลัพธ์นี้ก็ไม่ดีเช่นกัน

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

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