นิยามของคำว่าอะไรคือสิ่งที่


247

ฉันอยู่ในหลักสูตรเกี่ยวกับการคำนวณและความซับซ้อนและไม่สามารถเข้าใจความหมายของคำเหล่านี้ได้

สิ่งที่ฉันรู้ก็คือว่า NP เป็นเซตย่อยของ NP-complete ซึ่งเป็นเซตย่อยของ NP-hard แต่ฉันไม่รู้ว่าพวกมันหมายถึงอะไรจริง ๆ วิกิพีเดียไม่ได้ช่วยอะไรมากนักเนื่องจากคำอธิบายยังอยู่ในระดับที่สูงเกินไป


6
มันเป็นวัตถุที่มีความหมายอย่างเป็นทางการ ฉันพบว่าคำอธิบายที่ "เรียบง่าย" ส่วนใหญ่ขาดหายไป หากคุณมีปัญหาในการเข้าใจคำจำกัดความคุณกำลังทำอะไรในชั้นเรียนเกี่ยวกับทฤษฎีความซับซ้อน (คำถามที่จริงจัง) วิกิพีเดียไม่ใช่ข้อมูลอ้างอิงที่ดีสำหรับ TCS
กราฟิลส์

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

5
@frafl: "ไม่ใช่ทุกปัญหาใน NP เป็นเรื่องยาก" - ซึ่งยังคงปรากฏอยู่
กราฟิลส์

2
@ ราฟาเอล: จริง ๆ แล้วขึ้นอยู่กับประเภทของการลดที่คุณใช้ ฉันคิดว่าเวลาพหุนามจำนวนมากหนึ่งในการลดที่NPC NPC
frafl

คำตอบ:


364

ฉันคิดว่าบทความ Wikipedia ,และ vs.ค่อนข้างดี ยังอยู่ที่นี่คือสิ่งที่ผมจะบอกว่า: Part I , Part IIPNPPNP

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


ส่วนที่ 1

ปัญหาการตัดสินใจ

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

เราสามารถระบุปัญหาการตัดสินใจกับชุดย่อยของอินพุตที่มีคำตอบใช่ นี้ง่ายสัญกรณ์และช่วยให้เราสามารถเขียน ในสถานที่ของและ ในสถานที่ของQxQQ(x)=YESxQQ(x)=NO

อีกมุมมองหนึ่งคือเรากำลังพูดถึงการสืบค้นความเป็นสมาชิกในชุด นี่คือตัวอย่าง:

ปัญหาการตัดสินใจ:

อินพุต: ตัวเลขธรรมชาติ , คำถาม:เป็นเลขคู่หรือไม่xx
x

ปัญหาการเป็นสมาชิก:

อินพุต: ตัวเลขธรรมชาติ , คำถาม:ในหรือไม่xx E v e n = { 0 , 2 , 4 , 6 , }
xEven={0,2,4,6,}

เราอ้างถึงคำตอบที่ YES เกี่ยวกับอินพุตเป็นการยอมรับอินพุตและคำตอบที่ไม่เกี่ยวกับอินพุตเป็นการปฏิเสธอินพุต

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

[หมายเหตุ: 1. ถ้าเราต้องการทำทุกอย่างเป็นทางการและแม่นยำเราจะต้องแก้ไขรูปแบบการคำนวณเช่นโมเดลทัวริงของเครื่องมาตรฐานเพื่อกำหนดสิ่งที่เราหมายถึงอย่างแม่นยำโดยอัลกอริทึมและการใช้ทรัพยากรการคำนวณ 2. หากเราต้องการพูดคุยเกี่ยวกับการคำนวณเหนือวัตถุที่โมเดลไม่สามารถจัดการได้โดยตรงเราจะต้องเข้ารหัสเป็นวัตถุที่โมเดลเครื่องจักรสามารถจัดการได้เช่นถ้าเราใช้เครื่องทัวริงที่เราต้องการเข้ารหัสวัตถุเช่นตัวเลขธรรมชาติและกราฟ เป็นสตริงไบนารี]


P = ปัญหาเกี่ยวกับอัลกอริทึมที่มีประสิทธิภาพสำหรับการค้นหาวิธีแก้ไข

