ความแตกต่างระหว่าง NP, NP-Complete และ NP-Hard คืออะไร


1107

ความแตกต่างระหว่างNP , NP-CompleteและNP-Hardคืออะไร

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

คำตอบ:


1438

ฉันคิดว่าคุณกำลังมองหาคำจำกัดความที่ใช้งานง่ายเนื่องจากคำจำกัดความทางเทคนิคต้องใช้เวลาพอสมควรในการทำความเข้าใจ ก่อนอื่นให้จำแนวคิดเบื้องต้นที่จำเป็นเพื่อทำความเข้าใจคำจำกัดความ

  • ปัญหาการตัดสินใจ : ปัญหาเกี่ยวกับคำตอบใช่หรือไม่ใช่

ตอนนี้ให้เรากำหนดผู้เรียนซับซ้อน

P

P เป็นระดับที่ซับซ้อนที่แสดงถึงชุดของปัญหาการตัดสินใจทั้งหมดที่สามารถแก้ไขได้ในเวลาพหุนาม

นั่นคือตัวอย่างของปัญหาคำตอบคือใช่หรือไม่ใช่สามารถตัดสินใจได้ในเวลาพหุนาม

ตัวอย่าง

เมื่อกำหนดกราฟที่เชื่อมต่อGแล้วจุดยอดของสีสามารถใช้สองสีเพื่อไม่ให้ขอบเป็นสีเดียว?

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


NP

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

ซึ่งหมายความว่าหากมีคนให้ตัวอย่างปัญหาและใบรับรอง (บางครั้งเรียกว่าพยาน) กับคำตอบที่ใช่เราสามารถตรวจสอบว่ามันถูกต้องในเวลาพหุนาม

ตัวอย่าง

การรวมตัวประกอบจำนวนเต็มอยู่ใน NP นี่เป็นปัญหาที่ให้จำนวนเต็มnและmมีจำนวนเต็มfด้วย1 < f < mที่fหารn( fเป็นปัจจัยเล็ก ๆn) หรือไม่?

นี่เป็นปัญหาในการตัดสินใจเพราะคำตอบคือใช่หรือไม่ใช่ ถ้ามีคนมือเราเป็นตัวอย่างของปัญหา (เพื่อให้พวกเขามอบให้เราจำนวนเต็มnและm) และจำนวนเต็มfด้วย1 < f < mและอ้างว่าfเป็นปัจจัยของn(ใบรับรอง) เราสามารถตรวจสอบคำตอบในเวลาพหุนามn / fโดยการดำเนินการในส่วนที่


NP-สมบูรณ์

NP-ที่สมบูรณ์แบบเป็นระดับความซับซ้อนซึ่งหมายถึงชุดของปัญหาทั้งหมดXใน NP ซึ่งมันเป็นไปได้ที่จะลดปัญหา NP อื่น ๆYไปXในเวลาพหุนาม

หมายความว่าเราสามารถแก้ปัญหาYได้อย่างรวดเร็วถ้าเรารู้วิธีแก้ปัญหาXอย่างรวดเร็ว แม่นยำYเป็นออกซิเจนXถ้ามีขั้นตอนวิธีการพหุนามเวลาfที่จะเปลี่ยนอินสแตนซ์yของYอินสแตนซ์x = f(y)ของXในเวลาพหุนามกับทรัพย์สินที่คำตอบyคือใช่ถ้าหากคำตอบf(y)คือใช่

ตัวอย่าง

3-SAT. นี่คือปัญหาที่เราได้รับการรวม (ANDs) ของการแยกข้อ 3 ข้อ (ORs) ข้อความของแบบฟอร์ม

(x_v11 OR x_v21 OR x_v31) AND 
(x_v12 OR x_v22 OR x_v32) AND 
...                       AND 
(x_v1n OR x_v2n OR x_v3n)

ซึ่งแต่ละคนเป็นตัวแปรบูลีนหรือการปฏิเสธของตัวแปรจากรายการที่กำหนดไว้ล่วงหน้าแน่นอนx_vij(x_1, x_2, ... x_n)

