NP-complete ในวิทยาศาสตร์คอมพิวเตอร์คืออะไร?


429

ปัญหา NP-complete คืออะไร? ทำไมมันถึงเป็นหัวข้อสำคัญในสาขาวิทยาศาสตร์คอมพิวเตอร์?


5
คุณอาจสนใจคำตอบของคำถามนี้: stackoverflow.com/questions/111307/…
Dan Dyer

1
ฉันตัดสินใจที่จะเขียนคำตอบของตัวเองเพราะฉันไม่ชอบวิธีการนำเสนอคำตอบที่ยอมรับและรวมลิงค์ไปยังคำถาม P = NP
grom

1
มีการบรรยาย arsdigitaที่ดีมากเกี่ยวกับคณิตศาสตร์แบบแยกซึ่งอธิบายว่าปัญหา NP-complete คืออะไร 50 นาทีแรกส่วนใหญ่จะเป็นพีชคณิตแบบบูล ดังนั้นกระโดดไปที่จุดเริ่มต้นของ 53 นาทีหากคุณสนใจในแนวคิดของ P, NP, NP-ครบถ้วนสมบูรณ์, ปัญหาความน่าเชื่อถือบูลีนและการลดลง
davitenio

1
เราจะไม่มีทางรู้เพราะมี n ขนาดใหญ่มันจะไม่เสร็จสมบูรณ์;)
Pete Alvin

1
ฉันชอบมากและแนะนำให้ตรวจสอบคำอธิบายวิดีโอนี้: youtube.com/watch?v=YX40hbAHx3s
Maksym Ovsianikov

คำตอบ:


209

NPย่อมาจากเวลาพหุนามที่ไม่ได้กำหนดค่า

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

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

แก้ไข: ตามที่คนอื่น ๆ สังเกตมักจะมีวิธีแก้ไขปัญหาโดยประมาณสำหรับปัญหา NP-Complete ในกรณีนี้วิธีแก้ปัญหาโดยประมาณจะให้ค่าประมาณโดยใช้สัญลักษณ์พิเศษซึ่งบอกให้เราทราบว่าการประมาณนั้นใกล้แค่ไหน


2
"... ปัญหา NP สามารถลดลงเป็นปัญหาที่กำหนดได้ ... " - ข้อ จำกัด ที่สำคัญในการลดคือมันควรจะเป็นพหุนามแบบกำหนดแน่นอน
Rafał Dowgird

2
สัญกรณ์ O () เป็นสัญกรณ์คณิตศาสตร์ทั่วไปที่ใช้ทุกที่: อัลกอริทึมการประมาณจะได้รับแน่นอน O () - ความถูกต้อง - ดูกระดาษอัลกอริทึมการประมาณใด ๆ ใน arxiv.org
Ying Xiao

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

1
@Yuval: เพียงเพื่อให้ชัดเจน สิ่งที่คุณมีก่อนหน้านี้ผิดอย่างสมบูรณ์ (ยกเว้น P = NP) จากความคิดเห็นของคุณฉันรู้สึกว่าคุณคิดว่าทั้งสองเวอร์ชันนั้นถูกต้อง ถ้าไม่ฉันขอโทษ

33
คำตอบนี้อยู่ไกลจากความสมบูรณ์และเข้าใจได้และฉันไม่สามารถเข้าใจได้ว่าทำไมมันมี upvotes มากมาย
nbro

428

NPคืออะไร

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

Pคืออะไร

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

คืออะไรNP-สมบูรณ์ ?

ปัญหา x ที่อยู่ใน NP ยังอยู่ใน NP-Complete ถ้าหากปัญหาอื่น ๆ ใน NP สามารถทำได้อย่างรวดเร็ว (เช่นในเวลาพหุนาม) เปลี่ยนเป็น x

ในคำอื่น ๆ :

  1. x อยู่ใน NP และ
  2. ทุกปัญหาใน NP สามารถลดลงได้เป็น x