สมมติว่าอัลกอริธึมที่มีประสิทธิภาพหมายถึงอัลกอริธึมที่ใช้ทรัพยากรการคำนวณจำนวนมากในพหุนาม ทรัพยากรหลักที่เราดูแลเกี่ยวกับการเป็นกรณีเลวร้ายที่สุดเวลาการทำงานของอัลกอริทึมที่เกี่ยวกับขนาดการป้อนข้อมูลเช่นจำนวนของขั้นตอนพื้นฐานขั้นตอนจะใช้เวลาในการป้อนข้อมูลของขนาดnขนาดของอินพุตคือหากใช้หน่วยความจำคอมพิวเตอร์ -bits เพื่อเก็บซึ่งในกรณีนี้เราเขียนnดังนั้นโดยกลไกที่มีประสิทธิภาพที่เราหมายถึงขั้นตอนวิธีการที่มีพหุนามเลวร้ายที่สุดกรณีเวลาทำงานnxnnx|x|=n

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

Pเป็นชั้นของการตัดสินใจแก้ปัญหาที่สามารถแก้ไขได้อย่างมีประสิทธิภาพ ,
เช่นปัญหาการตัดสินใจที่มีขั้นตอนวิธีการพหุนามเวลา

อย่างเป็นทางการมากขึ้นเราพูดว่าปัญหาการตัดสินใจอยู่ใน iffQP

มีขั้นตอนวิธีที่มีประสิทธิภาพดังกล่าวว่า สำหรับทุกปัจจัย ,Ax
x

  • ถ้าแล้ว , Q(x)=YESA(x)=YES
  • ถ้าแล้วAQ(x)=NOA(x)=NO

ฉันก็สามารถเขียนแต่ที่ผมเขียนมันด้วยวิธีนี้เพื่อให้เราสามารถเปรียบเทียบกับความหมายของ{}A(x)=Q(x)NP


NP = ปัญหาเกี่ยวกับอัลกอริธึมที่มีประสิทธิภาพสำหรับการตรวจสอบหลักฐาน / ใบรับรอง / พยาน

บางครั้งเราไม่ทราบวิธีที่มีประสิทธิภาพในการค้นหาคำตอบของปัญหาการตัดสินใจอย่างไรก็ตามถ้ามีคนบอกเราคำตอบและให้หลักฐาน เราเราสามารถตรวจสอบได้อย่างมีประสิทธิภาพว่าคำตอบนั้นถูกต้องโดยการตรวจสอบหลักฐานเพื่อดูว่ามันเป็นหลักฐานที่ถูกต้อง . นี่คือแนวคิดเบื้องหลังคลาสซับซ้อนNP

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

แบบฟอร์มจุดนี้เมื่อใดก็ตามที่ฉันใช้คำว่า "พิสูจน์" ฉันหมายถึง "พิสูจน์สั้น"

นี่คือตัวอย่างของปัญหาที่เราไม่ทราบวิธีแก้ปัญหาอย่างมีประสิทธิภาพ แต่เราสามารถตรวจสอบหลักฐานได้อย่างมีประสิทธิภาพ:

Partition
Input:ชุดที่ จำกัด ของตัวเลขธรรมชาติS ,
คำถาม:เป็นไปได้หรือไม่ที่จะแบ่งพาร์ติชันSออกเป็นสองชุดAและB ( AB=SและAB= )
ซึ่งผลรวมของตัวเลขในAเท่ากับ ผลรวมของตัวเลขในB ( xAx=xBx )?

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

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

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

บางครั้งผู้คนใช้ " ใบรับรอง " หรือ " พยาน " แทน "หลักฐาน"

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

ให้เราดูตัวอย่าง: A={2,4}และB={1,5}เป็นข้อพิสูจน์ว่า S={1,2,4,5}สามารถแบ่งพาร์ติชันเป็นสองชุดด้วยผลรวมเท่ากัน เราแค่ต้องสรุปตัวเลขในAและตัวเลขในBและดูว่าผลลัพธ์เท่ากันและตรวจสอบว่าA , Bเป็นพาร์ติชันของSหรือไม่

หากฉันให้A={2,5}และB={1,4}คุณจะตรวจสอบและดูว่าหลักฐานของฉันไม่ถูกต้อง มันไม่ได้หมายความว่าคำตอบคือไม่มันก็หมายความว่าการพิสูจน์เฉพาะนี้ไม่ถูกต้อง งานของคุณที่นี่ไม่ใช่เพื่อค้นหาคำตอบ แต่เพื่อตรวจสอบว่าหลักฐานที่คุณได้รับนั้นถูกต้องหรือไม่

