อะไรคือปัญหาที่ไม่สำคัญที่เรารู้ว่าอัลกอริธึมปัจจุบันที่เรามีคือปัญหาที่เหมาะสมที่สุด (สำหรับเครื่องทัวริง)
และนี่พิสูจน์ได้อย่างไร
อะไรคือปัญหาที่ไม่สำคัญที่เรารู้ว่าอัลกอริธึมปัจจุบันที่เรามีคือปัญหาที่เหมาะสมที่สุด (สำหรับเครื่องทัวริง)
และนี่พิสูจน์ได้อย่างไร
คำตอบ:
อัลกอริทึมใด ๆ ที่ใช้เวลาเชิงเส้นและต้องอ่านอินพุตทั้งหมดจะต้องดีที่สุด เช่นเดียวกันกับความคิดเห็นของ Raphael อัลกอริทึมที่มีรันไทม์นั้นมีลำดับเดียวกันกับขนาดเอาต์พุตจะเหมาะสมที่สุด
หากการวัดความซับซ้อนที่คุณกำลังพิจารณาคือความซับซ้อนของแบบสอบถามเช่นจำนวนครั้งที่เครื่องต้องดูอินพุตเพื่อแก้ไขปัญหาเฉพาะจากนั้นมีปัญหามากมายที่เรามีอัลกอริธึมที่เหมาะสมที่สุด เหตุผลของเรื่องนี้ก็คือว่าขอบเขตที่ต่ำกว่าสำหรับความซับซ้อนแบบสอบถามจะง่ายต่อการบรรลุกว่าขอบเขตที่ต่ำกว่าสำหรับเวลาหรือความซับซ้อนพื้นที่ขอบคุณเทคนิคที่นิยมรวมทั้งวิธีการของฝ่ายตรงข้าม
อย่างไรก็ตามข้อเสียคือการวัดความซับซ้อนนี้ใช้ในการประมวลผลข้อมูลควอนตัมเป็นอย่างมากเพราะมันเป็นวิธีที่ง่ายในการพิสูจน์ช่องว่างระหว่างควอนตัมและพลังการคำนวณแบบดั้งเดิม อัลกอริทึมควอนตัมที่ฉาวโฉ่ที่สุดในกรอบนี้เป็นอัลกอริทึมของโกรเวอร์ รับสตริงไบนารีที่มีอยู่คนเดียวที่ฉันเช่นว่า x ฉัน = nคุณจะต้องไปหาฉัน คลาสสิก (โดยไม่ต้องใช้คอมพิวเตอร์ควอนตัม) อัลกอริธึมเล็กน้อยที่สุดเหมาะสมที่สุด: คุณจำเป็นต้องค้นหาสตริงนี้โดยเฉลี่ย n / 2ครั้งโดยเฉลี่ยเพื่อค้นหาผม Grover จัดทำอัลกอริทึมควอนตัมที่ทำเช่นนั้นใน O ( √เคียวรีกับสตริง สิ่งนี้ได้รับการพิสูจน์แล้วว่าเหมาะสมที่สุด
การเรียงลำดับการเปรียบเทียบโดยใช้ (การเรียงลำดับผสานกับชื่อหนึ่ง) นั้นเหมาะสมที่สุดการพิสูจน์เกี่ยวข้องกับการคำนวณความสูงของต้นไม้ที่มี n ! ใบไม้.
สมมติว่าเกมที่ไม่เหมือนใคร Conjecture, Khot, Kindler, Mossel และ O'donnell แสดงให้เห็นว่ามันเป็น NP-complete สำหรับ Max-Cut โดยประมาณที่ดีกว่าอัลกอริทึมของ Goemans และ Williamson ดังนั้นในแง่ที่ว่า G&W เหมาะสมที่สุด (สมมติว่า )
อัลกอริทึมแบบกระจายบางอย่างสามารถแสดงให้เห็นว่าเหมาะสมที่สุดเมื่อเทียบกับเงื่อนไขบางอย่าง (เช่นสัดส่วนของตัวประมวลผลที่เป็นปฏิปักษ์) แต่เมื่อคุณพูดถึงเครื่องทัวริงฉันคิดว่านั่นไม่ใช่ตัวอย่างที่คุณกำลังมองหา
สมมติว่าคุณจะได้รับการป้อนข้อมูลและจะขอให้ตัดสินใจว่าเครื่อง RAM Mยุติการป้อนข้อมูลxหลังจากทีขั้นตอน ตามทฤษฎีลำดับชั้นของเวลาอัลกอริธึมที่เหมาะสมที่สุดในการตัดสินใจว่านี่คือการจำลองการประมวลผลของM ( x )สำหรับขั้นตอนtซึ่งสามารถทำได้ในเวลาO ( )
(หมายเหตุ: สำหรับเครื่องจักรทัวริงการจำลองการประมวลผลใช้ขั้นตอนO ( t log t )เรารู้เพียงขอบเขตล่างของΩ ( t )ดังนั้นนี่จึงไม่ค่อยเหมาะสำหรับเครื่องทัวริงโดยเฉพาะ)
มีปัญหาอื่น ๆ ซึ่งประกอบด้วยรุ่นของปัญหาการหยุดพักเป็นกรณีย่อย ยกตัวอย่างเช่นการตัดสินใจว่าประโยคเป็นผลมาจากการ WS1S ต้องใช้เวลา2 ↑ ↑ O ( | θ | )และนี่คือที่ดีที่สุด
ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดย "ไม่สำคัญ" แต่เกี่ยวกับเรื่องนี้ } ภาษานี้ไม่ปกติจึง TM ใด ๆ การตัดสินใจจะต้องทำงานในΩ ( n log n ) อัลกอริธึมที่ง่าย (ข้าม 0 ทุก ๆ ค่า) นั้นเหมาะสม
หากคุณอนุญาตให้มีปัญหาโครงสร้างข้อมูลแบบไดนามิกเรารู้ว่าอัลกอริทึมที่เหมาะสมที่สุดสำหรับเวลาเชิงเส้น นี่อยู่ในโมเดลโพรบของเซลล์ซึ่งแข็งแรงพอ ๆ กับคำว่า RAM นั่นคือมันไม่ได้เป็นแบบ จำกัด เช่นต้นไม้ตัดสินใจพีชคณิต
ตัวอย่างหนึ่งคือการรักษาจำนวนเงินนำหน้าภายใต้การปรับปรุงแบบไดนามิก เราเริ่มต้นด้วยอาร์เรย์ของตัวเลขและเป้าหมายคือการรักษาโครงสร้างข้อมูลที่ช่วยให้การดำเนินการดังต่อไปนี้:
คุณสามารถสนับสนุนการดำเนินงานทั้งในเวลาที่มีโครงสร้างข้อมูลที่อยู่บนพื้นฐานของต้นไม้ไบนารีผลดีกับ[ ผม]ที่ใบ Patrascu และ Demaineแสดงให้เห็นว่านี้เป็นที่เหมาะสมสำหรับโครงสร้างข้อมูลใด ๆ ที่มีลำดับของnเพิ่มเติมและแบบสอบถามคำนำหน้าจำนวนเงินนั้นจะต้องใช้เวลาΩ ( n log n )เวลารวม
อีกตัวอย่างหนึ่งคือUnion find : เริ่มจากพาร์ติชั่นเป็น singletons และเก็บโครงสร้างข้อมูลที่อนุญาตการดำเนินการสองอย่าง:
Tarjanแสดงให้เห็นว่าคลาสสิก disjoint ตั้งโครงสร้างข้อมูลป่ากับสหภาพโดยการจัดอันดับและ heuristic การบีบอัดเส้นทางใช้เวลาต่อการดำเนินการโดยที่αเป็นฟังก์ชัน Ackermann ผกผัน Fredman และ Saksแสดงให้เห็นว่าสิ่งนี้ดีที่สุด: สำหรับโครงสร้างข้อมูลใด ๆ มีลำดับของn union และค้นหาการดำเนินการที่ต้องใช้Ω ( n α ( n ) )เวลา
อัลกอริทึมการสตรีมจำนวนมากมีขอบเขตบนที่ตรงกับขอบเขตล่าง
อัลกอริธึมการค้นหาคล้ายกันสองอย่างที่ [ความเข้าใจของฉัน] เหมาะสมที่สุดตามข้อ จำกัด บางประการเกี่ยวกับการสั่งซื้อ / การกระจายอินพุต อย่างไรก็ตามการนำเสนอของอัลกอริทึมโดยทั่วไปจะไม่เน้นการเพิ่มประสิทธิภาพนี้
ค้นหาส่วนสีทองเพื่อค้นหาค่าสูงสุดหรือต่ำสุด ( ส่วนปลาย) ของฟังก์ชัน unimodal ถือว่าอินพุตเป็นฟังก์ชัน unimodal พบว่าในเวลาลอการิทึมโดยเฉลี่ย ในขณะที่ฉันจำได้ว่าอาจมีการพิสูจน์ถึงความเหมาะสมในโครงสร้างหนังสือและการตีความโปรแกรมคอมพิวเตอร์โดย abelson & sussman
การค้นหาแบบไบนารี่ค้นหาจุดในเวลาลอการิทึมโดยเฉลี่ยในรายการที่เรียงลำดับ แต่ต้องป้อนข้อมูลเพื่อจัดเรียง
ฉันกำลังอ้างถึงวิกิพีเดียด้านบน แต่มันก็ไม่มีหลักฐานพิสูจน์ว่าเป็นสิ่งที่ดีที่สุดบางทีอาจมีบางแหล่งอ้างอิงอื่น ๆ ที่พิสูจน์ว่าผู้คนสามารถมองโลกในแง่ดีได้
อัลกอริทึมเวลาเชิงเส้นย่อยจำนวนมากมีขอบเขตบนที่ตรงกับขอบเขตที่ต่ำกว่าของพวกเขา