ฉันกำลังเรียนหลักสูตรที่ซับซ้อนและฉันมีปัญหากับการลดระดับลงระหว่างปัญหา NPC ฉันจะหาวิธีลดปัญหาระหว่างปัญหาได้อย่างไร มีเคล็ดลับทั่วไปที่ฉันสามารถใช้ได้หรือไม่? ฉันจะเข้าหาปัญหาที่ขอให้ฉันพิสูจน์ว่าปัญหาคือ NPC ได้อย่างไร
ฉันกำลังเรียนหลักสูตรที่ซับซ้อนและฉันมีปัญหากับการลดระดับลงระหว่างปัญหา NPC ฉันจะหาวิธีลดปัญหาระหว่างปัญหาได้อย่างไร มีเคล็ดลับทั่วไปที่ฉันสามารถใช้ได้หรือไม่? ฉันจะเข้าหาปัญหาที่ขอให้ฉันพิสูจน์ว่าปัญหาคือ NPC ได้อย่างไร
คำตอบ:
ไม่มีกระสุนวิเศษ การพิสูจน์ความแข็งแบบ NP นั้นยาก อย่างไรก็ตามมีกรอบทั่วไปสำหรับการพิสูจน์ดังกล่าวทั้งหมด นักเรียนหลายคนที่ต่อสู้กับหลักฐานพิสูจน์ความแข็งของ NP นั้นสับสนเกี่ยวกับสิ่งที่พวกเขาควรจะทำซึ่งเห็นได้ชัดว่าทำให้เป็นไปไม่ได้ที่จะคิดออกว่าจะทำอย่างไร ดังนั้นนี่คือสิ่งที่ต้องทำเพื่อพิสูจน์ปัญหา NP-hard
แรกเว้นแต่คุณเพิ่งทำบ้านของคุณจะต้องตัดสินใจว่าปัญหา NP-ยากที่จะลดปัญหาของคุณ นี่เป็นคำถามของ "กลิ่น" เป็นส่วนใหญ่ หากจำนวน 3 ปรากฏที่ใดก็ได้ในงบปัญหาลองลดลงจากหรือหรือ{} (ใช่ฉันร้ายแรง.) หากปัญหาของคุณเกี่ยวข้องกับการหา subsequence ที่ดีที่สุดหรือเปลี่ยนแปลงหรือเส้นทางลองลดจากหรือ{} หากปัญหาของคุณถามชุดย่อยที่เล็กที่สุดที่มีคุณสมบัติหนึ่งให้ลอง ; ถ้ามันถามหาเซตย่อยที่ใหญ่ที่สุดที่มีคุณสมบัติที่แน่นอนลอง. หากปัญหาของคุณเกี่ยวข้องกับการทำบางสิ่งบางอย่างในเครื่องบินลองหรือ{} และอื่น ๆ หากปัญหาของคุณไม่ "ได้กลิ่น" เหมือนอะไรหรือน่าจะเป็นทางออกที่ดีที่สุดของคุณ
เห็นได้ชัดว่าคุณต้องรู้อย่างถ่องแท้ ว่าปัญหาเหล่านี้ถูกกำหนดไว้อย่างไร ดังนั้นในขณะที่เย็นเป็นผลที่ได้อาจมีลักษณะในท้ายที่สุดแล้วผมไม่แนะนำให้ลดลงจากหรือหรือหรือ{}
ประการที่สองการลดจริง ในการลดปัญหา X (สิ่งที่คุณรู้คือ NP-hard) เป็นปัญหา Y (สิ่งที่คุณพยายามพิสูจน์คือ NP-hard คุณต้องอธิบายอัลกอริทึมที่แปลงอินสแตนซ์ตามอำเภอใจของ X เป็นอินสแตนซ์ตามกฎหมายของ Y . ความต้องการขั้นตอนวิธีการลดที่จะทำบางสิ่งบางอย่างที่เฉพาะเจาะจงกับแต่ละ "คุณสมบัติ" ของ X-เช่น; ส่วนของการส่งออกของแต่ละ "คุณสมบัติ" มักจะเรียกว่าแกดเจ็ต
แต่คุณสมบัติคืออะไร ขึ้นอยู่กับปัญหา X ตัวอย่าง:
ในการแปลงอินสแตนซ์ของคุณจะต้องมีแกดเจ็ตสำหรับแต่ละตัวแปรและสำหรับแต่ละส่วนในสูตรอินพุต แกดเจ็ตตัวแปรแต่ละตัวควรมี "สถานะ" สองตัวที่สอดคล้องกับ "จริง" และ "เท็จ" แกดเจ็ตประโยคแต่ละข้อควรมี "สถานะ" หลายอันซึ่งแต่ละอันบังคับให้อย่างน้อยหนึ่งตัวอักษรในประโยคนั้นเป็นจริง (รัฐไม่ได้เป็นส่วนหนึ่งของผลลัพธ์ของอัลกอริทึมการลด)
ในการแปลงอินสแตนซ์ของคุณจะต้องมีอุปกรณ์สำหรับแต่ละจุดยอดและแต่ละส่วนของกราฟป้อนข้อมูลและแต่ละส่วนของกราฟและอีกแกดเจ็ตอื่นเพื่อกำหนดสามสี
ในการแปลงอินสแตนซ์ของคุณจะต้องมีอุปกรณ์สำหรับแต่ละอินพุตสำหรับแต่ละสายและสำหรับแต่ละประตูในวงจรอินพุต
รูปแบบที่เกิดขึ้นจริงของแกดเจ็ตขึ้นอยู่กับปัญหา Y หนึ่งที่คุณกำลังลดการ ตัวอย่างเช่นหากคุณกำลังลดปัญหาเกี่ยวกับกราฟแกดเจ็ตของคุณจะเป็นกราฟย่อยขนาดเล็ก ดูบทความ Wikipedia หากคุณกำลังลดปัญหาเกี่ยวกับการกำหนดเวลา Gadget แต่ละอันจะเป็นชุดของงานที่จะกำหนดเวลาไว้ หากคุณลดปัญหาเกี่ยวกับมาริโอแกดเจ็ตแต่ละรายการจะเป็นกลุ่มของบล็อกและอิฐและคูปา
สิ่งนี้อาจสร้างความสับสนหากปัญหาทั้งสองเกี่ยวข้องกับวัตถุชนิดเดียวกัน ตัวอย่างเช่นหากทั้ง X และ Y เป็นปัญหาเกี่ยวกับกราฟอัลกอริทึมของคุณจะแปลงหนึ่งกราฟ (อินสแตนซ์ของ X) เป็นกราฟอื่น (อินสแตนซ์ของ Y) เลือกรูปแบบของคุณอย่างชาญฉลาดเพื่อที่คุณจะได้ไม่สับสนทั้งสองกราฟ ฉันขอแนะนำอย่างยิ่งให้ใช้หมึกหลายสี
สุดท้ายอัลกอริทึมการลดของคุณจะต้องตอบสนองคุณสมบัติสามประการ:
มันทำงานในเวลาพหุนาม (ซึ่งมักเป็นเรื่องง่าย)
หากอัลกอริทึมการลดของคุณได้รับอินสแตนซ์ที่เป็นบวกของ X เป็นอินพุทมันจะสร้างอินสแตนซ์ที่เป็นบวกของ Y เป็นเอาต์พุต
หากอัลกอริทึมการลดของคุณสร้างอินสแตนซ์ที่เป็นบวกของ Y เป็นเอาต์พุตนั้นจะต้องได้รับอินสแตนซ์ที่เป็นบวกของ X เป็นอินพุต
มีความละเอียดอ่อนที่สำคัญที่นี่ อัลกอริทึมการลดของคุณจะทำงานในทิศทางเดียวเท่านั้นจากอินสแตนซ์ของ X เป็นอินสแตนซ์ของ Y แต่การพิสูจน์อัลกอริทึมที่ถูกต้องจำเป็นต้องให้เหตุผลเกี่ยวกับการเปลี่ยนแปลงในทั้งสองทิศทาง คุณต้องจำไว้ว่าอัลกอริธึมการลดของคุณไม่สามารถบอกได้ว่าอินสแตนซ์ที่กำหนดของ X นั้นเป็นบวกหรือลบ - ซึ่งจะต้องแก้ไขปัญหา NP-hard ในเวลาพหุนาม
นั่นเป็นสิ่งที่ วิธีเพียงมาพร้อมกับการปฏิบัติ
JeffE สรุปกลยุทธ์ที่พบบ่อยที่สุด: รู้ปัญหา NP-complete มากมายค้นหาปัญหาที่เข้ากันได้ดีและทำให้ลดลงได้ง่าย
อีกกลยุทธ์ที่ถูกต้องคือใช้ 3SAT เสมอ (หรือปัญหาอื่น ๆ ) นี้อาจทำให้การลดบางส่วนที่ซับซ้อนมากขึ้น แต่กลับหัวกลับหางคือคุณมีจำนวนมากของประสบการณ์การแสดง satifiability ในรูปแบบอื่น ๆ ของปัญหา ดังนั้นคุณจะประหยัดเวลาในการหาพันธมิตรการลดที่ดี (รวมถึงการสิ้นสุด) และหวังว่าประสบการณ์ของคุณจะช่วยให้คุณสามารถลดได้อย่างรวดเร็วแม้ว่ามันจะยากกว่าก็ตาม
วิธีนี้มีเมตาความงามด้วยเช่นกัน: (3) SAT เป็นหนึ่งในปัญหาสองสามอย่างที่ NP-ครบถ้วนได้รับการพิสูจน์แล้ว (เกือบ) โดยตรง ดังนั้นการพึ่งพาเพียงหลักฐานนั้นจะทำให้ "ต้นไม้พิสูจน์" ของคุณแบนโดยหลีกเลี่ยงการลดลงของสายโซ่ยาว