การสอน NP-ครบถ้วน - การทัวริงการลดลงเทียบกับการลดคาร์ป


25

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

ฉันรู้สึกว่าแนวคิดของความสมบูรณ์แบบ NP และการลดลงเป็นสิ่งที่วิทยาศาสตร์คอมพิวเตอร์ทุกคนควรเรียนรู้ อย่างไรก็ตามเมื่อสอน NP-ครบถ้วนฉันได้สังเกตเห็นว่าการใช้ Karp Reduction มีข้อเสีย

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

ฉันเข้าใจความแตกต่างระหว่างการลด Karp และการลด Turing (Cook) และวิธีที่พวกเขานำไปสู่แนวคิดที่แตกต่างของความสมบูรณ์แบบ NP ฉันตระหนักว่าการลดคาร์ปทำให้เรามีความแตกต่างที่ละเอียดยิ่งขึ้นระหว่างคลาสความซับซ้อน ดังนั้นสำหรับการศึกษาทฤษฎีความซับซ้อนอย่างจริงจังการลดคาร์ปจึงเป็นเครื่องมือที่เหมาะสม แต่สำหรับนักศึกษาวิทยาศาสตร์คอมพิวเตอร์ที่เพิ่งเรียนรู้สิ่งนี้และไม่เคยไปสู่ทฤษฎีความซับซ้อนฉันไม่แน่ใจว่าการแยกความแตกต่างที่ดีกว่านี้มีความสำคัญอย่างยิ่งหรือไม่

ในที่สุดในฐานะนักเรียนฉันจำได้ว่ารู้สึกงุนงงเมื่อฉันพบปัญหาเช่น "ซ้ำซาก" - เช่นกำหนดสูตรบูลีนตรวจสอบว่าเป็นวิชาซ้ำซาก สิ่งที่สับสนคือปัญหานี้ชัดเจนยาก: อัลกอริธึมเวลาพหุนามใด ๆ สำหรับมันจะบ่งบอกว่าP=NP; เห็นได้ชัดว่าการแก้ปัญหานี้ยากพอ ๆ กับการแก้ไขปัญหาซ้ำซาก อย่างไรก็ตามถึงแม้ว่าการหยั่งรู้เชิงสัญชาตญาณนั้นยากพอ ๆ กับความน่าพอใจ ใช่ฉันเข้าใจในวันนี้ว่าทำไมถึงเป็นเช่นนี้ แต่ในเวลานั้นฉันจำได้ว่ากำลังงงกับเรื่องนี้ (สิ่งที่ผ่านเข้ามาในหัวของฉันเมื่อฉันเข้าใจในที่สุดก็คือ: ทำไมเราถึงแยกความแตกต่างระหว่าง NP-hard และ co-NP-hard ต่อไป? ที่ดูเหมือนว่าประดิษฐ์และไม่ได้รับแรงบันดาลใจจากการฝึกฝนมากนัก มากกว่า co-NP พวกเขาดูเหมือนเป็นธรรมชาติเท่า ๆ กันจากมุมมองที่ปฏิบัติ co-NP- ความแข็งดูเหมือนว่าจะมีผลในทางปฏิบัติเช่นเดียวกับ NP-hardness ดังนั้นทำไมเราถึงถูกวางลงบนความแตกต่างนี้ใช่ฉันรู้ คำตอบ แต่ในฐานะนักเรียนฉันจำได้ว่าสิ่งนี้ทำให้เรื่องรู้สึกมีความลับมากขึ้นและมีแรงจูงใจต่ำ)

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