ก็สามารถที่จะแสดงให้เห็นว่าทุกปัญหา NP สามารถลดลงได้ถึง 3-SAT การพิสูจน์เรื่องนี้เป็นเรื่องทางเทคนิคและต้องใช้คำนิยามทางเทคนิคของ NP ( ขึ้นอยู่กับเครื่องทัวริงที่ไม่ได้กำหนดไว้ล่วงหน้า) นี้เรียกว่าทฤษฎีบทคุก

สิ่งที่ทำให้ปัญหาที่สมบูรณ์แบบของ NP มีความสำคัญคือถ้าพบว่าอัลกอริธึมเวลาแบบพหุนามกำหนดได้ว่าสามารถแก้ปัญหาข้อใดข้อหนึ่งได้ปัญหา NP ทุกข้อสามารถแก้ไขได้ในเวลาพหุนาม


NP-ยาก

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

ความหมายที่ถูกต้องที่นี่เป็นที่ปัญหาXคือ NP-ยากถ้ามีปัญหา NP-สมบูรณ์Yเช่นว่าYเป็นออกซิเจนXในเวลาพหุนาม

แต่เนื่องจากปัญหา NP-complete ใด ๆ สามารถลดลงเป็นปัญหา NP-complete อื่น ๆ ในเวลาพหุนามปัญหา NP-Complete ทั้งหมดจึงสามารถลดลงเป็นปัญหา NP-hard ใด ๆ ในเวลาพหุนาม จากนั้นหากมีวิธีการแก้ปัญหาหนึ่งปัญหา NP- ยากในเวลาพหุนามมีทางออกสำหรับปัญหา NP ทั้งหมดในเวลาพหุนาม

ตัวอย่าง

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

ปัญหา NP-สมบูรณ์ที่ฉันชอบคือปัญหาเรือกวาดทุ่นระเบิด


P = NP

อันนี้เป็นปัญหาที่โด่งดังที่สุดในวิทยาการคอมพิวเตอร์และเป็นหนึ่งในคำถามที่สำคัญที่สุดในวิทยาศาสตร์คณิตศาสตร์ ในความเป็นจริงClay Instituteกำลังเสนอวิธีแก้ปัญหาหนึ่งล้านดอลลาร์ (การเขียนของ Stephen Cook บนเว็บไซต์ Clay ค่อนข้างดี)

เป็นที่ชัดเจนว่า P เป็นเซตย่อยของ NP คำถามเปิดคือปัญหาที่เกิดขึ้นกับปัญหา NP มีวิธีแก้ปัญหาเวลาแบบพหุนามหรือไม่ เป็นที่เชื่อกันส่วนใหญ่ว่าพวกเขาทำไม่ได้ นี่คือบทความที่โดดเด่นเมื่อเร็ว ๆ นี้ล่าสุด (และสำคัญ) ของ P = ปัญหา NP: สถานะของ P เมื่อเทียบกับปัญหา

หนังสือที่ดีที่สุดในเรื่องนี้คือคอมพิวเตอร์และ Intractabilityโดย Garey และ Johnson


32
@ พอลฟิชเชอร์: ฉันจะแสดงให้เห็นว่า SAT สามารถลดปัญหาการหยุดชะงักในเวลาพหุนาม พิจารณาอัลกอริธึมต่อไปนี้: เมื่อป้อนข้อเสนอให้Iกับnตัวแปรลองใช้การ2^nมอบหมายที่เป็นไปได้ทั้งหมดกับตัวแปรและหยุดถ้าใครทำตามข้อเสนอ เราเห็นว่าอัลกอริทึมนี้หยุดหากIพอใจหากพอใจเท่านั้น ดังนั้นหากเรามีอัลกอริธึมเวลาพหุนามสำหรับการแก้ปัญหาการหยุดชะงักเราสามารถแก้ SAT ในเวลาพหุนาม ดังนั้นปัญหาการหยุดทำงานคือ NP-hard
jason