มันเป็นเหมือนนักเรียนที่กำลังแก้ปัญหาในการสอบและอาจารย์ตรวจสอบว่าคำตอบนั้นถูกต้องหรือไม่ :) (น่าเสียดายที่นักเรียนมักไม่ได้ให้ข้อมูลมากพอที่จะยืนยันความถูกต้องของคำตอบและอาจารย์ต้องเดาคำตอบบางส่วนที่เหลือและตัดสินใจว่าควรให้คะแนนเท่าไรกับคำตอบของนักเรียน งาน).

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

NPคือคลาสของปัญหาที่มีตัวตรวจสอบที่มีประสิทธิภาพกล่าวคือ
มีอัลกอริธึมเวลาพหุนามที่สามารถตรวจสอบว่าคำตอบที่ให้นั้นถูกต้องหรือไม่

อย่างเป็นทางการมากขึ้นเราบอกว่าปัญหาการตัดสินใจQอยู่ในNP iff

มีขั้นตอนวิธีที่มีประสิทธิภาพVเรียกตรวจสอบดังกล่าวว่า
สำหรับทุกปัจจัยx ,

  • ถ้าQ(x)=YESดังนั้นจึงมีหลักฐานyเช่นนั้นV(x,y)=YES ,
  • ถ้าQ(x)=NOแล้วสำหรับการพิสูจน์ทุกy , V(x,y)=NO O

เราบอกว่าตัวตรวจสอบเสียง นั้นหากไม่ยอมรับหลักฐานใด ๆ เมื่อคำตอบคือไม่ กล่าวอีกนัยหนึ่งไม่สามารถหลอกผู้ตรวจสอบเสียงให้ยอมรับหลักฐานได้หากคำตอบนั้นไม่ใช่ ไม่มีผลบวกปลอม

ในทำนองเดียวกันเราพูดว่าผู้ตรวจสอบเสร็จสมบูรณ์ หากยอมรับหลักฐานอย่างน้อยหนึ่งข้อเมื่อคำตอบคือใช่ กล่าวอีกนัยหนึ่งผู้ตรวจสอบที่สมบูรณ์สามารถมั่นใจได้ว่าคำตอบคือใช่

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

ตัวตรวจสอบVได้รับสองอินพุต

  • x : อินพุตต้นฉบับสำหรับQและ
  • y : หลักฐานที่แนะนำสำหรับการQ(x)=YES S

โปรดทราบว่าเราต้องการVจะมีประสิทธิภาพในขนาดของxxถ้าyเป็นหลักฐานตรวจสอบขนาดใหญ่จะสามารถที่จะอ่านเพียงส่วนพหุนามของปีyนั่นคือเหตุผลที่เราจำเป็นต้องพิสูจน์ให้สั้น ถ้าyพูดสั้น ๆ ว่าVมีประสิทธิภาพในx ก็เท่ากับว่าVนั้นมีประสิทธิภาพในxและy (เพราะขนาดของyถูกล้อมด้วยพหุนามคงที่ในขนาดของx )

ในการสรุปที่จะแสดงให้เห็นว่าปัญหาการตัดสินใจQอยู่ในNP เราจะต้องให้มีประสิทธิภาพขั้นตอนวิธีการตรวจสอบซึ่งเป็นเสียงและสมบูรณ์

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


PNP

ดังนั้นเราจึงมี P = มีประสิทธิภาพแก้ปัญหาได้และNP = มีประสิทธิภาพตรวจสอบได้ ดังนั้นP=NPปัญหาที่สามารถตรวจสอบได้อย่างมีประสิทธิภาพจะเหมือนกับปัญหาที่สามารถแก้ไขได้อย่างมีประสิทธิภาพ

โปรดทราบว่าปัญหาใด ๆ ในPยังอยู่ในNPเช่นถ้าคุณสามารถแก้ปัญหาได้คุณสามารถตรวจสอบได้ว่าหลักฐานที่ให้นั้นถูกต้องหรือไม่: ผู้ตรวจสอบจะเพิกเฉยต่อข้อพิสูจน์!

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