ดังนั้นสิ่งที่ทำให้NP-Completeน่าสนใจคือถ้าหากหนึ่งในปัญหา NP-Complete ใด ๆ ที่จะแก้ไขได้อย่างรวดเร็วปัญหาNPทั้งหมดจะสามารถแก้ไขได้อย่างรวดเร็ว

ดูโพสต์ของ "P = NP คืออะไร" และทำไมเป็นคำถามที่โด่งดังเช่นนี้

คืออะไรNP-ยาก ?

NP-Hard เป็นปัญหาที่อย่างน้อยยากเท่ากับปัญหาที่ยากที่สุดใน NP โปรดทราบว่าปัญหา NP-Complete นั้นก็คือ NP-hard เช่นกัน อย่างไรก็ตามปัญหา NP-hard ไม่ได้เป็นปัญหา NP (หรือแม้แต่ปัญหาการตัดสินใจ) แม้จะNPเป็นคำนำหน้าก็ตาม นั่นคือใน NP NP-ยากไม่ได้หมายความว่าเวลาพหุนามที่ไม่กำหนด ใช่สิ่งนี้ทำให้เกิดความสับสน แต่การใช้งานนั้นยึดมั่นและไม่น่าจะเปลี่ยนแปลง


4
"นั่นคือ NP ใน NP-hard ไม่ได้หมายความว่าไม่ใช่พหุนาม" <- NP ใน NP-complete (หรือที่อื่น ๆ ) ไม่ได้หมายถึง non-polynomial
sepp2k

1
ขอบคุณ sepp2k สำหรับการแก้ไข ฉันหมายถึงบอกว่ามันไม่ได้หมายความว่า NP (เช่นเวลาพหุนามแบบไม่กำหนด)
grom

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

3
เกี่ยวกับ NP: ฉันคิดว่ามันควรจะเป็น: ปัญหาสามารถแก้ไขได้โดยเครื่องทัวริง nondeterministic (nonderterministic มากกว่า derministic)
hqt

2
@hqt สิ่งที่ฉันเขียนถูกต้อง .. สังเกตคำว่า "Verified" นอกจากนี้คุณยังถูกต้อง NP สามารถแก้ไขได้ในเวลาพหุนามโดยเครื่องทัวริงไม่กำหนด
grom

32

NP-Complete หมายถึงบางสิ่งที่เฉพาะเจาะจงมากและคุณต้องระวังมิเช่นนั้นคุณจะได้คำจำกัดความที่ไม่ถูกต้อง ครั้งแรกปัญหา NP คือปัญหาใช่ / ไม่ใช่เช่นนั้น

  1. มีการพิสูจน์พหุนามเวลาสำหรับทุกตัวอย่างของปัญหาที่มีคำตอบ "ใช่" ว่าคำตอบคือ "ใช่" หรือ (เทียบเท่า)
  2. มีอัลกอริธึมเวลาพหุนาม (อาจใช้ตัวแปรสุ่ม) ที่มีความน่าจะเป็นที่ไม่ใช่ศูนย์ของการตอบ "ใช่" ถ้าคำตอบสำหรับตัวอย่างของปัญหาคือ "ใช่" และจะพูดว่า "ไม่" 100% ของเวลาถ้า คำตอบคือ "ไม่" กล่าวอีกนัยหนึ่งอัลกอริทึมจะต้องมีอัตราการลบเท็จน้อยกว่า 100% และไม่มีผลบวกปลอม

ปัญหา X คือ NP-Complete ถ้า

  1. X อยู่ใน NP และ
  2. สำหรับปัญหาใด ๆ ที่ Y ใน NP มี "การลด" จาก Y เป็น X: อัลกอริทึมแบบพหุนามเวลาที่แปลงอินสแตนซ์ใด ๆ ของ Y ให้เป็นอินสแตนซ์ของ X ซึ่งคำตอบของ Y-instance คือ "ใช่" ถ้า ถ้าคำตอบ X-instance คือ "ใช่"

