ทำไมการเขียนโปรแกรมเชิงเส้นใน P แต่การเขียนโปรแกรมจำนวนเต็ม NP-hard?


35

การเขียนโปรแกรมเชิงเส้น (LP) เป็นแบบ P และการเขียนโปรแกรมจำนวนเต็ม (IP) คือ NP-hard แต่เนื่องจากคอมพิวเตอร์สามารถจัดการตัวเลขที่มีความแม่นยำ จำกัด เท่านั้นในทางปฏิบัติคอมพิวเตอร์จึงใช้จำนวนเต็มสำหรับการเขียนโปรแกรมเชิงเส้น ด้วยเหตุนี้ LP และ IP ไม่ควรอยู่ในระดับความซับซ้อนเดียวกันหรือไม่


7
การเพิ่มคำตอบของ jmite เล็กน้อย: มีหลายกรณีที่ข้อ จำกัด ของการบูรณาการทำให้ปัญหายากขึ้นมาก ตัวอย่างเช่นปัญหาเครื่องหลังเศษส่วนสามารถแก้ไขได้ในเวลาพหุนามแม้ว่าปัญหาเครื่องหลังจำนวนเต็มคือ NP-Hard ดังนั้นนี่ไม่ใช่สิ่งที่เป็นจริงสำหรับ LP และ IP
user340082710

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

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

2
@Hurkyl "มันไม่ยากที่จะจัดการกับตัวเลขด้วยความแม่นยำอย่างไม่มีที่สิ้นสุดหากคุณต้องการโดยเฉพาะอย่างยิ่งเมื่อพวกมันมีเหตุผล" มีเซตย่อยที่เข้มงวดของตัวเลขจริงที่เรียกว่าตัวเลขที่คำนวณได้ซึ่งรวมถึง rationals + numbers เช่น sqrt (2) etc ... และถูกกำหนดให้เป็นชุดของตัวเลขที่คำนวณได้โดยเครื่องทัวริง สิ่งที่ไม่รวมอยู่ในนั้นไม่สามารถถูกควบคุมโดยคอมพิวเตอร์ได้
Sasha the Noob

1
@SashatheNoob สิ่งที่คุณพูดไม่ได้ขัดแย้งกับสิ่งที่ Hurkyl พูด ตัวเลขที่คำนวณได้นั้นไม่มีขีด จำกัด สูงสุดที่กำหนดไว้ล่วงหน้าเกี่ยวกับความแม่นยำ (สามารถตั้งค่าตามค่าที่คุณต้องการได้โดยที่เครื่องทัวริงมีหน่วยความจำเพียงพอ - ดังนั้นความแม่นยำไม่ จำกัด ) ในการบอกว่าเซตย่อยของตัวเลขที่คำนวณได้นั้นรวมถึงจำนวนตรรกยะทั้งหมดคุณยอมรับว่าคอมพิวเตอร์สามารถจัดการตัวเลขได้อย่างแม่นยำอย่างไม่มีที่สิ้นสุด (คำแถลงของ Hurkyl นั้นเป็นจริงอย่างยิ่งความจริงที่ว่าความแม่นยำนั้นมี จำกัด สำหรับข้อมูลบางประเภทนั้นเป็นเพียงการเพิ่มประสิทธิภาพ)
BrainSlugs83

คำตอบ:


9

ฉันไม่สามารถแสดงความคิดเห็นได้เนื่องจากต้องการตัวแทน 50 คน แต่มีความเข้าใจผิดบางประการเกี่ยวกับเรื่องนี้โดยเฉพาะความคิดเห็นของราฟาเอล "โดยทั่วไปความต่อเนื่องของโดเมนหมายความว่าไม่มีแรงเดรัจฉาน

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

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

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


23

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

คำตอบที่ยากสำหรับเรื่องนี้คือเราไม่รู้ว่าพวกเขาไม่อยู่ในระดับความซับซ้อนเดียวกัน ไม่มีใครมีหลักฐานที่NP หากเราเข้าใจเหตุผลที่ลึกกว่าว่าทำไมปัญหาต่างกันมากเราต้องเข้าใจว่าทำไมความซับซ้อนของคลาสจึงแตกต่างกันซึ่งเราไม่เข้าใจPNP


21

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


2
คำหลักที่นี่คือ "นูน"
cody

1
เขาปีนนี้ไม่ใช่วิธีซิมเพล็กซ์หรือไม่ซึ่งเป็นที่รู้จักกันในชื่อพหุนามในกรณีเลวร้ายที่สุด
jbapple

1
มีปัญหามากมายที่แก้ได้ง่ายกว่าในช่องว่างแยก (ซึ่งอนุญาตให้ค้นหาแบบแยก) กว่าในพื้นที่ต่อเนื่อง
ราฟาเอล

@ ราฟาเอล: คุณสามารถยกตัวอย่างของปัญหาดังกล่าวได้ไหม? ฉันเคยคิดเกี่ยวกับเรื่องนี้และไม่สามารถมากับหลาย ๆ
ดี้

@cody การหา maxima / minima ของฟังก์ชั่น (หนึ่งมิติ) ตัวอย่างเช่น ดูที่นี่สำหรับตัวอย่างที่น่ารักซึ่งกลายเป็นคล้อยตามหลังจากสังเกตได้ว่าเราสามารถลดพื้นที่การค้นหาที่ จำกัด ให้เป็นขอบเขตที่ จำกัด ได้ โปรดทราบว่า LPs เป็นชนิดพิเศษเช่นนั้น: โดยการสังเกตว่าเราเพียง แต่ต้องพิจารณามุมของรูปทรงหลายเหลี่ยมเราจะได้พื้นที่การค้นหาที่ จำกัด โดยทั่วไปโดเมนต่อเนื่องหมายความว่าไม่มีแรงเดรัจฉาน (และไม่มีฮิวริสติกที่ชาญฉลาดเพื่อเร่งความเร็ว)
Raphael

3

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

column x1 x2 x3 x4 x5 x6 | solution
-----------------------------------
       1           1  1  | 3
          1              | 1
             1     1     | 2
                2  1  1  | 1  

Q

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