[เราอาจทำให้ผู้ตรวจสอบของเรายอมรับได้เพียงบางคนเท่านั้นนั่นก็ใช้ได้ตราบใดที่ผู้ตรวจสอบของเรายอมรับอย่างน้อยหนึ่งข้อพิสูจน์ว่าผู้ตรวจสอบใช้งานได้อย่างถูกต้องสำหรับปัญหา]

นี่คือตัวอย่าง:

ผลรวม
การป้อนข้อมูล:รายการn+1หมายเลขธรรมชาติ1 , , nและs , คำถาม:คือΣ n ฉัน= 1ฉัน = s ?a1,,ans
Σi=1nai=s

ปัญหาอยู่ที่Pเพราะเราสามารถหาผลรวมของตัวเลขแล้วเปรียบเทียบกับsเราจะคืนค่า YES ถ้าพวกเขาเท่ากันและไม่ใช่ถ้าพวกเขาไม่

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

โปรดทราบว่ามีตัวตรวจสอบประสิทธิภาพอื่น ๆ สำหรับ Sum และบางส่วนอาจใช้หลักฐานที่ให้ไว้ อย่างไรก็ตามสิ่งที่เราออกแบบไม่ได้เป็นสิ่งที่ดี เนื่องจากเราให้ตรวจสอบที่มีประสิทธิภาพสำหรับซำปัญหาอยู่ในNP P เคล็ดลับการทำงานเดียวกันสำหรับปัญหาอื่น ๆ ทั้งหมดในPดังนั้น PNP P


อัลกอริทึม Brute-Force / ครบถ้วนสมบูรณ์ค้นหาสำหรับNPและNPExpTime

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

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

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

นี้แสดงให้เห็นว่าNPปัญหาจะสามารถแก้ไขได้ในเวลาที่ชี้แจงคือ NPExpTime E (ยิ่งไปกว่านั้นอัลกอริธึมกำลังเดรัจฉานจะใช้พื้นที่จำนวนพหุนามนั่นคือ NPPSpace แต่นั่นเป็นเรื่องราวของอีกวัน)

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

แต่ก็ไม่ได้หมายความว่าไม่มีขั้นตอนวิธีการที่ดีกว่า เราไม่ทราบว่า เท่าที่เรารู้ว่ามันเป็นไปได้ยัง ( แต่คิดว่าจะไม่น่ามากโดยเกือบทั้งหมดทฤษฎีความซับซ้อน) ที่ NP=PและNPปัญหาจะสามารถแก้ไขได้ในเวลาพหุนาม

NPNP

NPNPNPPNP

NPNP


ขอบเขตที่ต่ำกว่าดูเหมือนจะพิสูจน์ได้ยาก

NP

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

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

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

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

1=0

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


ปัญหาและอุปสรรคที่: ขอบเขตที่ต่ำกว่าเป็นเรื่องยากที่จะพิสูจน์

ในทางตรงกันข้ามเรามีผลการคำนวณทางคณิตศาสตร์ที่เรียกว่า อุปสรรค ที่กล่าวว่าการพิสูจน์ขอบเขตล่างไม่สามารถเป็นเช่นนั้นและเช่นนั้นและเช่นนั้นเกือบครอบคลุมเทคนิคทั้งหมดที่เราเคยพิสูจน์ขอบเขตที่ต่ำกว่า! ในความเป็นจริงนักวิจัยหลายคนยอมแพ้ในการพิสูจน์ขอบเขตที่ต่ำกว่าหลังจากที่ Alexander Razbarov และผลการพิสูจน์โดยธรรมชาติของ Steven Rudich ปรากฎว่าการมีอยู่ของชนิดของการพิสูจน์ขอบเขตล่างที่เฉพาะเจาะจงจะบ่งบอกถึงความไม่มั่นคงของเครื่องกำเนิดไฟฟ้าจำนวนเทียมเข้ารหัสและเครื่องมือเข้ารหัสอื่น ๆ อีกมากมาย

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

NP

[ในอีกทางหนึ่งงานของ Ryan Williams แสดงให้เห็นว่ามีการเชื่อมต่ออย่างใกล้ชิดระหว่างการพิสูจน์ขอบเขตที่ต่ำกว่าและการพิสูจน์ขอบเขตบน ดูคำพูดของเขาที่งาน ICM 2014หากคุณสนใจ]