ถ้า X เป็น NP-complete และกำหนดขั้นตอนวิธีพหุนามมีอยู่ที่สามารถแก้ปัญหาอินสแตนซ์ทั้งหมดของ X ได้อย่างถูกต้อง (0% false-positives, 0% false-negatives) ดังนั้นปัญหาใด ๆ ใน NP สามารถแก้ไขได้ใน deterministic-polynomial- เวลา (โดยลดเป็น X)

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


1
ฉันไม่ชอบคุยโม้ แต่ฉันภูมิใจในอัลกอริธึมเวลาพหุนามที่กำหนดของฉันที่ฉันพิสูจน์แล้วว่าไม่มีอยู่จริง ;)
Kyle Cronin

20
ฉันได้ค้นพบหลักฐานอันน่าพิศวงอย่างแท้จริงของเรื่องนี้ซึ่งความคิดเห็นนี้แคบเกินไปที่จะมี;)
quick_dry

เงื่อนไข # 2 เป็นข้อความของ P =? NP ไม่ใช่ข้อกำหนดมาตรฐานของ NP-ครบถ้วน มันควรจะเป็น: อัลกอริธึมแบบโพลี - เวลาที่กำหนดได้ซึ่งสามารถเปลี่ยนNP อินสแตนซ์ X อื่น ๆให้เป็นอินสแตนซ์ Y ของปัญหานี้ได้คำตอบของ Y คือ "ใช่" ถ้าหากคำตอบของ X คือ "ใช่"
Chris Conway

"คุณต้องระวังมิฉะนั้นคุณจะได้คำจำกัดความที่ผิด" - ได้รับการพิสูจน์แล้วจากคำตอบที่ดีนี้ คำตอบนี้ถูกต้อง แต่ก็ไม่ควรยอมรับ
โปรแกรมเมอร์ Windows

29

โดยทั่วไปปัญหาของโลกนี้สามารถแบ่งได้เป็น

         1) ปัญหาที่แก้ไม่ตก 2) ปัญหาที่ยากลำบาก 3) ปัญหา NP - 4) ปัญหา P


         1) อันแรกไม่มีวิธีแก้ปัญหา 2) วินาทีคือเวลาเอ็กซ์โพเนนเชียลที่ต้องการ (นั่นคือ O (2 ^ n) ด้านบน) 3) อันที่สามเรียกว่า NP 4) ข้อที่สี่เป็นปัญหาง่าย


P: หมายถึงการแก้ปัญหาของเวลาพหุนาม

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

NP Complete: อ้างอิงในเวลาพหุนามเรายังไม่พบวิธีแก้ปัญหา แต่สามารถตรวจสอบได้ในเวลาพหุนาม ปัญหา NPC ใน NP เป็นปัญหาที่ยากขึ้นดังนั้นหากเราพิสูจน์ได้ว่าเรามีวิธีแก้ปัญหา P สำหรับปัญหา NPC ดังนั้นปัญหา NP ที่สามารถพบได้ในโซลูชัน P

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


ดีใจที่เห็นคำตอบนี้ส่วนการจัดหมวดหมู่ค่อนข้างชัดเจนสำหรับแนวคิดทั้งหมด ฉันคิดว่าปัญหาที่สามารถโต้ตอบได้คือปัญหา NP
PeerNet

22

NP-Complete เป็นปัญหาระดับหนึ่ง

ชั้นPประกอบด้วยปัญหาเหล่านั้นที่มีการแก้ไขในเวลาพหุนาม ตัวอย่างเช่นพวกเขาสามารถแก้ไขได้ใน O (n k ) สำหรับค่าคงที่ k โดยที่nคือขนาดของอินพุต พูดง่ายๆก็คือคุณสามารถเขียนโปรแกรมที่จะทำงานในเวลาที่เหมาะสม

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

ตัวอย่างบางส่วนคือปัญหาความพึงพอใจ Boolean (หรือSAT ) หรือปัญหารอบมิลโตเนียน มีปัญหามากมายที่รู้กันว่าอยู่ในระดับ NP

NP-Completeหมายความว่าปัญหานั้นยากอย่างน้อยเท่ากับปัญหาใด ๆ ใน NP

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

