นี่เป็นวิธีการส่วนตัวของฉันในการพิจารณาว่าปัญหา (เช่นภาษา ) นั้นเป็นปัญหาที่สมบูรณ์หรือไม่ หากเงื่อนไขทั้งสองนี้ได้รับการยืนยันแล้ว: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 และอีกปัญหาหนึ่งที่มีการเปลี่ยนแปลงเล็กน้อยคือปัญหาสมบูรณ์
ฉันยังไม่พบตัวอย่างที่ดี (ฉันต้องการความช่วยเหลือที่นี่) แต่นี่เป็นปัญหาของการติดต่อทางไปรษณีย์ : นี่เป็นปัญหาที่ไม่สามารถตัดสินใจได้ แต่ตัวแปรบางอย่างสามารถตัดสินใจได้