เหตุใดจึงสำคัญที่ต้องพิสูจน์ว่าปัญหา NP-complete


18

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

คำตอบ:


26

อาลีคำถามที่ดี

สมมติว่าคุณต้องการแสดงให้เห็นว่าปัญหาบางอย่าง P ยากที่คำนวณได้ ตอนนี้คุณสามารถคาดเดาได้ว่า P นั้นยากเพียงแค่ขึ้นอยู่กับความจริงที่ว่าเรายังไม่มีอัลกอริธึมที่มีประสิทธิภาพเลย แต่นี่เป็นหลักฐานที่ค่อนข้างบอบบางใช่ไหม อาจเป็นได้ว่าเราพลาดวิธีที่ดีในการดู P ซึ่งจะทำให้แก้ไขได้ง่ายมาก ดังนั้นเพื่อคาดเดาว่า P นั้นยากเราต้องการรวบรวมหลักฐานเพิ่มเติม การลดลงมอบเครื่องมือที่จะทำอย่างนั้น! หากเราสามารถลดปัญหาธรรมชาติอื่น ๆ Q เป็น P ได้เราก็แสดงให้เห็นว่า P เป็นอย่างน้อยอย่างหนักเหมือน Q แต่ Q อาจเป็นปัญหาจากคณิตศาสตร์ที่แตกต่างกันโดยสิ้นเชิงและผู้คนอาจต้องดิ้นรนมานานหลายทศวรรษ . ดังนั้นเราสามารถดูความล้มเหลวของเราในการค้นหาอัลกอริทึมที่มีประสิทธิภาพสำหรับ Q เพื่อเป็นหลักฐานว่า P นั้นยาก หากเรามีคำถามมากมายเช่นนี้ '

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


ดังนั้นจุดเริ่มต้นคือการหาอัลกอริธึมที่มีประสิทธิภาพสำหรับ P แต่ดูเหมือนว่าไม่น่าจะเป็นไปได้สมมติว่า P นั้นยากต่อการคำนวณและคำตอบของคุณอธิบายส่วนที่เหลือหรือไม่
Ali

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

4
@Ali: ฉันขอแนะนำให้คุณดูตำราทฤษฎีความซับซ้อนเบื้องต้น เว็บไซต์นี้ไม่ใช่ฟอรัมสำหรับคำถามดังกล่าว แต่เพิ่มเติมสำหรับคำถามระดับการวิจัย
arnab

5
@Ali: ฉันแนะนำให้คุณอ่านGarey และ Johnsonอย่างแน่นอน การ์ตูนที่มีชื่อเสียงในหนังสือเล่มนี้ต้องห้ามพลาด!
Tsuyoshi Ito

9

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

มันมักจะเป็นหินก้าวเพราะปัญหาของคุณยังคงอยู่ที่นั่น - คุณเพียงแค่ต้องผ่อนคลายความต้องการของคุณ โดยปกติแล้วผู้คนจะพยายามหาวิธีผ่อนคลาย "อย่างมีประสิทธิภาพ", "แน่นอน" หรือ "ทั่วไป" อย่างน้อยหนึ่งรายการ ไม่มีประสิทธิภาพและแน่นอนและโดยทั่วไปคือความพยายามในการค้นหาค่าคงที่ที่ดีกว่าและดีกว่าในเลขชี้กำลังสำหรับอัลกอริทึมเหล่านี้ ที่มีประสิทธิภาพและไม่แน่นอน - และ - ทั่วไปคือการศึกษาขั้นตอนวิธีการประมาณ Efficient-and-exact-but-not-general คือการศึกษาความสามารถในการแก้ไขพารามิเตอร์และการค้นหา subclasses ของอินพุตซึ่งสามารถหาอัลกอริธึมที่มีประสิทธิภาพได้


จุดดีสำหรับสามวิธีในการผ่อนคลายปัญหา! ฉันเดาว่าอัลกอริทึมแบบสุ่มตกอยู่ในหมวดหมู่ "มีประสิทธิภาพและไม่แน่นอนและทั่วไป"
เซียน - จื้อฉาง張顯之

จริงๆ? อัลกอริธึมแบบสุ่มทั้งหมดนั้นไม่แน่นอน
Jeff

และแน่นอนว่าคุณพูดถูก JeffE นอกจากนี้ฉันเข้าใจว่าคุณกำลังสอนนักเรียนเก่าของฉันด้วยอัลกอริทึม! สำหรับประเด็นของ Hsien-Chih ฉันไม่คิดว่าอัลกอริธึมแบบสุ่มเหมาะสมในโครงการนี้ แน่นอนว่าอัลกอริธึมแบบสุ่มบางอย่าง (อัลกอริธึมทางพันธุกรรมและอวนประสาทมาถึงใจ) นั้นไม่แน่นอน แต่มีประสิทธิภาพและทั่วไป แต่อัลกอริธึมแบบสุ่มบางส่วนนั้นค่อนข้างแน่นอน - พิจารณาอัลกอริทึมในการยืนยันตัวเลข มันเป็นอัลกอริธึมแบบสุ่ม แต่ฉันค่อนข้างมั่นใจว่าไม่มีใครได้รับสิ่งที่ไม่สำคัญในการใช้งานที่สมเหตุสมผล
Peter Boothe