อัลกอริทึมมากมายในการรักษาความปลอดภัยขึ้นอยู่กับความจริงที่ว่าไม่มีวิธีแก้ปัญหาที่รู้จักสำหรับปัญหาหนักปัญหา มันจะมีผลกระทบอย่างมากต่อการคำนวณหากพบวิธีแก้ไข


นี่มันผิด ปัญหาใน NP สามารถเปลี่ยนเป็นปัญหาใด ๆ ใน NP-complete ไม่ใช่ปัญหาใด ๆ ใน NP นั่นเป็นความแตกต่างใหญ่
David Nehme

นอกจากนี้ "ปัญหานั้นยากพอ ๆ กับปัญหาใด ๆ ใน NP" - จริง แต่ถ้อยคำที่ดีกว่าก็คือ "อย่างน้อยก็ยาก" โดยรวมแล้วคำตอบนี้มาใกล้กว่าคำตอบอื่น ๆ ที่ฉันเคยเห็นและใกล้กว่าคำตอบที่น่าเสียดาย
โปรแกรมเมอร์ Windows

ขอบคุณสำหรับข้อสังเกตของคุณ ฉันได้อัปเดตคำตอบแล้วรวมถึงการแก้ไขของคุณ
Vincent Ramdhanie

1
คำจำกัดความของ NP-Complete ไม่สมบูรณ์คุณต้องระบุว่าปัญหา NP-Complete นั้นเป็นปัญหา NP (และ NP-hard) และไม่ยากเท่ากับปัญหา NP ใด ๆ ฉันจะ downvote หากคุณตัดสินใจที่จะเปลี่ยนแปลงทำให้ฉันรู้และฉันลบ downvote
nbro

20

เป็นปัญหาที่เราต้องจำลองทุกความเป็นไปได้เพื่อให้แน่ใจว่าเรามีทางออกที่ดีที่สุด

มีฮิวริสติกที่ดีมากมายสำหรับปัญหา NP-Complete บางอย่าง แต่เป็นเพียงการเดาที่ได้รับการศึกษาที่ดีที่สุด


เกือบจะถูกแล้ว ปัญหาสามารถมีวิธีแก้ปัญหาที่ไม่ครบถ้วนสมบูรณ์ซึ่งยังคงไม่ใช่พหุนามในธรรมชาติ
Mark Bessey

1
แม้ว่าจะไม่ถูกต้อง แต่ก็ใกล้พอสำหรับการใช้งานจริง ไม่จำเป็นต้องใช้คำจำกัดความของเด็ก ๆ ถึงแม้ว่า OP อาจต้องการคำจำกัดความของเด็ก ๆ มันเป็นการประมาณที่ดี!
doug65536

18

หากคุณกำลังมองหาตัวอย่างของปัญหา NP-สมบูรณ์แล้วผมแนะนำให้คุณดูที่3 SAT

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

(a or b) and (b or !c) and (d or !e or f) ...

ปัญหา 3-SAT คือการหาทางออกที่จะตอบสนองการแสดงออกที่แต่ละ OR-expressions มี 3 booleans ให้ตรงกัน:

(a or !b or !c) and (!a or b or !d) and (b or !c or d) ...

วิธีแก้ปัญหานี้อาจเป็น (a = T, b = T, c = F, d = F) อย่างไรก็ตามไม่มีการค้นพบอัลกอริทึมที่จะแก้ปัญหานี้ในกรณีทั่วไปในเวลาพหุนาม สิ่งนี้หมายความว่าวิธีที่ดีที่สุดในการแก้ปัญหานี้คือการคาดเดาและตรวจสอบและลองชุดค่าผสมที่แตกต่างกันจนกว่าคุณจะพบสิ่งที่ใช้ได้

มีอะไรพิเศษเกี่ยวกับปัญหา 3-SAT คือปัญหาใด ๆ NP-complete สามารถลดลงเป็นปัญหา 3-SAT ซึ่งหมายความว่าหากคุณสามารถหาอัลกอริธึมเวลาพหุนามเพื่อแก้ปัญหานี้คุณจะได้รับ$ 1,000,000ไม่ต้องพูดถึงความเคารพและชื่นชมจากนักวิทยาศาสตร์คอมพิวเตอร์และนักคณิตศาสตร์ทั่วโลก


