ฉันจะสร้างการลดระหว่างปัญหาเพื่อพิสูจน์ว่าปัญหานั้นสมบูรณ์ได้อย่างไร


27

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


4
ขอโทษที่ทำให้ผิดหวังฉันไม่คิดว่าจะมีวิธีการแก้ปัญหามันทั้งหมด เช่นเดียวกับปัญหาต่าง ๆ ในชีวิตแต่ละคนมีเอกลักษณ์ .. หวังว่าเมื่อเวลาผ่านไปคุณจะได้รู้วิธีแก้ปัญหา
Ran G.

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

คำตอบ:


45

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

แรกเว้นแต่คุณเพิ่งทำบ้านของคุณจะต้องตัดสินใจว่าปัญหา NP-ยากที่จะลดปัญหาของคุณ นี่เป็นคำถามของ "กลิ่น" เป็นส่วนใหญ่ หากจำนวน 3 ปรากฏที่ใดก็ได้ในงบปัญหาลองลดลงจากหรือหรือ{} (ใช่ฉันร้ายแรง.) หากปัญหาของคุณเกี่ยวข้องกับการหา subsequence ที่ดีที่สุดหรือเปลี่ยนแปลงหรือเส้นทางลองลดจากหรือ{} หากปัญหาของคุณถามชุดย่อยที่เล็กที่สุดที่มีคุณสมบัติหนึ่งให้ลอง ; ถ้ามันถามหาเซตย่อยที่ใหญ่ที่สุดที่มีคุณสมบัติที่แน่นอนลอง3SAT3Color3PartitionHamiltonianCycleHamiltonianPathCliqueIndependentSet. หากปัญหาของคุณเกี่ยวข้องกับการทำบางสิ่งบางอย่างในเครื่องบินลองหรือ{} และอื่น ๆ หากปัญหาของคุณไม่ "ได้กลิ่น" เหมือนอะไรหรือน่าจะเป็นทางออกที่ดีที่สุดของคุณPlanarCircuitSATPlanarTSP3SATCircuitSAT

เห็นได้ชัดว่าคุณต้องรู้อย่างถ่องแท้ ว่าปัญหาเหล่านี้ถูกกำหนดไว้อย่างไร ดังนั้นในขณะที่เย็นเป็นผลที่ได้อาจมีลักษณะในท้ายที่สุดแล้วผมไม่แนะนำให้ลดลงจากหรือหรือหรือ{}MinesweeperTetrisOneCheckersMoveSuperMarioBros