การลดลง: การแก้ปัญหาโดยใช้ปัญหาอื่นเป็นรูทีนย่อย / Oracle / Black Box

แนวคิดของการลดนั้นง่ายมาก: ในการแก้ปัญหาใช้อัลกอริทึมสำหรับปัญหาอื่น

nSumSum

ปัญหา:

nx1,,xn
i=1nxi

อัลกอริทึมลด:

  1. s=0
  2. i1n
    s=Sum(s,xi)
  3. s

SumSumSumSum

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

หาก Oracle ส่งคืนคำตอบจำนวนมากเราจำเป็นต้องอ่านและอาจใช้เวลาพอสมควรดังนั้นเราควรนับเวลาที่เราต้องอ่านคำตอบที่ Oracle มอบให้เรา ในทำนองเดียวกันสำหรับการเขียน / ถามคำถามจาก Oracle แต่ oracle ทำงานได้ทันทีเช่นทันทีที่เราถามคำถามจาก oracle oracle จะเขียนคำตอบให้เราในเวลาเดียว งานทั้งหมดที่ oracle ทำนั้นนับเป็นขั้นตอนเดียว แต่ไม่รวมเวลาที่เราต้องเขียนคำถามและอ่านคำตอบ

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

Sum

เราสามารถถามคำถามหลายข้อจาก oracle และคำถามไม่จำเป็นต้องกำหนดไว้ล่วงหน้า: เราสามารถถามคำถามและตามคำตอบที่ oracle ส่งคืนเราทำการคำนวณด้วยตนเองแล้วถามคำถามอื่นตามคำตอบที่เราได้รับ คำถามก่อนหน้า

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

AOAO

การลดลงเรากล่าวข้างต้นเป็นรูปแบบทั่วไปมากที่สุดของการลดลงและเป็นที่รู้จักกันลดกล่องดำ (aka ลด oracle , ลดทัวริง )

เป็นทางการมากขึ้น:

QOQTO
Ax
Q(x)=AO(x)

AOQ

AQTPOT

อย่างไรก็ตามเราอาจต้องการ จำกัด ข้อ จำกัด บางประการเกี่ยวกับวิธีที่อัลกอริธึมการลดโต้ตอบกับ oracle มีข้อ จำกัด หลายอย่างที่มีการศึกษา แต่ข้อ จำกัด ที่มีประโยชน์มากที่สุดคือข้อ จำกัด ที่เรียกว่าการลดหลายรายการ (aka การลดการทำแผนที่ )

xy

เป็นทางการมากขึ้น

QOQmO
Ax
Q(x)=O(A(x))

QmPO

NPANPBANP

PNPNP


โพสต์ยาวเกินไปและเกินขีด จำกัด คำตอบ (30,000 อักขระ) ฉันจะยังคงคำตอบในส่วนที่สอง


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

4
@Kaveh นั่นเป็นโพสต์ที่ยอดเยี่ยมขอบคุณ ฉันตัดสินใจได้ดีก่อนส่วนนี้ในชั้นเรียน แต่ฉันกลับเข้าใจในการพิสูจน์ความลังเล ฉันไม่รู้ว่าสิ่งนี้เกี่ยวข้องกับการขาดความเข้าใจกับความซับซ้อนหรือไม่
agent154

