ความแตกต่างระหว่างNP , NP-CompleteและNP-Hardคืออะไร
ฉันตระหนักถึงทรัพยากรมากมายทั่วทั้งเว็บ ฉันต้องการอ่านคำอธิบายของคุณและเหตุผลก็คือพวกเขาอาจแตกต่างจากสิ่งที่อยู่ข้างนอกหรือมีบางสิ่งที่ฉันไม่ทราบ
ความแตกต่างระหว่างNP , NP-CompleteและNP-Hardคืออะไร
ฉันตระหนักถึงทรัพยากรมากมายทั่วทั้งเว็บ ฉันต้องการอ่านคำอธิบายของคุณและเหตุผลก็คือพวกเขาอาจแตกต่างจากสิ่งที่อยู่ข้างนอกหรือมีบางสิ่งที่ฉันไม่ทราบ
คำตอบ:
ฉันคิดว่าคุณกำลังมองหาคำจำกัดความที่ใช้งานง่ายเนื่องจากคำจำกัดความทางเทคนิคต้องใช้เวลาพอสมควรในการทำความเข้าใจ ก่อนอื่นให้จำแนวคิดเบื้องต้นที่จำเป็นเพื่อทำความเข้าใจคำจำกัดความ
ตอนนี้ให้เรากำหนดผู้เรียนซับซ้อน
P เป็นระดับที่ซับซ้อนที่แสดงถึงชุดของปัญหาการตัดสินใจทั้งหมดที่สามารถแก้ไขได้ในเวลาพหุนาม
นั่นคือตัวอย่างของปัญหาคำตอบคือใช่หรือไม่ใช่สามารถตัดสินใจได้ในเวลาพหุนาม
ตัวอย่าง
เมื่อกำหนดกราฟที่เชื่อมต่อG
แล้วจุดยอดของสีสามารถใช้สองสีเพื่อไม่ให้ขอบเป็นสีเดียว?
อัลกอริทึม: เริ่มต้นด้วยจุดสุดยอดโดยพลการสีแดงและเพื่อนบ้านสีฟ้าทั้งหมดและดำเนินการต่อ หยุดเมื่อคุณหมดยอดหรือคุณถูกบังคับให้ขอบมีจุดปลายทั้งสองเป็นสีเดียวกัน
NP เป็นคลาสความซับซ้อนที่แสดงถึงชุดของปัญหาการตัดสินใจทั้งหมดซึ่งอินสแตนซ์ที่คำตอบคือ "ใช่" มีการพิสูจน์ที่สามารถตรวจสอบได้ในเวลาพหุนาม
ซึ่งหมายความว่าหากมีคนให้ตัวอย่างปัญหาและใบรับรอง (บางครั้งเรียกว่าพยาน) กับคำตอบที่ใช่เราสามารถตรวจสอบว่ามันถูกต้องในเวลาพหุนาม
ตัวอย่าง
การรวมตัวประกอบจำนวนเต็มอยู่ใน NP นี่เป็นปัญหาที่ให้จำนวนเต็มn
และm
มีจำนวนเต็มf
ด้วย1 < f < m
ที่f
หารn
( f
เป็นปัจจัยเล็ก ๆn
) หรือไม่?
นี่เป็นปัญหาในการตัดสินใจเพราะคำตอบคือใช่หรือไม่ใช่ ถ้ามีคนมือเราเป็นตัวอย่างของปัญหา (เพื่อให้พวกเขามอบให้เราจำนวนเต็มn
และm
) และจำนวนเต็มf
ด้วย1 < f < m
และอ้างว่าf
เป็นปัจจัยของn
(ใบรับรอง) เราสามารถตรวจสอบคำตอบในเวลาพหุนามn / f
โดยการดำเนินการในส่วนที่
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และพวกเขาไม่ได้จะต้องมีการตัดสินใจแก้ปัญหา
ความหมายที่ถูกต้องที่นี่เป็นที่ปัญหา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-สมบูรณ์ที่ฉันชอบคือปัญหาเรือกวาดทุ่นระเบิด
อันนี้เป็นปัญหาที่โด่งดังที่สุดในวิทยาการคอมพิวเตอร์และเป็นหนึ่งในคำถามที่สำคัญที่สุดในวิทยาศาสตร์คณิตศาสตร์ ในความเป็นจริงClay Instituteกำลังเสนอวิธีแก้ปัญหาหนึ่งล้านดอลลาร์ (การเขียนของ Stephen Cook บนเว็บไซต์ Clay ค่อนข้างดี)
เป็นที่ชัดเจนว่า P เป็นเซตย่อยของ NP คำถามเปิดคือปัญหาที่เกิดขึ้นกับปัญหา NP มีวิธีแก้ปัญหาเวลาแบบพหุนามหรือไม่ เป็นที่เชื่อกันส่วนใหญ่ว่าพวกเขาทำไม่ได้ นี่คือบทความที่โดดเด่นเมื่อเร็ว ๆ นี้ล่าสุด (และสำคัญ) ของ P = ปัญหา NP: สถานะของ P เมื่อเทียบกับปัญหา
หนังสือที่ดีที่สุดในเรื่องนี้คือคอมพิวเตอร์และ Intractabilityโดย Garey และ Johnson
ฉันกำลังมองไปรอบ ๆ และเห็นคำอธิบายที่ยาวนานมากมาย นี่คือแผนภูมิขนาดเล็กที่อาจเป็นประโยชน์ในการสรุป:
โปรดสังเกตว่าความยากเพิ่มขึ้นจากบนลงล่าง: 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
รายการ:
ฉันยังพบว่าแผนภาพนี้ค่อนข้างมีประโยชน์ในการดูว่าประเภทเหล่านี้สอดคล้องกันอย่างไร (ให้ความสำคัญกับครึ่งซ้ายของแผนภาพมากขึ้น)
นี่เป็นคำตอบที่ไม่เป็นทางการสำหรับคำถามที่ถาม
3233 สามารถเขียนเป็นผลคูณของตัวเลขสองตัวที่มากกว่า 1 ได้หรือไม่? มีวิธีใดบ้างไหมที่จะเดินไปรอบ ๆ ทั้งเจ็ด Bridges ของKönigsbergโดยไม่ใช้สะพานสองครั้ง? เหล่านี้เป็นตัวอย่างของคำถามที่ใช้ลักษณะทั่วไป อาจไม่ชัดเจนว่าจะระบุคำตอบได้อย่างมีประสิทธิภาพ แต่ถ้าคำตอบคือ 'ใช่' ก็จะมีหลักฐานสั้นและรวดเร็วในการตรวจสอบ ในกรณีแรกการแยกตัวประกอบที่ไม่ใช่เรื่องไร้สาระของ 51; ในครั้งที่สองเส้นทางสำหรับการเดินสะพาน (ข้อ จำกัด )
ตัดสินปัญหาคือชุดของคำถามที่มีคำตอบใช่หรือไม่ที่แตกต่างกันเพียง แต่ในพารามิเตอร์หนึ่ง สมมติว่าปัญหา COMPOSITE = {"Is n
composite": 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-ยาก
P (เวลาพหุนาม): ตามชื่อที่แนะนำตัวเองปัญหาเหล่านี้สามารถแก้ไขได้ในเวลาพหุนาม
NP (ไม่ใช่แบบกำหนดเวลา - พหุนาม): ปัญหาการตัดสินใจที่สามารถตรวจสอบได้ในเวลาพหุนาม นั่นหมายความว่าถ้าฉันอ้างว่ามีวิธีแก้ปัญหาเวลาพหุนามสำหรับปัญหาเฉพาะคุณขอให้ฉันพิสูจน์มัน จากนั้นฉันจะให้หลักฐานซึ่งคุณสามารถตรวจสอบได้ง่ายในเวลาพหุนาม ปัญหาประเภทนี้เรียกว่าปัญหา NP โปรดทราบว่าที่นี่เราไม่ได้พูดถึงว่ามีการแก้ปัญหาเวลาพหุนามสำหรับปัญหานี้หรือไม่ แต่เรากำลังพูดถึงการตรวจสอบการแก้ไขปัญหาที่กำหนดในเวลาพหุนาม
NP-Hard: อย่างน้อยที่สุดก็ยากพอ ๆ กับปัญหาที่ยากที่สุดใน NP หากเราสามารถแก้ปัญหาเหล่านี้ได้ในเวลาพหุนามเราสามารถแก้ปัญหา NP ใด ๆ ที่อาจเกิดขึ้นได้ โปรดทราบว่าปัญหาเหล่านี้ไม่จำเป็นต้องเป็นปัญหา NP นั่นหมายความว่าเราอาจ / อาจไม่ยืนยันวิธีแก้ปัญหาเหล่านี้ในเวลาพหุนาม
NP-Complete: ปัญหาเหล่านี้เป็นทั้งปัญหา NP และ NP-Hard นั่นหมายความว่าถ้าเราสามารถแก้ปัญหาเหล่านี้ได้เราสามารถแก้ปัญหา NP อื่น ๆ ได้และวิธีแก้ปัญหาเหล่านี้สามารถตรวจสอบได้ในเวลาพหุนาม
นอกจากคำตอบที่ยอดเยี่ยมอื่น ๆ ต่อไปนี้คือสคีมาทั่วไปที่ผู้คนใช้เพื่อแสดงความแตกต่างระหว่าง NP, NP-Complete และ NP-Hard:
วิธีที่ง่ายที่สุดในการอธิบาย P v. NP และสิ่งอื่น ๆ โดยไม่ต้องเข้าสู่ด้านเทคนิคคือการเปรียบเทียบ "ปัญหาคำศัพท์" กับ "ปัญหาหลายทางเลือก"
เมื่อคุณพยายามที่จะแก้ปัญหา "คำปัญหา" คุณต้องค้นหาวิธีแก้ไขตั้งแต่ต้น เมื่อคุณพยายามที่จะแก้ปัญหา "ปัญหาหลายทางเลือก" คุณมีทางเลือก: แก้ปัญหาแบบเดียวกับที่คุณทำกับ "ปัญหาคำศัพท์" หรือลองเสียบคำตอบแต่ละข้อที่ให้ไว้กับคุณและเลือกคำตอบที่เหมาะสม
มันมักจะเกิดขึ้นว่า "ปัญหาหลายทางเลือก" ง่ายกว่า "ปัญหาคำศัพท์" ที่สอดคล้องกัน: แทนที่คำตอบของผู้สมัครและตรวจสอบว่าพวกเขาพอดีอาจต้องใช้ความพยายามอย่างมีนัยสำคัญน้อยกว่าการหาคำตอบที่ถูกต้องตั้งแต่เริ่มต้น
ทีนี้ถ้าเราเห็นด้วยกับความพยายามที่ใช้เวลาพหุนามว่า "ง่าย" คลาส P จะประกอบด้วย "ปัญหาคำง่าย" และคลาส NP จะประกอบด้วย "ปัญหาหลายทางเลือกง่าย"
สาระสำคัญของ P v. NP คือคำถาม: "มีปัญหาแบบหลายตัวเลือกที่ไม่ง่ายเหมือนปัญหาคำศัพท์" หรือไม่? นั่นคือมีปัญหาที่ง่ายต่อการตรวจสอบความถูกต้องของคำตอบที่กำหนด แต่การหาคำตอบจากรอยขีดข่วนนั้นยากหรือไม่
ตอนนี้เราเข้าใจโดยสังเขปว่า NP คืออะไรเราต้องท้าทายสัญชาตญาณของเรา ปรากฎว่ามี "ปัญหาหลายทางเลือก" ที่ในบางแง่มุมนั้นยากที่สุดของทั้งหมด: ถ้าใครจะหาทางออกให้กับหนึ่งใน "ปัญหาที่ยากที่สุดของพวกเขาทั้งหมด" อย่างใดอย่างหนึ่งจะสามารถหาทางออกให้กับทุกคน ปัญหา NP! เมื่อกุ๊กได้ค้นพบสิ่งนี้เมื่อ 40 ปีก่อนมันเป็นเรื่องที่น่าประหลาดใจอย่างมาก ปัญหา "ที่ยากที่สุดของพวกเขาทั้งหมด" เหล่านี้เรียกว่า NP-hard หากคุณพบ "การแก้ปัญหาคำศัพท์" หนึ่งในนั้นคุณจะพบ "การแก้ปัญหาคำศัพท์" โดยอัตโนมัติสำหรับทุก ๆ คน "ปัญหาทางเลือกง่าย ๆ "!
ในที่สุดปัญหา NP-complete คือปัญหาที่เกิดขึ้นพร้อมกันกับ NP และ NP-hard การติดตามของเราคล้ายคลึงกันพวกเขาพร้อมกัน "ปัญหาง่าย ๆ หลายทางเลือก" และ "ปัญหาที่ยากที่สุดของพวกเขาทั้งหมดเป็นปัญหาคำ"
ปัญหา 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)
ฉันคิดว่าเราสามารถตอบได้อย่างกระชับยิ่งขึ้น ฉันตอบคำถามที่เกี่ยวข้องและคัดลอกคำตอบจากที่นั่น
แต่ก่อนอื่นปัญหา 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 นั้นมีจริงหรือไม่
มีคำตอบที่ดีมากสำหรับคำถามนี้ดังนั้นจึงไม่มีประเด็นที่จะเขียนคำอธิบายของฉันเอง ดังนั้นฉันจะพยายามมีส่วนร่วมกับทรัพยากรที่ยอดเยี่ยมเกี่ยวกับคลาสที่แตกต่างกันของความซับซ้อนในการคำนวณ
สำหรับคนที่คิดว่าความซับซ้อนในการคำนวณเป็นเพียงเกี่ยวกับ P และ NP นี่คือทรัพยากรที่ครบถ้วนสมบูรณ์ที่สุดเกี่ยวกับปัญหาความซับซ้อนของการคำนวณที่แตกต่างกัน นอกเหนือจากปัญหาที่ถามโดย OP แล้วยังแสดงปัญหาการคำนวณที่แตกต่างกันประมาณ 500 คลาสด้วยคำอธิบายที่ดีและรายการงานวิจัยพื้นฐานที่อธิบายชั้นเรียน
ตามที่ผมเข้าใจมันเป็นNP-ยากปัญหาไม่ได้ "ยาก" กว่าNP-สมบูรณ์ปัญหา ในความเป็นจริงตามคำนิยามทุกปัญหา np-สมบูรณ์คือ:
- คำนำ ถึงอัลกอริทึม (3ed) โดย Cormen, Leiserson, Rivest และ Stein, pg 1069
I
กับn
ตัวแปรลองใช้การ2^n
มอบหมายที่เป็นไปได้ทั้งหมดกับตัวแปรและหยุดถ้าใครทำตามข้อเสนอ เราเห็นว่าอัลกอริทึมนี้หยุดหากI
พอใจหากพอใจเท่านั้น ดังนั้นหากเรามีอัลกอริธึมเวลาพหุนามสำหรับการแก้ปัญหาการหยุดชะงักเราสามารถแก้ SAT ในเวลาพหุนาม ดังนั้นปัญหาการหยุดทำงานคือ NP-hard