ปัญหา NP-complete คืออะไร? ทำไมมันถึงเป็นหัวข้อสำคัญในสาขาวิทยาศาสตร์คอมพิวเตอร์?
ปัญหา NP-complete คืออะไร? ทำไมมันถึงเป็นหัวข้อสำคัญในสาขาวิทยาศาสตร์คอมพิวเตอร์?
คำตอบ:
NPย่อมาจากเวลาพหุนามที่ไม่ได้กำหนดค่า
ซึ่งหมายความว่าปัญหาสามารถแก้ไขได้ในเวลาพหุนามโดยใช้เครื่องทัวริงแบบไม่กำหนด (เช่นเครื่องทัวริงทั่วไป แต่ยังรวมถึงฟังก์ชั่น "ทางเลือก" ที่ไม่ได้กำหนดไว้) โดยทั่วไปวิธีการแก้ปัญหาจะต้องมีการทดสอบในเวลาโพลี หากเป็นกรณีนี้และปัญหา NP ที่เป็นที่รู้จักสามารถแก้ไขได้โดยใช้ปัญหาที่ได้รับกับอินพุตที่แก้ไข (ปัญหา NP สามารถลดลงเป็นปัญหาที่กำหนด) จากนั้นปัญหาคือปัญหา NP สมบูรณ์
สิ่งสำคัญที่จะนำไปสู่ปัญหาที่เกิดจากปัญหา NP-complete คือมันไม่สามารถแก้ไขได้ในเวลาพหุนามด้วยวิธีใด ๆ ก็ตาม NP-Hard / NP-Complete เป็นวิธีการแสดงว่าปัญหาบางประเภทไม่สามารถแก้ไขได้ในเวลาจริง
แก้ไข: ตามที่คนอื่น ๆ สังเกตมักจะมีวิธีแก้ไขปัญหาโดยประมาณสำหรับปัญหา NP-Complete ในกรณีนี้วิธีแก้ปัญหาโดยประมาณจะให้ค่าประมาณโดยใช้สัญลักษณ์พิเศษซึ่งบอกให้เราทราบว่าการประมาณนั้นใกล้แค่ไหน
NP คือชุดของปัญหาการตัดสินใจทั้งหมด(คำถามที่มีคำตอบใช่หรือไม่) ซึ่งคำตอบที่ 'ใช่' สามารถตรวจสอบได้ในเวลาพหุนาม (O (n k ) โดยที่nคือขนาดของปัญหาและkคือ คงที่) โดยเครื่องทัวริงที่กำหนด เวลาพหุนามบางครั้งใช้เป็นนิยามของอย่างรวดเร็วหรืออย่างรวดเร็ว
P คือชุดของปัญหาการตัดสินใจทั้งหมดที่สามารถแก้ไขได้ในเวลาพหุนามโดยเครื่องทัวริงที่กำหนดไว้ เนื่องจากสามารถแก้ไขได้ในเวลาพหุนามจึงสามารถตรวจสอบได้ในเวลาพหุนาม ดังนั้น P จึงเป็นเซตย่อยของ NP
ปัญหา x ที่อยู่ใน NP ยังอยู่ใน NP-Complete ถ้าหากปัญหาอื่น ๆ ใน NP สามารถทำได้อย่างรวดเร็ว (เช่นในเวลาพหุนาม) เปลี่ยนเป็น x
ในคำอื่น ๆ :
ดังนั้นสิ่งที่ทำให้NP-Completeน่าสนใจคือถ้าหากหนึ่งในปัญหา NP-Complete ใด ๆ ที่จะแก้ไขได้อย่างรวดเร็วปัญหาNPทั้งหมดจะสามารถแก้ไขได้อย่างรวดเร็ว
ดูโพสต์ของ "P = NP คืออะไร" และทำไมเป็นคำถามที่โด่งดังเช่นนี้
NP-Hard เป็นปัญหาที่อย่างน้อยยากเท่ากับปัญหาที่ยากที่สุดใน NP โปรดทราบว่าปัญหา NP-Complete นั้นก็คือ NP-hard เช่นกัน อย่างไรก็ตามปัญหา NP-hard ไม่ได้เป็นปัญหา NP (หรือแม้แต่ปัญหาการตัดสินใจ) แม้จะNP
เป็นคำนำหน้าก็ตาม นั่นคือใน NP NP-ยากไม่ได้หมายความว่าเวลาพหุนามที่ไม่กำหนด ใช่สิ่งนี้ทำให้เกิดความสับสน แต่การใช้งานนั้นยึดมั่นและไม่น่าจะเปลี่ยนแปลง
NP-Complete หมายถึงบางสิ่งที่เฉพาะเจาะจงมากและคุณต้องระวังมิเช่นนั้นคุณจะได้คำจำกัดความที่ไม่ถูกต้อง ครั้งแรกปัญหา NP คือปัญหาใช่ / ไม่ใช่เช่นนั้น
ปัญหา X คือ NP-Complete ถ้า
ถ้า X เป็น NP-complete และกำหนดขั้นตอนวิธีพหุนามมีอยู่ที่สามารถแก้ปัญหาอินสแตนซ์ทั้งหมดของ X ได้อย่างถูกต้อง (0% false-positives, 0% false-negatives) ดังนั้นปัญหาใด ๆ ใน NP สามารถแก้ไขได้ใน deterministic-polynomial- เวลา (โดยลดเป็น X)
จนถึงตอนนี้ไม่มีใครคิดอัลกอริธึมแบบพหุนามเวลาเช่นนี้ แต่ไม่มีใครพิสูจน์ได้ว่าไม่มีอยู่ (มีล้านเหรียญสำหรับใครก็ตามที่สามารถทำได้เช่นกัน: ปัญหาคือP = NP ) ไม่ได้หมายความว่าคุณไม่สามารถแก้ปัญหาอินสแตนซ์เฉพาะของปัญหา NP-Complete (หรือ NP-Hard) ได้ นั่นหมายความว่าคุณไม่สามารถมีบางสิ่งที่จะทำงานได้อย่างน่าเชื่อถือในทุกกรณีของปัญหาในลักษณะเดียวกับที่คุณสามารถเรียงลำดับรายการจำนวนเต็มได้อย่างน่าเชื่อถือ คุณอาจจะสามารถหาอัลกอริทึมที่สามารถทำงานได้ดีกับปัญหาเชิงปฏิบัติทั้งหมดของปัญหา NP-Hard
โดยทั่วไปปัญหาของโลกนี้สามารถแบ่งได้เป็น
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-Complete เป็นปัญหาระดับหนึ่ง
ชั้นP
ประกอบด้วยปัญหาเหล่านั้นที่มีการแก้ไขในเวลาพหุนาม ตัวอย่างเช่นพวกเขาสามารถแก้ไขได้ใน O (n k ) สำหรับค่าคงที่ k โดยที่nคือขนาดของอินพุต พูดง่ายๆก็คือคุณสามารถเขียนโปรแกรมที่จะทำงานในเวลาที่เหมาะสม
ชั้นNP
ประกอบด้วยปัญหาเหล่านั้นที่ตรวจสอบได้ในเวลาพหุนาม นั่นคือถ้าเราได้รับการแก้ปัญหาที่อาจเกิดขึ้นจากนั้นเราสามารถตรวจสอบว่าการแก้ปัญหาที่กำหนดนั้นถูกต้องในเวลาพหุนาม
ตัวอย่างบางส่วนคือปัญหาความพึงพอใจ Boolean (หรือSAT ) หรือปัญหารอบมิลโตเนียน มีปัญหามากมายที่รู้กันว่าอยู่ในระดับ NP
NP-Complete
หมายความว่าปัญหานั้นยากอย่างน้อยเท่ากับปัญหาใด ๆ ใน NP
วิทยาศาสตร์คอมพิวเตอร์เป็นสิ่งสำคัญเพราะได้รับการพิสูจน์แล้วว่าปัญหาใด ๆ ใน NP สามารถเปลี่ยนเป็นปัญหาอื่นใน NP-complete นั่นหมายความว่าการแก้ปัญหาใด ๆ ของปัญหา NP-complete คือทางออกของปัญหา NP ทั้งหมด
อัลกอริทึมมากมายในการรักษาความปลอดภัยขึ้นอยู่กับความจริงที่ว่าไม่มีวิธีแก้ปัญหาที่รู้จักสำหรับปัญหาหนักปัญหา มันจะมีผลกระทบอย่างมากต่อการคำนวณหากพบวิธีแก้ไข
เป็นปัญหาที่เราต้องจำลองทุกความเป็นไปได้เพื่อให้แน่ใจว่าเรามีทางออกที่ดีที่สุด
มีฮิวริสติกที่ดีมากมายสำหรับปัญหา NP-Complete บางอย่าง แต่เป็นเพียงการเดาที่ได้รับการศึกษาที่ดีที่สุด
หากคุณกำลังมองหาตัวอย่างของปัญหา 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ไม่ต้องพูดถึงความเคารพและชื่นชมจากนักวิทยาศาสตร์คอมพิวเตอร์และนักคณิตศาสตร์ทั่วโลก
ความจริงแล้วWikipediaอาจเป็นสถานที่ที่ดีที่สุดในการหาคำตอบ
ถ้า NP = P แสดงว่าเราสามารถแก้ปัญหาที่ยากได้เร็วกว่าที่เราคิดไว้ก่อนหน้านี้ หากเราแก้ปัญหา NP-Complete เพียงหนึ่งปัญหาในเวลา P (พหุนาม) ก็จะสามารถนำไปใช้กับปัญหาอื่น ๆ ทั้งหมดในหมวด NP-Complete
เราจำเป็นต้องแยกอัลกอริทึมและปัญหา เราเขียนอัลกอริธึมเพื่อแก้ปัญหาและปรับขนาดด้วยวิธีใดวิธีหนึ่ง แม้ว่านี่จะเป็นการทำให้เป็นเรื่องง่าย แต่เรามาติดป้ายอัลกอริทึมด้วย 'P' ถ้ามาตราส่วนนั้นดีพอและ 'NP' ถ้าไม่ใช่
การรู้สิ่งต่าง ๆ เกี่ยวกับปัญหาที่เราพยายามแก้ไขเป็นประโยชน์มากกว่าอัลกอริทึมที่เราใช้ในการแก้ปัญหา ดังนั้นเราจะบอกว่าปัญหาทั้งหมดที่มีอัลกอริธึมการปรับสเกลเป็น "in P" และอันที่มีอัลกอริธึมที่มีขนาดต่ำก็คือ "ใน NP"
นั่นหมายความว่าปัญหาง่าย ๆ หลายอย่างก็คือ "ใน NP" ด้วยเช่นกันเพราะเราสามารถเขียนอัลกอริทึมที่ไม่ดีเพื่อแก้ปัญหาง่าย เป็นการดีที่จะทราบว่าปัญหาใดใน NP เป็นปัญหาที่ยุ่งยาก แต่เราไม่ต้องการพูดว่า "เป็นปัญหาที่เรายังไม่พบอัลกอริทึมที่ดีสำหรับ" ท้ายที่สุดฉันสามารถเกิดปัญหาขึ้นได้ (เรียกว่า X) ซึ่งฉันคิดว่าต้องมีอัลกอริธึมที่ยอดเยี่ยมมาก ฉันบอกให้โลกรู้ว่าอัลกอริทึมที่ดีที่สุดที่ฉันสามารถหาได้ในการแก้ปัญหา X ของเครื่องชั่งไม่ดีและดังนั้นฉันจึงคิดว่า X เป็นปัญหาที่ยากมาก แต่พรุ่งนี้อาจมีบางคนที่ฉลาดกว่าฉันประดิษฐ์อัลกอริทึมที่แก้ X และเป็น P ดังนั้นนี่จึงไม่ใช่คำจำกัดความที่ดีของปัญหาที่ยาก
ในทำนองเดียวกันมีปัญหามากมายใน NP ที่ไม่มีใครรู้วิธีที่ดีสำหรับ ดังนั้นถ้าฉันสามารถพิสูจน์ได้ว่า X เป็นประเภทหนึ่งของปัญหาหนึ่งที่ขั้นตอนวิธีการที่ดีในการแก้ X อาจยังถูกนำมาใช้ในบางทางอ้อมเพื่อให้ขั้นตอนวิธีการที่ดีสำหรับทุกปัญหาอื่น ๆ ใน NP ตอนนี้ผู้คนอาจจะเชื่อว่า X เป็นปัญหาที่ยุ่งยากอย่างแท้จริง และในกรณีนี้เราเรียก X NP-Complete
คำจำกัดความสำหรับปัญหาที่สมบูรณ์ของปัญหา NP ข้างต้นนั้นถูกต้อง แต่ฉันคิดว่าฉันอาจคร่ำครวญเกี่ยวกับความสำคัญทางปรัชญาของพวกเขาเนื่องจากยังไม่มีใครได้แก้ไขปัญหานั้น
ปัญหาที่ซับซ้อนเกือบทั้งหมดที่คุณพบเจอจะเป็นปัญหาที่สมบูรณ์ มีบางอย่างพื้นฐานเกี่ยวกับคลาสนี้และซึ่งดูเหมือนว่าจะแตกต่างจากการคำนวณปัญหาที่แก้ไขได้ง่าย พวกเขามีรสชาติของตัวเองและไม่ยากที่จะจดจำพวกเขา โดยทั่วไปหมายความว่าอัลกอริธึมที่ซับซ้อนในระดับปานกลางนั้นเป็นไปไม่ได้สำหรับคุณที่จะแก้ปัญหาอย่างแน่นอน - การกำหนดเวลาการเพิ่มประสิทธิภาพการบรรจุการบรรจุ ฯลฯ
แต่ไม่ใช่ทั้งหมดจะหายไปหากปัญหาที่คุณพบคือ NP Complete มีสาขาวิชาที่กว้างใหญ่และมีเทคนิคเป็นอย่างมากที่ผู้คนศึกษาอัลกอริธึมการประมาณซึ่งจะทำให้คุณรับประกันได้ว่าจะได้ใกล้เคียงกับการแก้ปัญหาที่เกิดขึ้นอย่างสมบูรณ์ สิ่งเหล่านี้คือการรับประกันที่แข็งแกร่งอย่างเหลือเชื่อ - ตัวอย่างเช่นสำหรับ 3sat คุณสามารถได้รับการรับประกัน 7/8 โดยใช้อัลกอริทึมที่ชัดเจนจริงๆ ยิ่งไปกว่านั้นในความเป็นจริงมีฮิวริสติกที่แข็งแกร่งมากซึ่งให้คำตอบที่ดี (แต่ไม่รับประกัน!) สำหรับปัญหาเหล่านี้
โปรดทราบว่าสองปัญหาที่มีชื่อเสียงมาก - กราฟ isomorphism และ factoring - ไม่ทราบว่าเป็น P หรือ NP
ฉันเคยได้ยินคำอธิบายนั่นคือ: "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
ปัญหา NP Complete: -
1 ปัญหาการตัดสินใจ A เรียกว่า NP เสร็จสมบูรณ์หากมีคุณสมบัติสองอย่างต่อไปนี้: -
เช่น: -
ปัญหา NP-complete เป็นชุดของปัญหาที่แต่ละปัญหา NP อื่น ๆ สามารถลดลงในเวลาพหุนามและวิธีการแก้ปัญหาที่อาจยังคงถูกตรวจสอบในเวลาพหุนาม นั่นคือปัญหา NP ใด ๆ สามารถเปลี่ยนเป็นปัญหาใด ๆ ของปัญหา NP-complete - อย่างไม่เป็นทางการปัญหา NP-complete คือปัญหา NP ที่อย่างน้อย "เหนียว" เหมือนกับปัญหาอื่น ๆ ใน NP
เท่าที่ฉันเข้าใจ
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 ใด ๆ ก็สามารถแก้ไขได้ด้วยประสิทธิภาพเดียวกัน
โปรดแจ้งให้เราทราบหากฉันทำผิดพลาด
ปัญหา NP เป็นสิ่งหนึ่งที่อัลกอริทึมคอมพิวเตอร์ที่ตรวจสอบวิธีแก้ไขสามารถสร้างขึ้นในเวลาพหุนาม
ปัญหา NP-Complete คือ NP แต่ถ้าคุณสามารถแก้มันในเวลาพหุนาม (เรียกว่า P) ดังนั้นปัญหา NP ทั้งหมดคือ P
เพื่อรับ crackin '