6
@ Jason - คุณไม่สามารถลดปัญหาที่ตัดสินใจได้ให้เป็นปัญหาที่ไม่สามารถตัดสินใจได้ในลักษณะนั้น ปัญหาที่ตัดสินใจได้ต้องส่งผลให้มีคำตอบที่แน่นอนใช่หรือไม่ใช่เพื่อให้พิจารณาได้ว่าสามารถตัดสินใจได้ ปัญหาการหยุดชะงักไม่มีคำตอบที่แน่นอนใช่หรือตอนนี้เนื่องจากคำตอบโดยพลการอาจแก้ปัญหาใด ๆ ในวง
rjzii

11
@Rob: ใช่ฉันทำได้ คำจำกัดความของ reducible ไม่จำเป็นต้องให้ปัญหาที่ถูกลดขนาดนั้นแก้ไขได้ สิ่งนี้เป็นจริงสำหรับการลดหลายรายการหรือการลดทัวริง
jason

5
@Rob: เอาล่ะถ้าคุณต้องการที่จะดำเนินการต่อไป ก่อนอื่น "Decidable" ไม่ใช่ "ปัญหาการตัดสินใจ" ตามที่คุณใช้ "Decidable" หมายถึงประมาณว่ามี "วิธีที่มีประสิทธิภาพ" สำหรับการพิจารณาคำตอบ "วิธีที่มีประสิทธิภาพ" แน่นอนมีคำจำกัดความทางเทคนิค ยิ่งไปกว่านั้น "decidable" สามารถกำหนดได้ในแง่ของ "ฟังก์ชันที่คำนวณได้" ดังนั้นปัญหาการหยุดชะงักคือปัญหาการตัดสินใจ ("โปรแกรมนี้หยุดชะงักหรือไม่" เป็นคำถามที่ตอบว่าใช่ / ไม่ใช่) แต่ก็ไม่สามารถตัดสินใจได้ ไม่มีวิธีที่มีประสิทธิภาพในการพิจารณาว่าอินสแตนซ์ของปัญหาการหยุดชะงักจะหยุดลงหรือไม่
jason

21
การใช้ปัญหา Halting เป็น "ตัวอย่างคลาสสิก" ของปัญหา NP-hard ไม่ถูกต้อง มันเหมือนกับว่า: "มหาสมุทรแปซิฟิกเป็นตัวอย่างคลาสสิกของพิพิธภัณฑ์สัตว์น้ำเค็ม"
Michael

261

ฉันกำลังมองไปรอบ ๆ และเห็นคำอธิบายที่ยาวนานมากมาย นี่คือแผนภูมิขนาดเล็กที่อาจเป็นประโยชน์ในการสรุป:

โปรดสังเกตว่าความยากเพิ่มขึ้นจากบนลงล่าง: NPใด ๆ ที่สามารถลดลงเป็น NP-CompleteและNP-Completeใด ๆสามารถลดลงเป็น NP-Hardได้ทั้งหมดในเวลา P (พหุนาม)

หากคุณสามารถแก้ปัญหาที่ยากขึ้นในเวลา P นั่นหมายถึงคุณจะพบวิธีแก้ปัญหาที่ง่ายขึ้นในเวลา P (ตัวอย่างเช่นการพิสูจน์ P = NP หากคุณเข้าใจวิธีแก้ปัญหา NP-Complete ใน P เวลา)

____________________________________________________________
| ประเภทของปัญหา ตรวจสอบได้ในเวลา P | แก้ไขได้ในเวลา P | การเพิ่มความยากลำบาก
___________________________________________________________ | |
| P | ใช่ ใช่ |
| NP | ใช่ ใช่หรือไม่ * | |
| NP-Complete | ใช่ ไม่ทราบ | |
| NP-Hard | ใช่หรือไม่ ** | ไม่ทราบ *** | |
____________________________________________________________ V

หมายเหตุในYesหรือNoรายการ:

  • * ปัญหา NP ที่เป็น P สามารถแก้ไขได้ในเวลา P
  • ** ปัญหา NP-Hard ที่เป็น NP-Complete นั้นสามารถตรวจสอบได้ในเวลา P
  • *** ปัญหา NP-Complete (ซึ่งทั้งหมดเป็นชุดย่อยของ NP-hard) อาจจะเป็น ส่วนที่เหลือของ NP ยากไม่ได้