ที่เกี่ยวข้อง: ดูที่นี่และที่นี่ซึ่งกล่าวถึงเหตุผลที่ว่าทำไมเราถึงใช้การลดลงของ Karp ในวรรณคดีเพราะมันช่วยให้เราสามารถแยกแยะความแตกต่างระหว่างความกระด้างและความแข็งร่วม อย่างไรก็ตามดูเหมือนว่าจะไม่ได้ให้คำตอบใด ๆ ที่มุ่งเน้นไปที่มุมมองการสอนว่าความสามารถนี้มีความสำคัญต่อวัตถุประสงค์การเรียนรู้ของคลาสอัลกอริทึมที่ควรได้รับการปฏิบัติโดย CS ทุกสาขาหรือไม่ ดูเพิ่มเติมได้ที่นี่ใน cstheory.SEซึ่งมีการสนทนาที่คล้ายกัน


สร้างแรงบันดาลใจสังเกต: ทัวริง-ลดปัญหาในการ NP จะไม่เป็นที่รู้จักที่จะบ่งบอก{} XNP

1
@RickyDemer เข้าใจ - แต่เมื่อเราพยายามแสดงให้เห็นถึงปัญหานั้นยากเราไม่สนใจว่าอยู่ใน NP หรือไม่ดังนั้นมันจึงไม่ได้กระตุ้นให้ฉันมีประสิทธิภาพมากนัก และการแสดงปัญหาเป็นเรื่องยากคือการใช้งานหลักของ NP, NP-ครบถ้วนสมบูรณ์, NP-hardness ฯลฯX
DW

1
ฉันไม่เห็นความแตกต่างมากนัก แนวคิดการทำอาหารของ "การเรียกใช้การแก้ปัญหาอื่น ๆ " เป็นเรื่องปกติสำหรับการเขียนโปรแกรมแต่สำหรับผู้ที่มีพื้นหลังที่เป็นนามธรรม (การคำนวณทางคณิตศาสตร์ที่ไม่ต่อเนื่อง) การทำแผนที่ระหว่างกรณีปัญหาก็เป็นเรื่องธรรมดา
vonbrand

คำตอบ:


10

ฉันจะบอกอย่างแน่นอนว่าสอนโดยใช้การลด Karp (หลายคน) โดยไม่คำนึงถึงประโยชน์ของการใช้การลดทอนทัวริงแบบเวลา (คุก) การลด Karp เป็นรูปแบบมาตรฐาน

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

ฉันยอมรับว่าการลดลงของ Cook นั้นมีความสมเหตุสมผลมากกว่าและไม่มีความแตกต่างระหว่างความแข็งของ NP และความแข็งของ CONP ในแง่ที่ปฏิบัติได้ในแง่ที่ว่าพวกเขาทั้งสองหมายถึง "ปัญหานี้ค่อนข้างยากและคุณจะไม่ได้ อัลกอริทึมทั่วไปที่มีประสิทธิภาพและแน่นอนที่สามารถรับมือกับอินสแตนซ์ขนาดใหญ่ได้ " ในทางตรงกันข้ามความแตกต่างระหว่าง NP และ coNP ไม่ใช่สิ่งประดิษฐ์ทั้งหมดของทฤษฎีที่อิงจากการลดลงของคาร์ป: คุณมักจะไม่พูดถึงกราฟที่ไม่ได้มี 3 สีหรือที่ จุดยอดทุกชุดมีที่ ขอบอย่างน้อยหนึ่ง ยังไงก็ตามรุ่น "ธรรมชาติ" ของปัญหามักจะดูเหมือนจะอยู่ใน NP มากกว่า coNPk


7

มันจะดีกว่าที่จะสอนทั้งสอง ! วิชาเอกวิทยาการคอมพิวเตอร์ควรรู้เกี่ยวกับทั้งคู่

ฉันไม่รู้จักใครก็ตามที่ใช้การลด Cook สำหรับการสอน NP-ครบถ้วนสมบูรณ์นักทฤษฎีความซับซ้อนไม่ชัดเจนนักทฤษฎีที่ไม่ซับซ้อนมักจะทำตามสิ่งที่เป็นคำจำกัดความมาตรฐานตั้งแต่กระดาษของ Karp และใช้ในหนังสือทุกเล่ม (ที่ฉันรู้) มันจะทำให้เกิดความสับสนมากมายสำหรับพวกเขาในภายหลังหากคุณไม่ปฏิบัติตามคำศัพท์มาตรฐาน

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

