ฉันถูกต้องในการทำความเข้าใจว่าการพิสูจน์ปัญหา NP สมบูรณ์หรือไม่เป็นความสำเร็จของการวิจัยหรือไม่ ถ้าเป็นเช่นนั้นทำไม
ฉันถูกต้องในการทำความเข้าใจว่าการพิสูจน์ปัญหา NP สมบูรณ์หรือไม่เป็นความสำเร็จของการวิจัยหรือไม่ ถ้าเป็นเช่นนั้นทำไม
คำตอบ:
อาลีคำถามที่ดี
สมมติว่าคุณต้องการแสดงให้เห็นว่าปัญหาบางอย่าง P ยากที่คำนวณได้ ตอนนี้คุณสามารถคาดเดาได้ว่า P นั้นยากเพียงแค่ขึ้นอยู่กับความจริงที่ว่าเรายังไม่มีอัลกอริธึมที่มีประสิทธิภาพเลย แต่นี่เป็นหลักฐานที่ค่อนข้างบอบบางใช่ไหม อาจเป็นได้ว่าเราพลาดวิธีที่ดีในการดู P ซึ่งจะทำให้แก้ไขได้ง่ายมาก ดังนั้นเพื่อคาดเดาว่า P นั้นยากเราต้องการรวบรวมหลักฐานเพิ่มเติม การลดลงมอบเครื่องมือที่จะทำอย่างนั้น! หากเราสามารถลดปัญหาธรรมชาติอื่น ๆ Q เป็น P ได้เราก็แสดงให้เห็นว่า P เป็นอย่างน้อยอย่างหนักเหมือน Q แต่ Q อาจเป็นปัญหาจากคณิตศาสตร์ที่แตกต่างกันโดยสิ้นเชิงและผู้คนอาจต้องดิ้นรนมานานหลายทศวรรษ . ดังนั้นเราสามารถดูความล้มเหลวของเราในการค้นหาอัลกอริทึมที่มีประสิทธิภาพสำหรับ Q เพื่อเป็นหลักฐานว่า P นั้นยาก หากเรามีคำถามมากมายเช่นนี้ '
นี่คือสิ่งที่ทฤษฎีของ NP-ครบถ้วนสมบูรณ์ให้ หากคุณพิสูจน์ว่าปัญหาของคุณเป็นปัญหาที่สมบูรณ์แล้วคุณได้ผูกความแข็งของมันเข้ากับความแข็งของปัญหาอื่น ๆ หลายร้อยปัญหาที่คุณสนใจในชุมชนต่างๆ คุณสามารถมั่นใจได้ว่าปัญหาของคุณนั้นยาก
การพิสูจน์ปัญหา NP-Complete เป็นความสำเร็จของการวิจัยเพราะมันช่วยให้คุณไม่ต้องหาวิธีแก้ปัญหาที่มีประสิทธิภาพและแน่นอนสำหรับปัญหาทั่วไปที่คุณกำลังศึกษาอยู่ มันพิสูจน์ให้เห็นว่าปัญหาของคุณเป็นสมาชิกของคลาสของปัญหาที่ยากมากที่ไม่มีใครสามารถค้นหาอัลกอริธึมที่มีประสิทธิภาพและแน่นอนสำหรับปัญหาใด ๆ และวิธีแก้ปัญหาใด ๆ ก็จะเป็นทางออกสำหรับทุกปัญหา ปัญหาที่เกิดขึ้น
มันมักจะเป็นหินก้าวเพราะปัญหาของคุณยังคงอยู่ที่นั่น - คุณเพียงแค่ต้องผ่อนคลายความต้องการของคุณ โดยปกติแล้วผู้คนจะพยายามหาวิธีผ่อนคลาย "อย่างมีประสิทธิภาพ", "แน่นอน" หรือ "ทั่วไป" อย่างน้อยหนึ่งรายการ ไม่มีประสิทธิภาพและแน่นอนและโดยทั่วไปคือความพยายามในการค้นหาค่าคงที่ที่ดีกว่าและดีกว่าในเลขชี้กำลังสำหรับอัลกอริทึมเหล่านี้ ที่มีประสิทธิภาพและไม่แน่นอน - และ - ทั่วไปคือการศึกษาขั้นตอนวิธีการประมาณ Efficient-and-exact-but-not-general คือการศึกษาความสามารถในการแก้ไขพารามิเตอร์และการค้นหา subclasses ของอินพุตซึ่งสามารถหาอัลกอริธึมที่มีประสิทธิภาพได้
ลองดูสองกรณีที่แตกต่างกันว่าทำไมคนสองคนที่แตกต่างกันต้องการที่จะพิสูจน์ปัญหา :
a) คุณกำลังทำงานในโครงการซอฟต์แวร์ หลังจากระบุระบบของคุณแล้วคุณจะเริ่มกำหนดสถาปัตยกรรมของแอปพลิเคชันของคุณ ซึ่งรวมถึงการแยกแยะปัญหาที่มีขนาดใหญ่ / ต้องการแอปพลิเคชันทำหน้าที่แก้ไขปัญหาที่เล็กกว่า สมมติว่าคุณได้รับมอบหมายให้ค้นหาอัลกอริทึมที่มีประสิทธิภาพ (เราไม่ต้องการให้แอปพลิเคชันของเราช้า!) สำหรับปัญหาที่มีขนาดเล็กลง หลังจากดิ้นรนมาระยะหนึ่งคุณไม่สามารถหาอัลกอริทึมพหุนาม จากนั้นคุณอาจคิดว่า: ปัญหานี้อาจจะยากมากดังนั้นจึงเป็นเรื่องยากมากที่จะหาอัลกอริทึมที่มีประสิทธิภาพ โดยพิสูจน์ให้เห็นว่าปัญหาคือคุณมีหลักฐานบางอย่างสำหรับการคาดเดาของคุณและคุณควรเริ่มพิจารณาแนวทางอื่น (เช่นการแก้ไขปัญหาเพื่อให้ง่ายขึ้น)
b) คุณกำลังค้นคว้าทฤษฎีความซับซ้อน ตามคำจำกัดความคุณต้องการระบุลักษณะปัญหา (หรือคลาสของปัญหา) ตามจำนวนทรัพยากรที่ต้องการเช่นความยากในการแก้ปัญหา ด้วยการพิสูจน์ว่าปัญหาบางอย่างคือคุณจะได้รับข้อมูลเชิงลึก:
การสรุปลักษณะปัญหาช่วยให้คุณใช้เทคนิคทั่วไป โดยการศึกษาชั้นเรียนที่เกี่ยวข้องกับคุณสามารถคิดในระดับนามธรรมโดยไม่ต้องกังวลเกี่ยวกับเฉพาะของปัญหานี้ซึ่งเป็นเรื่องธรรมดาในวิชาคณิตศาสตร์และวิทยาศาสตร์โดยทั่วไป การทำงานกับคลาสแทนสมาชิกแต่ละคนช่วยให้คุณใช้เทคนิคที่รู้จักและใช้ความเข้าใจของคุณกับวัตถุจำนวนมากแทนการใช้เพียงอันเดียว
แต่ละปัญหามีหลายการเชื่อมต่อกับปัญหาอื่น ๆ นอกจากนี้ยังมีความสัมพันธ์ระหว่างปัญหาและคลาสที่ซับซ้อน
ดังนั้นการจำแนกปัญหาหนึ่งข้อเนื่องจาก NPC มักจะให้ข้อมูลเชิงลึกเกี่ยวกับปัญหาอื่น ๆ รวมถึงคลาสที่ซับซ้อน
ตัวอย่างเช่นนำปัญหากราฟ isomorphism (GI) ในกระดาษต่อไปนี้:
ยูอี้ชนิง, กราฟมอร์ฟอยู่ในลำดับชั้นต่ำ , การดำเนินการของ 4 ปีทัศนะในด้านทฤษฎีวิทยาการคอมพิวเตอร์ 1987, 114-124; เช่น: วารสารคอมพิวเตอร์และวิทยาศาสตร์ระบบฉบับ 37 (1988), 312–323
มันพิสูจน์แล้วว่าถ้า GI ∈ NPC ดังนั้นพหุนามลำดับชั้น (PH) จะยุบลงไปสู่ระดับที่สอง ซึ่งจะเป็นการพัฒนาครั้งใหญ่ในทฤษฎีความซับซ้อนของโครงสร้าง