ฉันยังพบว่าแผนภาพนี้ค่อนข้างมีประโยชน์ในการดูว่าประเภทเหล่านี้สอดคล้องกันอย่างไร (ให้ความสำคัญกับครึ่งซ้ายของแผนภาพมากขึ้น)


ฉันมีข้อสงสัยเกี่ยวกับคำตอบของคุณ ฉันถามคำถามแยกต่างหาก แต่ฉันถูกขอให้โพสต์ไว้ที่นี่ คุณช่วยฉันที่นี่ได้ไหม stackoverflow.com/questions/21005651/…
Srikanth

ไม่ทราบว่าปัญหาที่เกิดขึ้นกับ NP นั้นสามารถแก้ไขได้ในเวลาพหุนาม นอกจากนี้ปัญหา NP-complete ยังเป็นปัญหา NP-hard ดังนั้นปัญหา NP-hard บางอย่างสามารถตรวจสอบได้ในเวลาพหุนามและเป็นไปได้บางปัญหาก็สามารถแก้ไขได้ด้วยพหุนาม
Falk Hüffner

ตารางนี้ไม่ถูกต้องและขัดแย้งตัวเอง แม้ว่าคุณจะถือว่า NP! = P ซึ่งยังไม่ได้รับการพิสูจน์ก็จะยังคงไม่ถูกต้อง ตัวอย่างเช่นคลาส NP-Hard รวมถึงปัญหา NP-Complete ดังนั้นตารางของคุณอ้างว่าปัญหา NP-Complete นั้นสามารถตรวจสอบได้ในเวลาพหุนามและไม่สามารถตรวจสอบได้ในเวลาพหุนาม
Michael

3
@ FalkHüffnerขอบคุณตารางได้รับการปรับปรุง (เป็นข้อผิดพลาดในการแปลจากแผนภาพ Venn)
Johnson Wong

1
@PeterRaeves ปัญหา NP-complete ทั้งหมดคือ NP-hard ตามนิยาม: NP-complete = (NP และ NP-hard) การผกผันไม่เป็นความจริง: มีปัญหา (เช่นปัญหา Halting) ใน NP-hard ที่ไม่ได้อยู่ใน NP-complete "NP (ไม่สามารถแก้ไขได้ในเวลาพหุนาม)" - นั่นไม่ใช่สิ่งที่ NP หมายถึง NP คือ "Non-deterministic-polynomial" ปัญหาทั้งหมดใน P ก็เป็นเช่นกัน ไม่ว่าการผกผันเป็นความจริงไม่เป็นที่รู้จัก
Jim Balter

73

นี่เป็นคำตอบที่ไม่เป็นทางการสำหรับคำถามที่ถาม

3233 สามารถเขียนเป็นผลคูณของตัวเลขสองตัวที่มากกว่า 1 ได้หรือไม่? มีวิธีใดบ้างไหมที่จะเดินไปรอบ ๆ ทั้งเจ็ด Bridges ของKönigsbergโดยไม่ใช้สะพานสองครั้ง? เหล่านี้เป็นตัวอย่างของคำถามที่ใช้ลักษณะทั่วไป อาจไม่ชัดเจนว่าจะระบุคำตอบได้อย่างมีประสิทธิภาพ แต่ถ้าคำตอบคือ 'ใช่' ก็จะมีหลักฐานสั้นและรวดเร็วในการตรวจสอบ ในกรณีแรกการแยกตัวประกอบที่ไม่ใช่เรื่องไร้สาระของ 51; ในครั้งที่สองเส้นทางสำหรับการเดินสะพาน (ข้อ จำกัด )

ตัดสินปัญหาคือชุดของคำถามที่มีคำตอบใช่หรือไม่ที่แตกต่างกันเพียง แต่ในพารามิเตอร์หนึ่ง สมมติว่าปัญหา COMPOSITE = {"Is ncomposite": nคือจำนวนเต็ม} หรือ EULERPATH = {"กราฟGมีเส้นทางออยเลอร์หรือไม่": Gเป็นกราฟ จำกัด }

