กฎของหัวแม่มือที่จะรู้ว่าปัญหาอาจจะเป็นปัญหาที่สมบูรณ์


26

คำถามนี้ได้รับแรงบันดาลใจจากความคิดเห็นใน StackOverflow

นอกเหนือจากการรู้ปัญหาที่สมบูรณ์แบบของหนังสือ Garey Johnson และอื่น ๆ อีกมากมาย; มีกฎของหัวแม่มือที่จะรู้ว่าปัญหาดูเหมือนว่าสมบูรณ์ NP ปัญหาหรือไม่

ฉันไม่ได้มองหาบางสิ่งที่เข้มงวด แต่เป็นสิ่งที่ใช้ได้ผลในกรณีส่วนใหญ่

แน่นอนทุกครั้งที่เราต้องพิสูจน์ว่าปัญหานั้นเกิดจากปัญหา NP-complete หรือตัวแปรหนึ่งของปัญหา NP-complete แต่ก่อนที่จะรีบไปพิสูจน์มันจะเป็นการดีถ้ามีความมั่นใจในผลบวกของการพิสูจน์


8
กฎง่ายๆของฉันนั้นง่าย: ถ้ามันไม่ได้มีกลิ่นเหมือนปัญหาที่ฉันคุ้นเคยอยู่แล้วมันอาจจะยาก (หรือแย่กว่านั้น)
JeffE

12
@JeffE แน่นอนคุณคุ้นเคยกับปัญหาค่อนข้างน้อยแล้วในตอนนี้ ... ผู้มาใหม่สำหรับ CS อาจไม่สามารถใช้กฎเดียวกันได้
Joe

1
@Joe: จริง อาจจะเป็นการดีกว่าถ้าจะพูดว่า: หากคุณไม่ได้รับปัญหาจากตำราเรียนมันอาจเป็นปัญหาที่ยาก
JeffE

2
อีกวิธีหนึ่งในการทำสิ่งนี้: เป็นเรื่องที่น่าแปลกใจเมื่อปัญหาไม่ได้เกิดจากปัญหาNP-hard มากกว่าเมื่อเกิดปัญหาที่เป็นปัญหาที่เกิดขึ้นจริง
Joe

คำตอบ:


15

นี่เป็นวิธีการส่วนตัวของฉันในการพิจารณาว่าปัญหา (เช่นภาษา ) นั้นเป็นปัญหาที่สมบูรณ์หรือไม่ หากเงื่อนไขทั้งสองนี้ได้รับการยืนยันแล้ว:L

  • ฉันรู้สึกว่าการทดสอบถ้าอินสแตนซ์ที่อยู่ในLหมายความว่าฉันต้องตรวจสอบชุดค่าผสมทั้งหมดของการเรียงลำดับบางอย่างIL
  • และไม่มีทางที่จะแยกชุดค่าผสมดังกล่าวออกเป็นสองชุดย่อย

จากนั้นอาจเป็น NP-hard ได้เป็นอย่างดีL

ตัวอย่างเช่นปัญหาผลรวมย่อยฉันต้องแสดงรายการชุดย่อยทั้งหมดของและตรวจสอบว่ามีผลรวมที่เป็นศูนย์หรือไม่ ฉันสามารถแยกSออกเป็นชุดย่อยขนาดเล็กสองชุดS 1และS 2ที่ฉันจะตรวจสอบคุณสมบัติที่คล้ายกันได้หรือไม่ หืมม ... ไม่จริงๆ บางทีถ้าฉันตรวจสอบการรวมกันของS 1และS 2 ทั้งหมดแต่จะนานมาก ...SSS1S2S1S2

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

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

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

ฉันยังไม่พบตัวอย่างที่ดี (ฉันต้องการความช่วยเหลือที่นี่) แต่นี่เป็นปัญหาของการติดต่อทางไปรษณีย์ : นี่เป็นปัญหาที่ไม่สามารถตัดสินใจได้ แต่ตัวแปรบางอย่างสามารถตัดสินใจได้


7
+1

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

ตัวอย่างคือปัญหาที่ตามมายาวนานที่สุดซึ่งอยู่ในลำดับ P สำหรับ 2 ลำดับ แต่เข้าสู่ NP-Hard มากกว่า
Christian Vielma

14

อีกมุมมองหนึ่งเกี่ยวกับปัญหาความแข็งมาจากชุมชนเกมและปริศนาซึ่งกฎของหัวแม่มือก็คือ 'ปัญหายากเท่าที่จะเป็นได้' (และข้อยกเว้นมาจากโครงสร้างที่ซ่อนอยู่ในปัญหา - ตัวอย่างของปัจจัยในมัสซิโม ความคิดเห็นเป็นตัวอย่างที่ดีของสิ่งนี้); เคล็ดลับนั้นมาในการทำความเข้าใจว่าปัญหานั้นยากเพียงใด:

  • n
  • ปริศนาที่เกี่ยวข้องกับลำดับของการเคลื่อนไหวภายในพื้นที่รัฐล้อมรอบอยู่ใน PSPACE (ตั้งแต่ 'ต้นไม้ย้าย' โดยทั่วไปสามารถสำรวจได้ในลักษณะความลึกมาตรฐานแรกต้องการเพียงการจัดเก็บสำหรับจำนวนพหุนามของการกำหนดค่า) และมีแนวโน้มที่จะสมบูรณ์ PSPACE; ตัวอย่างคลาสสิกของเรื่องนี้คือ Rush Hour
  • เกมที่มีความลึกที่ จำกัด ขอบเขตแบบพหุนามก็อยู่ใน PSPACE เช่นกัน สิ่งนี้ใช้การจำแนกลักษณะของ PSPACE เป็น APTIME เนื่องจากการกำหนดลักษณะขั้นต่ำของกลยุทธ์เลียนแบบเครื่องจักรทัวริงสลับกับลักษณะของมันอย่างสมบูรณ์แบบเนื่องจาก 'มีการเคลื่อนไหวสำหรับผู้เล่น A เช่นว่าสำหรับการตอบแต่ละครั้งย้ายจากผู้เล่น B จึงมีคำตอบ ย้ายไปหาผู้เล่น A เช่นนั้น ... 'ฯลฯ พวกเขามีแนวโน้มที่จะเป็น PSPACE สมบูรณ์ เกม Tic-Tac-Toe ทั้ง Hex และ generalized เป็นตัวอย่างของสิ่งนี้
  • เกมที่ไม่มีข้อ จำกัด เกี่ยวกับความลึกของต้นไม้ แต่เล่นในพื้นที่ จำกัด (พหุนาม) อยู่ใน EXPTIME เนื่องจากมีตำแหน่งรวมทั้งหมดจำนวนมากและกราฟทั้งหมดสามารถสร้างและสำรวจในเวลาพหุนามในจำนวนตำแหน่ง (และรวมทั้งเลขชี้กำลัง) ; เกมเหล่านี้โดยทั่วไปจะสมบูรณ์แบบยกเว้น หมากรุกหมากฮอสและไปทั้งหมดตกอยู่ในประเภทนี้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.