บางทีฉันอาจสับสนด้วยคำอธิบายอื่น ๆ ที่นี่ แต่ไม่ควรอ่านว่า "ปัญหา NP ใด ๆ สามารถลดลงเป็นปัญหา 3-SAT ในเวลาพหุนาม" เพราะนั่นไม่ใช่สิ่งที่ทำให้ 3-SAT NP-Complete
DubiousPusher

@DubiousPusher Nope คำตอบระบุไว้อย่างถูกต้อง ภาพนี้ทำให้มันชัดเจนขึ้นstackoverflow.com/a/7367561/2686502
jayeshsolanki93

14

ความจริงแล้วWikipediaอาจเป็นสถานที่ที่ดีที่สุดในการหาคำตอบ

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


6
"ถ้า NP = P แสดงว่าเราสามารถแก้ปัญหาที่ยากได้เร็วกว่าที่เราคิดไว้ก่อนหน้านี้" - ไม่ ถ้า NP = P มีวิธีแก้ปัญหาอยู่ (มีอัลกอริธึมที่กำหนดขึ้นมาเพื่อแก้ไข) แต่ไม่มีการรับประกันว่าเราจะรู้ว่ามันคืออะไร
โปรแกรมเมอร์ Windows

จุดยุติธรรม ฉันเดาว่าเป็นข้อพิสูจน์ว่า P = NP น่าจะสร้างสรรค์แม้ว่า (เช่นการเผยแพร่อัลกอริทึมพหุนามสำหรับ 3-SAT)
Chris Conway

10

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

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

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

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


5

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

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

แต่ไม่ใช่ทั้งหมดจะหายไปหากปัญหาที่คุณพบคือ NP Complete มีสาขาวิชาที่กว้างใหญ่และมีเทคนิคเป็นอย่างมากที่ผู้คนศึกษาอัลกอริธึมการประมาณซึ่งจะทำให้คุณรับประกันได้ว่าจะได้ใกล้เคียงกับการแก้ปัญหาที่เกิดขึ้นอย่างสมบูรณ์ สิ่งเหล่านี้คือการรับประกันที่แข็งแกร่งอย่างเหลือเชื่อ - ตัวอย่างเช่นสำหรับ 3sat คุณสามารถได้รับการรับประกัน 7/8 โดยใช้อัลกอริทึมที่ชัดเจนจริงๆ ยิ่งไปกว่านั้นในความเป็นจริงมีฮิวริสติกที่แข็งแกร่งมากซึ่งให้คำตอบที่ดี (แต่ไม่รับประกัน!) สำหรับปัญหาเหล่านี้

โปรดทราบว่าสองปัญหาที่มีชื่อเสียงมาก - กราฟ isomorphism และ factoring - ไม่ทราบว่าเป็น P หรือ NP


5

ฉันเคยได้ยินคำอธิบายนั่นคือ: "NP-Completeeness อาจเป็นหนึ่งในความคิดที่ซับซ้อนในการศึกษาอัลกอริทึม" NP "ย่อมาจาก" เวลาพหุนาม nondeterministic "และเป็นชื่อที่เรียกว่าคลาสที่ซับซ้อน ซึ่งปัญหาที่เกิดขึ้นสามารถอยู่. สิ่งที่สำคัญเกี่ยวกับการขึ้นเครื่องหมาย NPระดับความซับซ้อนเป็นปัญหาที่ภายในระดับที่สามารถตรวจสอบแล้วโดยอัลกอริทึมเวลาพหุนาม ยกตัวอย่างเช่นพิจารณาปัญหาการนับสิ่งของ สมมติว่ามีแอปเปิ้ลเป็นพวงบนโต๊ะ ปัญหาคือ "มีกี่แอปเปิ้ล?" คุณได้รับคำตอบที่เป็นไปได้ 8. คุณสามารถตรวจสอบคำตอบนี้ได้ในเวลาพหุนามโดยใช้อัลกอริทึมของ, duh, นับแอปเปิ้ล การนับแอปเปิ้ลนั้นเกิดขึ้นในช่วงเวลา O (n) (นั่นเป็นสัญกรณ์ที่ยิ่งใหญ่) เพราะใช้เวลาหนึ่งขั้นตอนในการนับแต่ละแอปเปิ้ล สำหรับ n แอปเปิ้ลคุณต้องมี n ขั้นตอน ปัญหานี้อยู่ในระดับความซับซ้อนของ NP