ตอนนี้ปัญหาการตัดสินใจบางอย่างทำให้ตัวเองมีประสิทธิภาพหากไม่ได้อัลกอริทึมที่ชัดเจน ออยเลอร์ค้นพบอัลกอริทึมที่มีประสิทธิภาพสำหรับปัญหาเช่น "Seven Bridges of Königsberg" เมื่อกว่า 250 ปีที่แล้ว

ในทางกลับกันสำหรับปัญหาการตัดสินใจหลายอย่างมันไม่ชัดเจนว่าจะได้รับคำตอบอย่างไร - แต่ถ้าคุณรู้ข้อมูลเพิ่มเติมบางอย่างชัดเจนว่าจะพิสูจน์ได้อย่างไรว่าคุณมีคำตอบที่ถูกต้อง คอมโพสิตนั้นเป็นเช่นนี้: การแบ่งการทดลองเป็นอัลกอริธึมที่ชัดเจนและมันช้า: หากต้องการคำนึงถึงตัวเลข 10 หลักคุณต้องลองตัวหารที่เป็นไปได้ 100,000 ตัวอย่างเช่นถ้ามีคนบอกคุณว่า 61 เป็นตัวหารของ 3233 การหารแบบง่าย ๆ เป็นวิธีที่มีประสิทธิภาพในการดูว่าพวกเขาถูกต้อง

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

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

บางทีการมีส่วนร่วมที่ยิ่งใหญ่ที่สุดในสาขานี้มาพร้อมกับการค้นพบปัญหาระดับ NP ที่แปลกประหลาด โดยการเล่นรอบกับรูปแบบวงจรการคำนวณ, สตีเฟ่นคุกพบปัญหาในการตัดสินใจของหลากหลาย NP นั่นคือสรรพสิ่งเป็นยากหรือหนักกว่าทุกปัญหา NP อื่น ๆ โซลูชันที่มีประสิทธิภาพสำหรับปัญหาความพึงพอใจแบบบูลสามารถใช้เพื่อสร้างโซลูชันที่มีประสิทธิภาพสำหรับปัญหาอื่น ๆใน NP ไม่นานหลังจากนั้น Richard Karp แสดงให้เห็นว่าปัญหาการตัดสินใจอื่น ๆ จำนวนมากสามารถตอบสนองวัตถุประสงค์เดียวกันได้ ปัญหาเหล่านี้ในความรู้สึกที่ "ยากที่สุด" ปัญหาในการ NP กลายเป็นที่รู้จักในฐานะNP-สมบูรณ์ปัญหา

แน่นอนว่า NP เป็นเพียงปัญหาในการตัดสินใจ ปัญหาหลายอย่างไม่ได้ระบุไว้โดยธรรมชาติในลักษณะนี้: "ค้นหาปัจจัยของ N", "ค้นหาเส้นทางที่สั้นที่สุดในกราฟ G ที่เข้าชมจุดสุดยอดทุกครั้ง", "ให้ชุดของการกำหนดตัวแปรที่ทำให้นิพจน์บูลีนต่อไปนี้เป็นจริง" แม้ว่าบางคนอาจพูดคุยอย่างไม่เป็นทางการเกี่ยวกับปัญหาดังกล่าวว่าเป็น "ใน NP" แต่ในทางเทคนิคแล้วมันก็ไม่สมเหตุสมผลนัก - พวกเขาไม่ใช่ปัญหาการตัดสินใจ ปัญหาเหล่านี้บางอย่างอาจมีพลังงานเช่นเดียวกับปัญหาที่เกิดจากปัญหาแบบสมบูรณ์: การแก้ปัญหาที่มีประสิทธิภาพสำหรับปัญหาเหล่านี้ (ไม่ใช่การตัดสินใจ) จะนำไปสู่การแก้ปัญหาที่มีประสิทธิภาพสำหรับปัญหา NP ใด ๆ โดยตรง ปัญหาเช่นนี้เรียกว่าNP-ยาก


67

P (เวลาพหุนาม): ตามชื่อที่แนะนำตัวเองปัญหาเหล่านี้สามารถแก้ไขได้ในเวลาพหุนาม

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