5
ฉันได้อ่านหนังสือความซับซ้อนมากมายตั้งแต่ระดับเริ่มต้น (รวมถึง Sipser's) ไปจนถึงระดับสูงขึ้น ฉันไม่มีปัญหากับคณิตศาสตร์เชิงนามธรรม (เช่นฉันสามารถอ่านพีชคณิตของ Lang) คำตอบนี้เป็นวิธีที่ดีที่สุดในการอธิบายปัญหา NP กับ P. ฉันขอแนะนำให้คุณใช้เวลามากขึ้นในการขัดและทำให้มันเป็นแบบบรรยาย มันสามารถช่วยเหลือผู้คนได้มากมาย
scaaahu

@ scaaahu ขอบคุณสำหรับคำพูดที่ใจดีและสำหรับคำแนะนำ ฉันวางแผนที่จะเสร็จสมบูรณ์และขัดเงานี้ในไม่ช้า
Kaveh

10
คำตอบนี้ควรทำเป็นคำตอบอ้างอิง คำถามประเภท P / NP พื้นฐานในอนาคตทั้งหมดควรอ้างอิงถึงสิ่งนี้ก่อน คำอธิบายของเหลวมาก!
Paresh

179

ส่วนที่สอง

ต่อจากตอนที่ 1

ก่อนหน้านี้มีจำนวนตัวอักษรเกินจำนวนสูงสุดที่อนุญาตในคำตอบ (30000) ดังนั้นฉันจึงแบ่งมันเป็นสองฉบับ

NP NP

PNPNPNP

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

NPNP

ลดลงตามความยากลำบาก

ABAB

ABAB

MBABMBANBMBNMNA

P

NPNP

NPNP

NPNP
NPNP

ANP

ANP
NPBBABmPA

NPNPNPNP

NPNP

(ปัญหาอื่นอีกสองปัญหาที่ผู้คนจำนวนมากทำงานเกี่ยวกับการปรับแต่งอัลกอริทึมของพวกเขาสำหรับการใช้งานจริงในอุตสาหกรรมคือInteger Programmingและ ปัญหาความพึงพอใจของข้อ จำกัดทั้งนี้ขึ้นอยู่กับปัญหาของคุณและอินสแตนซ์ที่คุณสนใจ คนอื่น ๆ .)

NP
NP

NP

NPNP

NPNPNPNPNPNP ยาก (เช่นไม่มีอัลกอริทึมเวลาพหุนามใด ๆ )

ตอนนี้คำถามคือ:

  • NP

  • เรารู้จักพวกเขาบ้างไหม?

NPNPNPNP

NPExpTimeNPNP

p¬p

NPNP

ANPABBNPNPAABNPB

NPNPNP

NPNP

SATNPSATSubsetSumNPSATSubsetSum

NP

NP

หมายเหตุ: ส่วนต่อไปนี้อาจเป็นเรื่องเทคนิคเล็กน้อยในการอ่านครั้งแรก

NP


Vxtk
YESkVxtNO

UniVerNP

VNPxVxUniVer
tkVxVx

tttk

NPUniVerNP


MxMt
YESMxYEStNOYESt

CPt

Interpreter

UniVerNPMxtkcckInterpreterMYESxct

SATNP

UniVerNPUniVerNP

NPSAT

SAT


φ
YESφNO

SATNP


ที่จะเขียน ...

NP

NP

NP

PNP

อะไรต่อไป? จะไปที่ไหนจากที่นี่?


6
ฉันหวังว่าฉันจะโหวตได้มากกว่าหนึ่งครั้งขอบคุณที่ใช้ความพยายามอย่างมากในการตอบ!
Fingolfin

2
ว้าวบทความน่ากลัว! ฉันยังรอคอยชิ้นส่วนที่ประกาศด้วยโดยเฉพาะอย่างยิ่ง "จะทำอย่างไรถ้าคุณต้องแก้ปัญหา NP-complete?"
Tobias Hermann

5
@ xci13 คุณทำได้! โหวตขึ้นส่วนแรก;)
Vince Emigh

4
ฉันสร้างบัญชีที่นี่เพื่อลงคะแนนทั้งโพสต์ของคุณ!
ghosts_in_the_code

6
@Kaveh มีแผนจะทำบทความที่เขียนอย่างน่าพิศวงนี้หรือไม่?
Gab

26

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

สนุก!


น่าสนใจตำราของฉันก็คือเขา มันไม่ได้เป็นหนังสือที่น่ากลัว แต่มันก็เป็นที่ต้องการ
agent154

8

คัดลอกคำตอบของฉันไปยังคำถามที่คล้ายกันใน Stack Overflow:

วิธีที่ง่ายที่สุดในการอธิบาย P v. NP และสิ่งอื่น ๆ โดยไม่ต้องเข้าสู่ด้านเทคนิคคือการเปรียบเทียบ "ปัญหาคำศัพท์" กับ "ปัญหาหลายทางเลือก"

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

มันมักจะเกิดขึ้นว่า "ปัญหาหลายทางเลือก" ง่ายกว่า "ปัญหาคำศัพท์" ที่เกี่ยวข้อง: การแทนที่คำตอบของผู้สมัครและตรวจสอบว่าพวกเขาพอดีอาจต้องใช้ความพยายามอย่างมีนัยสำคัญน้อยกว่าการหาคำตอบที่ถูกต้องตั้งแต่เริ่มต้น

