ฉันมีปัญหากับการตั้งเวลา ฉันต้องการพิสูจน์ว่าปัญหาสมบูรณ์ 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
" ซึ่งเป็นฝาครอบจุดสุดยอดแล้วอยู่ในG
NP
โปรดทราบว่าเราไม่จำเป็นต้องค้นหา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
จะเป็นกราฟและขนาดของฝาครอบจุดสุดยอดG
k
สำหรับการพิสูจน์ที่สมบูรณ์คุณต้องพิสูจน์ทั้งคู่:
ที่X
อยู่ในSAT
=> Y
ในปัญหาของคุณ
และY
ในการแก้ไขปัญหาของคุณ => ในX
SAT
คำตอบของ 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 ลงในปัญหาของคุณได้อย่างไร