NP-Hard: อย่างน้อยที่สุดก็ยากพอ ๆ กับปัญหาที่ยากที่สุดใน NP หากเราสามารถแก้ปัญหาเหล่านี้ได้ในเวลาพหุนามเราสามารถแก้ปัญหา NP ใด ๆ ที่อาจเกิดขึ้นได้ โปรดทราบว่าปัญหาเหล่านี้ไม่จำเป็นต้องเป็นปัญหา NP นั่นหมายความว่าเราอาจ / อาจไม่ยืนยันวิธีแก้ปัญหาเหล่านี้ในเวลาพหุนาม

NP-Complete: ปัญหาเหล่านี้เป็นทั้งปัญหา NP และ NP-Hard นั่นหมายความว่าถ้าเราสามารถแก้ปัญหาเหล่านี้ได้เราสามารถแก้ปัญหา NP อื่น ๆ ได้และวิธีแก้ปัญหาเหล่านี้สามารถตรวจสอบได้ในเวลาพหุนาม


ดังนั้นคุณเพิ่งตัดสินใจที่จะคัดลอกคำจำกัดความจากที่ใด?
Arun Satyarth

1
คำตอบนั้นสมเหตุสมผล!
Konstantin

2
@ArunSatyarth จากที่ไหน
ความหมายมีความสำคัญ

3
คำตอบที่ดีที่สุดเพราะคำศัพท์สั้น ๆ ใช้คำศัพท์ที่เพียงพอมีประโยคปกติของมนุษย์ (ไม่ใช่เรื่องยากที่จะอ่านให้ถูกต้องเท่าที่เป็นไปได้) และที่น่าประหลาดใจก็คือคำตอบเดียวที่เขียนสิ่งที่ N หมายถึง
ความหมายมีความสำคัญ

62

นอกจากคำตอบที่ยอดเยี่ยมอื่น ๆ ต่อไปนี้คือสคีมาทั่วไปที่ผู้คนใช้เพื่อแสดงความแตกต่างระหว่าง NP, NP-Complete และ NP-Hard:

ป้อนคำอธิบายรูปภาพที่นี่


1
มันพิสูจน์แล้วว่ามีปัญหาใน NP-Hard ที่ไม่ได้อยู่ใน NP-Complete หรือไม่? เพราะภาพนี้แสดงให้เห็นมัน ขอบคุณ.
Hilder Vitor Lima Pereira

9
@VitorLima ใช่เช่นปัญหาที่สมบูรณ์ของ EXPSPACEคือ NP-hard แต่พิสูจน์แล้วว่าไม่สมบูรณ์
Franck Dernoncourt

2
โอเคขอบคุณ. ฉันพบข้อมูลอ้างอิงบางส่วนที่พูดถึงมัน ตัวอย่างเช่นอันนี้: princeton.edu/~achaney/tmve/wiki100k/docs/NP-hard.html
Hilder Vitor Lima Pereira

47

วิธีที่ง่ายที่สุดในการอธิบาย P v. NP และสิ่งอื่น ๆ โดยไม่ต้องเข้าสู่ด้านเทคนิคคือการเปรียบเทียบ "ปัญหาคำศัพท์" กับ "ปัญหาหลายทางเลือก"

เมื่อคุณพยายามที่จะแก้ปัญหา "คำปัญหา" คุณต้องค้นหาวิธีแก้ไขตั้งแต่ต้น เมื่อคุณพยายามที่จะแก้ปัญหา "ปัญหาหลายทางเลือก" คุณมีทางเลือก: แก้ปัญหาแบบเดียวกับที่คุณทำกับ "ปัญหาคำศัพท์" หรือลองเสียบคำตอบแต่ละข้อที่ให้ไว้กับคุณและเลือกคำตอบที่เหมาะสม

มันมักจะเกิดขึ้นว่า "ปัญหาหลายทางเลือก" ง่ายกว่า "ปัญหาคำศัพท์" ที่สอดคล้องกัน: แทนที่คำตอบของผู้สมัครและตรวจสอบว่าพวกเขาพอดีอาจต้องใช้ความพยายามอย่างมีนัยสำคัญน้อยกว่าการหาคำตอบที่ถูกต้องตั้งแต่เริ่มต้น