5

ลองดูสองกรณีที่แตกต่างกันว่าทำไมคนสองคนที่แตกต่างกันต้องการที่จะพิสูจน์ปัญหา :ยังไม่มีข้อความP-โอม.พีล.อีเสื้ออี

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

b) คุณกำลังค้นคว้าทฤษฎีความซับซ้อน ตามคำจำกัดความคุณต้องการระบุลักษณะปัญหา (หรือคลาสของปัญหา) ตามจำนวนทรัพยากรที่ต้องการเช่นความยากในการแก้ปัญหา ด้วยการพิสูจน์ว่าปัญหาบางอย่างคือคุณจะได้รับข้อมูลเชิงลึก:ยังไม่มีข้อความP-โอม.พีล.อีเสื้ออี

ยังไม่มีข้อความP-โอม.พีล.อีเสื้ออี

P=ยังไม่มีข้อความP3-SAT

ยังไม่มีข้อความP-โอม.พีล.อีเสื้ออีLผมQยูE

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


2
หลายคนแก้ปัญหา NP-complete ในทางปฏิบัติแม้ว่าพวกเขาจะยากที่จะประมาณปัญหา ในกรณีทั่วไปปัญหามากมายกลายเป็นเรื่องง่ายขึ้นแม้ว่าจะยากที่จะแสดง มันยิ่งยากที่จะพิสูจน์อะไรเกี่ยวกับอัลกอริทึมฮิวริสติกที่ทำงานได้ดีในทางปฏิบัติ ฉันแนะนำให้สถาปนิกซอฟต์แวร์ถามใครบางคนว่าปัญหานั้น "ยาก" จริง ๆ หรือไม่ก่อนที่จะยอมแพ้และเปลี่ยนแปลงการออกแบบของเธอ
Yuval Filmus

ฉันไม่ได้บอกว่าการออกแบบจำเป็นต้องเปลี่ยน การใช้อัลกอริทึมฮิวริสติกหรือการประมาณนั้นดูเหมือนว่าฉัน (ผิดพลาด?) เหมือนกับการเปลี่ยนปัญหา ... เนื่องจากรู้ว่าคุณกำลังขอคำตอบที่แม่นยำน้อยกว่า (เป็นที่ยอมรับได้หรือไม่
chazisop

3

แต่ละปัญหามีหลายการเชื่อมต่อกับปัญหาอื่น ๆ นอกจากนี้ยังมีความสัมพันธ์ระหว่างปัญหาและคลาสที่ซับซ้อน

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

ตัวอย่างเช่นนำปัญหากราฟ isomorphism (GI) ในกระดาษต่อไปนี้:

ยูอี้ชนิง, กราฟมอร์ฟอยู่ในลำดับชั้นต่ำ , การดำเนินการของ 4 ปีทัศนะในด้านทฤษฎีวิทยาการคอมพิวเตอร์ 1987, 114-124; เช่น: วารสารคอมพิวเตอร์และวิทยาศาสตร์ระบบฉบับ 37 (1988), 312–323

มันพิสูจน์แล้วว่าถ้า GI ∈ NPC ดังนั้นพหุนามลำดับชั้น (PH) จะยุบลงไปสู่ระดับที่สอง ซึ่งจะเป็นการพัฒนาครั้งใหญ่ในทฤษฎีความซับซ้อนของโครงสร้าง


3

พีพีพีพี


1
ฉันได้ยินมาว่ามีบางครั้งที่คุณพิสูจน์ให้เห็นว่าปัญหาบางอย่างของ NP-complete คุณจะต้องทำวิทยานิพนธ์ระดับปริญญาเอก มันเป็นเรื่องจริงเหรอ?
Hsien-Chih Chang 張顯之

@ Hsien-ChihChang 張顯之: ฉันไม่สามารถแสดงความคิดเห็นได้ แต่ผลลัพธ์เหล่านั้นเคยเป็นที่นิยมมากขึ้นเมื่อไม่กี่ทศวรรษที่ผ่านมา ดูเหมือนว่าวันนี้จะยากขึ้นที่จะตีพิมพ์เอกสารที่คุณ "เท่านั้น" พิสูจน์ผลความแข็ง (ยกเว้น "ปัญหาที่มีชื่อเสียง" แน่นอน) ในขณะที่มันจะไม่เป็นปัญหาใน 70's-80's ตัดสินจาก เอกสารประเภทนี้มากมายในช่วงเวลานั้น
Anthony Labarre
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.