ทีนี้ถ้าเราเห็นด้วยกับความพยายามที่ใช้เวลาพหุนามว่า "ง่าย" คลาส P จะประกอบด้วย "ปัญหาคำง่าย" และคลาส NP จะประกอบด้วย "ปัญหาหลายทางเลือกง่าย"

สาระสำคัญของ P v. NP คือคำถาม: "มีปัญหาหลายตัวเลือกที่ไม่ง่ายเหมือนปัญหาคำศัพท์" หรือไม่? นั่นคือมีปัญหาที่ง่ายต่อการตรวจสอบความถูกต้องของคำตอบที่กำหนด แต่การหาคำตอบจากรอยขีดข่วนนั้นยากหรือไม่

ตอนนี้เราเข้าใจโดยสังเขปว่า NP คืออะไรเราต้องท้าทายสัญชาตญาณของเรา ปรากฎว่ามี "ปัญหาหลายทางเลือก" ซึ่งในบางแง่มุมนั้นยากที่สุดของทั้งหมด: ถ้าใครจะหาทางออกให้กับหนึ่งใน "ปัญหาที่ยากที่สุดของพวกเขาทั้งหมด" อย่างใดอย่างหนึ่งจะสามารถหาทางออกให้กับทุกคน ปัญหา NP! เมื่อคุกค้นพบสิ่งนี้เมื่อ 40 ปีที่แล้วมันเป็นเรื่องที่น่าประหลาดใจอย่างมาก ปัญหา "ที่ยากที่สุดของพวกเขาทั้งหมด" เหล่านี้เรียกว่า NP-hard หากคุณพบ "การแก้ปัญหาคำศัพท์" หนึ่งในนั้นคุณจะพบ "การแก้ปัญหาคำศัพท์" โดยอัตโนมัติสำหรับทุก ๆ คน "ปัญหาทางเลือกง่าย ๆ "!

ในที่สุดปัญหา NP-complete คือปัญหาที่เกิดขึ้นพร้อมกันกับ NP และ NP-hard จากการเปรียบเทียบของเราพวกมันพร้อมกัน "ปัญหาง่าย ๆ หลายทางเลือก" และ "ปัญหาที่ยากที่สุดของพวกเขาทั้งหมดเป็นปัญหาคำ"


ตอนนี้เราเข้าใจโดยสังเขปว่า NP คืออะไรเราต้องท้าทายสัญชาตญาณของเรา ปรากฎว่ามี "ปัญหาหลายทางเลือก" - คุณหมายถึง "ปัญหาคำศัพท์" ใช่ไหม? ฉันคิดอย่างนั้นเพราะปัญหา NP ทั้งหมดนั้นง่ายเหมือน "หลายตัวเลือก" ตามคำจำกัดความ
Dmitry Grigoryev

โดยสายปรากฎว่ามี "ปัญหาหลายทางเลือก" ว่าในความรู้สึกบางอย่างเป็นที่ยากที่สุดของพวกเขาทั้งหมดฉันหมายถึงปรากฎว่ามีปัญหา NP ว่าในความรู้สึกบางอย่างเป็นที่ยากที่สุดของพวกเขาทั้งหมด ปัญหา NP เหล่านี้เป็นปัญหาหลายตัวเลือกที่ง่ายตามนิยาม แต่มันก็เป็นปัญหาที่ยากที่สุดสำหรับปัญหาคำศัพท์ ตัวอย่างมาตรฐานคือ SAT3: มันง่ายเหมือนปัญหาแบบปรนัย แต่ยากเหมือนปัญหาคำ
ไมเคิล

7

ที่ง่ายที่สุดคือ P ปัญหาที่แก้ไขได้ในเวลาพหุนามอยู่ที่นี่

จากนั้นก็มาที่ NP ปัญหาที่แก้ไขได้ในเวลาพหุนามในเครื่องทัวริงที่ไม่สามารถกำหนดได้อยู่ที่นี่

ความแข็งและความสมบูรณ์จะต้องมีการลดลง ปัญหา A ยากสำหรับคลาส C หากทุกปัญหาใน C ลดลงเหลือ A ถ้าปัญหา A ยากสำหรับ NPหรือ NP-hard ถ้าทุกปัญหาใน NP ลดลงเป็น A