ทีนี้ถ้าเราเห็นด้วยกับความพยายามที่ใช้เวลาพหุนามว่า "ง่าย" คลาส P จะประกอบด้วย "ปัญหาคำง่าย" และคลาส NP จะประกอบด้วย "ปัญหาหลายทางเลือกง่าย"

สาระสำคัญของ P v. NP คือคำถาม: "มีปัญหาแบบหลายตัวเลือกที่ไม่ง่ายเหมือนปัญหาคำศัพท์" หรือไม่? นั่นคือมีปัญหาที่ง่ายต่อการตรวจสอบความถูกต้องของคำตอบที่กำหนด แต่การหาคำตอบจากรอยขีดข่วนนั้นยากหรือไม่

ตอนนี้เราเข้าใจโดยสังเขปว่า NP คืออะไรเราต้องท้าทายสัญชาตญาณของเรา ปรากฎว่ามี "ปัญหาหลายทางเลือก" ที่ในบางแง่มุมนั้นยากที่สุดของทั้งหมด: ถ้าใครจะหาทางออกให้กับหนึ่งใน "ปัญหาที่ยากที่สุดของพวกเขาทั้งหมด" อย่างใดอย่างหนึ่งจะสามารถหาทางออกให้กับทุกคน ปัญหา NP! เมื่อกุ๊กได้ค้นพบสิ่งนี้เมื่อ 40 ปีก่อนมันเป็นเรื่องที่น่าประหลาดใจอย่างมาก ปัญหา "ที่ยากที่สุดของพวกเขาทั้งหมด" เหล่านี้เรียกว่า NP-hard หากคุณพบ "การแก้ปัญหาคำศัพท์" หนึ่งในนั้นคุณจะพบ "การแก้ปัญหาคำศัพท์" โดยอัตโนมัติสำหรับทุก ๆ คน "ปัญหาทางเลือกง่าย ๆ "!

ในที่สุดปัญหา NP-complete คือปัญหาที่เกิดขึ้นพร้อมกันกับ NP และ NP-hard การติดตามของเราคล้ายคลึงกันพวกเขาพร้อมกัน "ปัญหาง่าย ๆ หลายทางเลือก" และ "ปัญหาที่ยากที่สุดของพวกเขาทั้งหมดเป็นปัญหาคำ"


18

ปัญหา NP-complete คือปัญหาเหล่านั้นที่มีทั้ง NP-Hard และในระดับความซับซ้อนของ NP ดังนั้นเพื่อแสดงให้เห็นว่าปัญหาใดก็ตามที่ได้รับคือปัญหา NP-complete คุณต้องแสดงให้เห็นว่าปัญหานั้นเป็นปัญหาทั้งใน NP และปัญหานั้นเป็นปัญหาที่หนักหน่วง

ปัญหาที่อยู่ในระดับความซับซ้อนของปัญหา NP สามารถแก้ไขได้แบบไม่กำหนดเวลาในพหุนามและวิธีแก้ปัญหาที่เป็นไปได้ (เช่นใบรับรอง) สำหรับปัญหาใน NP สามารถตรวจสอบความถูกต้องได้ในเวลาพหุนาม

ตัวอย่างของการแก้ปัญหาที่ไม่ได้กำหนดค่าไว้สำหรับปัญหา k-clique น่าจะเป็นสิ่งที่ต้องการ:

1) สุ่มเลือก k โหนดจากกราฟ

2) ตรวจสอบว่าโหนด k เหล่านี้ก่อให้เกิดกลุ่ม

กลยุทธ์ข้างต้นคือพหุนามในขนาดของกราฟอินพุตและดังนั้นปัญหา k-clique อยู่ใน NP

โปรดทราบว่าปัญหาทั้งหมดสามารถแก้ไขได้ในเวลาพหุนามยังอยู่ใน NP ด้วย