ปัญหาถูกจำแนกเป็นNP-completeหากสามารถแสดงได้ว่าทั้งNP-Hardและสามารถตรวจสอบได้ในเวลาพหุนาม โดยไม่ต้องลงลึกไปในการอภิปรายของ NP-Hard มากพอเพียงเพื่อบอกว่ามีปัญหาบางอย่างที่ไม่พบการแก้ปัญหาเวลาพหุนาม นั่นคือมันใช้อะไรบางอย่างเช่น n! (n factorial) ขั้นตอนในการแก้ไข อย่างไรก็ตามหากคุณได้รับการแก้ไขปัญหา NP-Complete คุณสามารถตรวจสอบได้ในเวลาพหุนาม

ตัวอย่างคลาสสิกของปัญหา NP-Complete คือปัญหาพนักงานขายที่เดินทาง "

ผู้แต่ง: ApoxyButt จาก: http://www.everything2.com/title/NP-complete


2

ปัญหา NP: -

  1. ปัญหา NP เป็นปัญหาที่สามารถแก้ไขได้ในเวลาพหุนามแบบไม่ จำกัด
  2. อัลกอริธึมที่ไม่ได้กำหนดไว้ล่วงหน้าดำเนินการในสองขั้นตอน
  3. ขั้นการคาดเดาที่ไม่ได้กำหนดไว้ && ขั้นตอนการตรวจสอบที่ไม่ได้กำหนดอย่างแน่นอน

ประเภทของปัญหา Np

  1. NP สมบูรณ์
  2. NP Hard

ปัญหา NP Complete: -

1 ปัญหาการตัดสินใจ A เรียกว่า NP เสร็จสมบูรณ์หากมีคุณสมบัติสองอย่างต่อไปนี้: -

  1. มันเป็นของคลาส NP
  2. ปัญหาอื่น ๆ ใน NP สามารถเปลี่ยนเป็น P ได้ในเวลาพหุนาม

เช่น: -

  • ปัญหาเครื่องหลัง
  • ปัญหาผลรวมย่อยชุด
  • เวอร์เท็กซ์ครอบคลุมปัญหา

คำถามสั้น ๆ เกี่ยวกับสเตจของคุณ ... ขั้นตอนการยืนยันไม่สามารถกำหนดได้ใช่หรือไม่ ไม่ได้ยืนยันปัญหา NP ในเวลา P
Branden Keck

1

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


1

เท่าที่ฉันเข้าใจ

P คือชุดของปัญหาที่สามารถแก้ไขได้ในเวลาพหุนามกับ TM ที่กำหนด

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

NP-Hard เป็นชุดที่มีปัญหาอย่างน้อยยากเท่า NP ปัญหาใด ๆ ใน NP สามารถเปลี่ยนเป็นปัญหา NP-Hard ในเวลาพหุนาม ปัญหาเหล่านี้ไม่สามารถแก้ไขได้ในเวลาพหุนามหาก P ไม่เท่ากับ NP นั่นคือเมื่อปัญหาที่ยากที่สุดใน NP คือเวลาพหุนามสามารถแก้ไขได้แล้วปัญหา NP-Hard เท่านั้นที่สามารถแก้ไขเวลาพหุนามได้

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

โปรดแจ้งให้เราทราบหากฉันทำผิดพลาด


-17

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

ปัญหา NP-Complete คือ NP แต่ถ้าคุณสามารถแก้มันในเวลาพหุนาม (เรียกว่า P) ดังนั้นปัญหา NP ทั้งหมดคือ P

เพื่อรับ crackin '

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