ประการที่สองการลดจริง ในการลดปัญหา X (สิ่งที่คุณรู้คือ NP-hard) เป็นปัญหา Y (สิ่งที่คุณพยายามพิสูจน์คือ NP-hard คุณต้องอธิบายอัลกอริทึมที่แปลงอินสแตนซ์ตามอำเภอใจของ X เป็นอินสแตนซ์ตามกฎหมายของ Y . ความต้องการขั้นตอนวิธีการลดที่จะทำบางสิ่งบางอย่างที่เฉพาะเจาะจงกับแต่ละ "คุณสมบัติ" ของ X-เช่น; ส่วนของการส่งออกของแต่ละ "คุณสมบัติ" มักจะเรียกว่าแกดเจ็ต

แต่คุณสมบัติคืออะไร ขึ้นอยู่กับปัญหา X ตัวอย่าง:

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

  • ในการแปลงอินสแตนซ์ของคุณจะต้องมีอุปกรณ์สำหรับแต่ละจุดยอดและแต่ละส่วนของกราฟป้อนข้อมูลและแต่ละส่วนของกราฟและอีกแกดเจ็ตอื่นเพื่อกำหนดสามสี3Color

  • ในการแปลงอินสแตนซ์ของคุณจะต้องมีอุปกรณ์สำหรับแต่ละอินพุตสำหรับแต่ละสายและสำหรับแต่ละประตูในวงจรอินพุตPlanarCircuitSat

รูปแบบที่เกิดขึ้นจริงของแกดเจ็ตขึ้นอยู่กับปัญหา Y หนึ่งที่คุณกำลังลดการ ตัวอย่างเช่นหากคุณกำลังลดปัญหาเกี่ยวกับกราฟแกดเจ็ตของคุณจะเป็นกราฟย่อยขนาดเล็ก ดูบทความ Wikipedia หากคุณกำลังลดปัญหาเกี่ยวกับการกำหนดเวลา Gadget แต่ละอันจะเป็นชุดของงานที่จะกำหนดเวลาไว้ หากคุณลดปัญหาเกี่ยวกับมาริโอแกดเจ็ตแต่ละรายการจะเป็นกลุ่มของบล็อกและอิฐและคูปา

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

สุดท้ายอัลกอริทึมการลดของคุณจะต้องตอบสนองคุณสมบัติสามประการ:

  • มันทำงานในเวลาพหุนาม (ซึ่งมักเป็นเรื่องง่าย)

  • หากอัลกอริทึมการลดของคุณได้รับอินสแตนซ์ที่เป็นบวกของ X เป็นอินพุทมันจะสร้างอินสแตนซ์ที่เป็นบวกของ Y เป็นเอาต์พุต

  • หากอัลกอริทึมการลดของคุณสร้างอินสแตนซ์ที่เป็นบวกของ Y เป็นเอาต์พุตนั้นจะต้องได้รับอินสแตนซ์ที่เป็นบวกของ X เป็นอินพุต

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

นั่นเป็นสิ่งที่ วิธีเพียงมาพร้อมกับการปฏิบัติ


5
สำหรับการลดลงจาก (และปัญหาทั่วไปที่มีลักษณะคล้ายกัน "ท้องถิ่น / โครงสร้างระดับโลก") มันอาจจะเป็นความคิดที่ดีที่จะลองทำมันเป็นครั้งแรกสำหรับกรณีข้อเดียวของ3SATที่สามารถให้แนวคิดแก่คุณเกี่ยวกับแกดเจ็ตที่คุณต้องใช้สำหรับส่วนคำสั่ง หลังจากที่พบแกดเจ็ตสำหรับประโยคหนึ่งลดลงของคุณจะใส่หนึ่ง Gadget เหล่านี้สำหรับข้อแต่ละคนและแล้วอย่างใดบังคับใช้สภาพทั่วโลก (เช่นค่าความจริงสำหรับการเกิดขึ้นของตัวแปรที่ปรากฏในข้อที่แตกต่างกันควรจะสอดคล้องตัวแปรประพจน์ไม่สามารถ เป็นในประโยคหนึ่งและอีก ) 3SAT3SATptruefalse
Kaveh

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

11

JeffE สรุปกลยุทธ์ที่พบบ่อยที่สุด: รู้ปัญหา NP-complete มากมายค้นหาปัญหาที่เข้ากันได้ดีและทำให้ลดลงได้ง่าย

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

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


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

3
ฉันไม่แน่ใจเกี่ยวกับการอ้างสิทธิ์ว่าเป็นปัญหาเดียวที่ได้รับการพิสูจน์แล้วว่าเป็นปัญหา NP-complete โดยตรง ในความเป็นจริงถ้าคุณตีความมันในความหมายที่เข้มงวดแล้วมันก็เป็นเท็จอย่างแน่นอน บทความในปี 1971 ของ Cook เกี่ยวกับ TAUT ไม่ใช่ SAT (เขาใช้ Cook Reduction ไม่ใช่ Karp Reduction) (เป็นการสังเกตง่ายๆว่าหลักฐานพิสูจน์ได้ว่า SAT นั้นเป็นปัญหา NP-complete ภายใต้การลด Karp)
Kaveh

@Kaveh Huh? Tautology เสร็จสิ้นการ Co-Np ดังนั้นจึงไม่ทราบว่าอยู่ใน NP (- สมบูรณ์) ฉันไม่ได้อ่านกระดาษของ Cook
Albert Hendriks

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