แสดงว่าปัญหาคือปัญหา NP-hard เกี่ยวข้องกับการลดปัญหา NP-hard อื่น ๆ ให้กับปัญหาของคุณโดยใช้การทำแผนที่เวลาแบบพหุนาม: http://en.wikipedia.org/wiki/Reduction_(complexity)


ไม่ใช่ว่าฉันเห็นอะไรในคำตอบนี้ว่าไม่ถูกต้อง แต่ฉันไม่รู้ว่าทำไมจึงเป็นที่ยอมรับ มันไม่ได้ให้อะไรมากกับสิ่งที่ OP ถาม มันไม่ได้แตกต่างไปจากคำอธิบายทั่วไปของปัญหาเหล่านี้และไม่มีคำอธิบายที่ชัดเจนเกี่ยวกับสิ่งที่ทำให้เกิดปัญหาเหล่านี้ในชั้นเรียนเหล่านี้ ไม่คุ้มค่ากับการลงคะแนน แต่ก็ไม่คุ้มค่ากับการตอบรับ
San Jacinto

18

ฉันคิดว่าเราสามารถตอบได้อย่างกระชับยิ่งขึ้น ฉันตอบคำถามที่เกี่ยวข้องและคัดลอกคำตอบจากที่นั่น

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

ในการตอบคำถามที่เหลือคุณต้องเข้าใจก่อนว่าปัญหา NP-hard ใดที่ NP-complete หากปัญหา NP-hard อยู่ในการตั้งค่า NP แสดงว่าเป็นปัญหา NP-complete เพื่อให้เป็นของ NP ตั้งปัญหาต้องเป็น

(i) ปัญหาการตัดสินใจ
(ii) จำนวนวิธีแก้ปัญหาควร จำกัด และแต่ละวิธีแก้ปัญหาควรมีความยาวพหุนามและ
(iii) ให้วิธีแก้ปัญหาความยาวพหุนามเราควรจะสามารถบอกได้ว่าคำตอบของ ปัญหาคือใช่ / ไม่ใช่

ตอนนี้มันเป็นเรื่องง่ายที่จะเห็นว่าอาจมีปัญหามากมายเกี่ยวกับ NP ที่ไม่ได้อยู่ในเซตของ NP และยากที่จะแก้ไข เป็นตัวอย่างที่ใช้งานง่ายเวอร์ชันการปรับให้เหมาะสมของพนักงานขายการเดินทางที่เราต้องการค้นหาตารางเวลาจริงนั้นยากกว่ารุ่นพนักงานขายของการท่องเที่ยวที่เราต้องตัดสินใจว่าตารางเวลาที่มีความยาว <= k นั้นมีจริงหรือไม่


5

มีคำตอบที่ดีมากสำหรับคำถามนี้ดังนั้นจึงไม่มีประเด็นที่จะเขียนคำอธิบายของฉันเอง ดังนั้นฉันจะพยายามมีส่วนร่วมกับทรัพยากรที่ยอดเยี่ยมเกี่ยวกับคลาสที่แตกต่างกันของความซับซ้อนในการคำนวณ

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


3

ตามที่ผมเข้าใจมันเป็นNP-ยากปัญหาไม่ได้ "ยาก" กว่าNP-สมบูรณ์ปัญหา ในความเป็นจริงตามคำนิยามทุกปัญหา np-สมบูรณ์คือ:

  1. ใน NP
  2. NP-ยาก

ป้อนคำอธิบายรูปภาพที่นี่

- คำนำ ถึงอัลกอริทึม (3ed) โดย Cormen, Leiserson, Rivest และ Stein, pg 1069


3
ความเข้าใจของคุณไม่ถูกต้อง คำจำกัดความของคำว่า NP-complete นั้นถูกต้อง แต่ไม่มีผลต่อคำสั่งแรกของคุณ ปัญหาทั้งหมดใน NP-hard นั้นอย่างน้อยเท่ากับปัญหาใน NP-complete บางส่วน (เช่นปัญหาการหยุดชะงักซึ่งยากอย่างไม่สิ้นสุดและen.wikipedia.org/wiki/EXPSPACE ) นั้นยากกว่าที่จะพิสูจน์
Jim Balter

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.