NPNPPNPNP

NPcoNPNPNPNPPNP

xAf(x)B


2
NPNPNPNP

@DW คุณหมายถึง "Cook" แทนที่ (Karp) (ที่สองและสาม) "Karp" ในความคิดเห็นของคุณหรือไม่ คุณยังสามารถพิสูจน์ได้ว่าปัญหาเกิดขึ้นยากเมื่อใช้ Cook ซึ่งไม่ใช่ปัญหา ปัญหาคือว่า NP ไม่ได้ปิดอยู่ภายใต้พวกเขาเช่นการลด Cook ไม่รักษาอย่างมีประสิทธิภาพ verifiableness ของปัญหา
Kaveh

2
โอ๊ะใช่ฉันหมายถึงคุกไม่ใช่ Karp (argh!) ฉันเข้าใจว่า NP ไม่ได้ปิดภายใต้การลด Cook แต่คุณสามารถอธิบายอย่างละเอียดว่าทำไมมันจึงเป็นปัญหาจากมุมมองของวิธีที่เราสอนอัลกอริทึมถึงปริญญาตรี? ปัญหาการเรียนการสอนหรือแนวคิดใดที่สร้างขึ้น? อะไรจะเป็นผลลบหากเราสอนอัลกอริธึมแบบนั้นและเพิ่งยอมรับ / ยอมรับว่า NP ไม่ได้ถูกปิดภายใต้การลด Cook ยกตัวอย่างเช่นมันจะทำให้เกิดความเข้าใจผิดเกี่ยวกับแนวคิดที่เป็นปัญหาระหว่างนักเรียนหรือไม่
DW

-3

ความคิดที่เข้าใจง่ายของการลดคือ "ถ้าฉันมีอัลกอริทึมในการแก้ปัญหา X จากนั้นฉันก็สามารถใช้มันเพื่อแก้ปัญหา Y ได้เช่นกัน"

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

ดังนั้นทฤษฎีกำลังบอกเราถึงวิธีดูการคำนวณพื้นฐานว่าเป็นกระบวนการที่อาจส่งคืนคำตอบในบางสถานการณ์ ในสถานการณ์อื่น ๆ มันอาจไม่ สำหรับความสมบูรณ์และความน่าเชื่อถือของ NP ปัญหาพื้นฐานและคำถามทั่วไปส่วนใหญ่คือ "มีอัลกอริทึมที่กลับมาYในเวลา P" หรือไม่ แต่สิ่งนี้ไม่ได้บอกอะไรเกี่ยวกับอัลกอริทึมที่คืนค่าNในเวลา P อัลกอริทึมสามารถกลับมาYในเวลา P สำหรับหนึ่งอินสแตนซ์ แต่ไม่ส่งคืนคำตอบในอินสแตนซ์อื่น ทฤษฎีบอกเราว่ามีความแตกต่างอย่างชัดเจนที่นี่ที่เราต้องใส่ใจอย่างใกล้ชิด ถ้ามันใช้งานง่ายมันหมายถึงสัญชาติญาณพื้นฐานของเราจำเป็นต้องปรับใหม่ (เช่นในกรณีของการสอนเชิงทฤษฎี)


ในคำอื่น ๆ ที่เห็นได้ชัดว่ามีขั้นตอนวิธีการสามารถอยู่ว่าการกลับมาYในเวลาที่ P แต่ยังใช้ "อีกต่อไป" กว่าเวลาที่ P จะกลับมาNและทฤษฎีจะขึ้นอยู่กับ / มุ่งเน้น / Yเน้นรอบเวลาที่ใช้ในการตอบ
vzn

1
นักเรียนที่เขียนโปรแกรมมากกว่าห้าโปรแกรมจะคุ้นเคยกับแนวคิดของ "อัลกอริทึมที่ไม่หยุด" จากประสบการณ์ส่วนตัวโดยตรง
David Richerby

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