ฉันมีปัญหากับการตั้งเวลา ฉันต้องการพิสูจน์ว่าปัญหาสมบูรณ์ NP อะไรคือวิธีการพิสูจน์ว่า NP สมบูรณ์?
ฉันมีปัญหากับการตั้งเวลา ฉันต้องการพิสูจน์ว่าปัญหาสมบูรณ์ NP อะไรคือวิธีการพิสูจน์ว่า NP สมบูรณ์?
คำตอบ:
ในการแสดงปัญหา NP เสร็จสมบูรณ์คุณต้อง:
กล่าวอีกนัยหนึ่งคือจากข้อมูลบางอย่างCคุณสามารถสร้างอัลกอริทึมเวลาพหุนามVที่จะตรวจสอบทุกอินพุตที่เป็นไปได้Xว่าXอยู่ในโดเมนของคุณหรือไม่
พิสูจน์ว่าปัญหาของการจุดสุดยอดครอบคลุม (นั่นคือกราฟบางG, ไม่ได้มีชุดจุดสุดยอดหน้าปกของขนาดkดังกล่าวที่ขอบในทุก ๆGมีอย่างน้อยหนึ่งจุดสุดยอดในชุดฝาครอบ ?) อยู่ใน NP:
ข้อมูลที่เราป้อนXคือกราฟGและตัวเลขบางส่วนk(มาจากนิยามปัญหา)
ใช้ข้อมูลของเราCเป็น "จุดยอดย่อยที่เป็นไปได้ในกราฟGขนาดk"
จากนั้นเราสามารถเขียนอัลกอริทึมVที่ได้รับG, kและCจะกลับไม่ว่าจะเป็นชุดของจุดที่มีฝาครอบจุดสุดยอดสำหรับGหรือไม่ในเวลาพหุนาม
จากนั้นทุกกราฟG, ถ้ามีบางคน "ส่วนย่อยที่เป็นไปได้ของจุดในGขนาดk" ซึ่งเป็นฝาครอบจุดสุดยอดแล้วอยู่ในGNP
โปรดทราบว่าเราไม่จำเป็นต้องค้นหาCในเวลาพหุนาม ถ้าทำได้ปัญหาจะอยู่ใน `P
หมายเหตุว่าขั้นตอนวิธีการVควรจะทำงานสำหรับทุก สำหรับบางคนG Cสำหรับการป้อนข้อมูลทุกครั้งควรมีข้อมูลที่สามารถช่วยเราตรวจสอบได้ว่าอินพุตนั้นอยู่ในโดเมนที่เป็นปัญหาหรือไม่ นั่นคือไม่ควรมีอินพุตที่ไม่มีข้อมูลอยู่
สิ่งนี้เกี่ยวข้องกับการรับปัญหา NP-complete ที่รู้จักเช่นSATชุดของนิพจน์บูลีนในรูปแบบ:
(A หรือ B หรือ C) และ (D หรือ E หรือ F) และ ...
ที่แสดงออกคือพอใจที่จะมีการตั้งค่าที่มีอยู่บางอย่างสำหรับ booleans เหล่านี้ซึ่งจะทำให้การแสดงออกที่แท้จริง
จากนั้นลดปัญหา NP-สมบูรณ์ในการแก้ไขปัญหาของคุณได้ในเวลาพหุนาม
นั่นคือให้อินพุตบางส่วนXสำหรับSAT(หรือปัญหาที่สมบูรณ์ของ NP ที่คุณใช้) สร้างอินพุตYสำหรับปัญหาของคุณเช่นXใน SAT ถ้าYเป็นปัญหาของคุณเท่านั้น ฟังก์ชั่นf : X -> Yจะต้องทำงานในเวลาพหุนาม
ในตัวอย่างข้างต้นใส่Yจะเป็นกราฟและขนาดของฝาครอบจุดสุดยอดGk
สำหรับการพิสูจน์ที่สมบูรณ์คุณต้องพิสูจน์ทั้งคู่:
ที่Xอยู่ในSAT=> Yในปัญหาของคุณ
และYในการแก้ไขปัญหาของคุณ => ในXSAT
คำตอบของ marcogมีลิงก์กับปัญหา NP-complete อื่น ๆ ที่คุณสามารถลดปัญหาของคุณได้
เชิงอรรถ: ในขั้นตอนที่ 2 ( พิสูจน์ว่าเป็น NP-hard ) การลดปัญหา NP-hard อื่น ๆ (ไม่จำเป็นต้องสมบูรณ์แบบ NP) ให้เป็นปัญหาปัจจุบันเนื่องจากปัญหา NP-complete เป็นส่วนย่อยของปัญหา NP-hard (นั่นคือ ยังอยู่ใน NP)
คุณต้องลดปัญหา NP-Complete ให้กับปัญหาที่คุณมี หากการลดสามารถทำได้ในเวลาพหุนามแสดงว่าคุณได้พิสูจน์แล้วว่าปัญหาของคุณสมบูรณ์แบบ NP หากปัญหาอยู่ใน NP แล้วเนื่องจาก:
ไม่ใช่เรื่องง่ายไปกว่าปัญหา NP-complete เนื่องจากสามารถลดเป็นพหุนามซึ่งทำให้ปัญหา NP-Hard
ดูส่วนท้ายของhttp://www.ics.uci.edu/~eppstein/161/960312.htmlสำหรับข้อมูลเพิ่มเติม
เพื่อที่จะพิสูจน์ว่าปัญหา L นั้นสมบูรณ์เราต้องทำตามขั้นตอนต่อไปนี้:
ขั้นแรกคุณแสดงให้เห็นว่าอยู่ใน NP เลย
จากนั้นคุณจะพบปัญหาอื่นที่คุณรู้อยู่แล้วว่า NP สมบูรณ์และแสดงให้เห็นว่าคุณลดปัญหา NP Hard ลงในปัญหาของคุณได้อย่างไร