ในที่สุดปัญหาจะเสร็จสิ้นสำหรับคลาส C หากอยู่ใน C และยากสำหรับ C ในกรณีของคุณปัญหา A เสร็จสมบูรณ์สำหรับ NPหรือ NP-complete หากทุกปัญหาใน NP ลดลงถึง A และ A อยู่ใน NP .

เพื่อเพิ่มคำอธิบายของ NP ปัญหาอยู่ใน NP ถ้าหากวิธีการแก้ปัญหาสามารถตรวจสอบได้ในเวลาที่กำหนด (พหุนาม) พิจารณาปัญหาที่สมบูรณ์แบบของ NP ที่คุณรู้, SAT, CLIQUE, SUBSET SUM, VERTEX COVER และอื่น ๆ หากคุณ "รับการแก้ปัญหา" คุณสามารถตรวจสอบความถูกต้องได้ในเวลาพหุนาม พวกมันคือการตอบสนองการมอบหมายความจริงสำหรับตัวแปรกราฟย่อยสมบูรณ์ชุดย่อยของตัวเลขและชุดของจุดยอดที่ครอบงำทุกขอบ


6

สำหรับพื้นฐานวิดีโอP vs. NP และ Computational Complexity Zoo นั้นดูง่ายกว่ามากที่จะเข้าใจ

สำหรับคอมพิวเตอร์ที่มีปัญหารุ่นใหญ่จริง ๆ :

ปัญหา P

ง่ายต่อการแก้ (rubix cube)

ปัญหา NP

ยาก - แต่การตรวจสอบคำตอบนั้นง่าย (ซูโดกุ)

บางทีเหล่านี้ทั้งหมดจริงๆปัญหา P แต่เราไม่ทราบว่ามัน ... P เทียบกับ NP

NP-สมบูรณ์

ปัญหา NP จำนวนมากเดือดลงมาเหมือนกัน (ซูโดกุเป็นผู้ใช้ใหม่ในรายการ)

ปัญหา EXP

ยากมาก (การเล่นหมากรุกครั้งต่อไปที่ดีที่สุด)

ปัญหา NP-hard

แก้ไข: NP-hard ไม่ได้อธิบายอย่างดีในวิดีโอ (มันเป็นสีชมพูทั้งหมด), แผนภาพNP-hard Euler ของ Wikipedia นั้นชัดเจนกว่านี้

สรุปวิดีโอ

กระดานดำออยเลอร์ไดอะแกรมของ P, NP, NP-complete, EXP และ NP-hard

แผนภาพWik-NP-hard Euler

SVG Euler ไดอะแกรมของ P, NP, NP-complete และ NP-hard


0

P , NP , NP-completeและNP-hardคือคลาสที่ซับซ้อน, การจำแนกปัญหาตามความซับซ้อนของอัลกอริทึมสำหรับการแก้ปัญหา ในระยะสั้นพวกเขาจะขึ้นอยู่กับสามคุณสมบัติ:

ตารางเรียนที่ซับซ้อน

แก้ไขได้ในเวลาพหุนาม:กำหนดปัญหาการตัดสินใจที่สามารถแก้ไขได้โดยเครื่องทัวริงกำหนด (DTM) โดยใช้เวลาคำนวณจำนวนพหุนามนั่นคือเวลาทำงานของมันจะถูก จำกัด ด้วยพหุนามนิพจน์ขนาดของอินพุตสำหรับอัลกอริธึม การใช้สัญลักษณ์ Big-O ในครั้งนี้ความซับซ้อนถูกกำหนดเป็นO(n ^ k)โดยที่ n คือขนาดของสัมประสิทธิ์การป้อนข้อมูลและ ka คงที่

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

ลดปัญหา NP ใด ๆ ในเวลาพหุนาม : กำหนดปัญหาการตัดสินใจที่มีอัลกอริทึมในการแก้ปัญหาสามารถใช้เพื่อแก้ปัญหา NP ใด ๆ หลังจากขั้นตอนการแปลเวลาพหุนาม


เมื่อเร็ว ๆ นี้ฉันได้เขียนบทความเกี่ยวกับเรื่องนี้ซึ่งให้รายละเอียดเพิ่มเติมรวมถึงการสาธิตรหัสเพื่อลดปัญหา NP ให้เป็นปัญหาที่ยากลำบาก: ปัญหาความซับซ้อนของชั้นเรียน

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