การเขียนโปรแกรมจำนวนเต็มพร้อมตัวแปรจำนวนคงที่


12

กระดาษที่มีชื่อเสียงในปี 1983 โดยการเขียนโปรแกรม H. Lenstra Integer ด้วยจำนวนตัวแปรคงที่ระบุว่าโปรแกรมจำนวนเต็มที่มีจำนวนตัวแปรคงที่สามารถแก้ไขได้ในเวลาพหุนามตามความยาวของข้อมูล

ฉันตีความว่าดังนี้

  1. การเขียนโปรแกรมจำนวนเต็มโดยทั่วไปยังคงเป็นปัญหาที่สมบูรณ์ แต่ถ้าขนาดปัญหาโดยทั่วไปของฉันอยู่ในมือ (พูดเกี่ยวกับตัวแปร 10,000 ข้อ จำกัด จำนวนโดยพลการ) เป็นไปได้ในทางปฏิบัติแล้วฉันสามารถสร้างอัลกอริทึม จำนวนของตัวแปรและข้อ จำกัด
  2. ผลลัพธ์ยังสามารถใช้กับการเขียนโปรแกรมแบบไบนารีเนื่องจากฉันสามารถบังคับจำนวนเต็มใด ๆ ให้ 0-1 โดยการเพิ่มข้อ จำกัด ที่เหมาะสม

การตีความของฉันถูกต้องหรือไม่

ผลลัพธ์นี้มีความหมายในทางปฏิบัติหรือไม่? นั่นคือมีการใช้งานหรือใช้ในนักแก้ปัญหายอดนิยมเช่น CPLEX, Gurobi หรือ Mosek หรือไม่?

บางคำพูดจากกระดาษ:

ความยาวนี้อาจถูกกำหนดให้เป็น n · m · log (a + 2) ซึ่ง a หมายถึงความยาวสูงสุดของค่าสัมบูรณ์ของสัมประสิทธิ์ A และ b แท้จริงแล้วไม่มีอัลกอริทึมพหุนามดังกล่าวอยู่เนื่องจากปัญหาที่เกิดขึ้นคือปัญหา NP-complete

[ ... ]

มันคาดคะเน [5], [10] ว่าค่าคงที่ใด ๆ ของ n นั้นมีอัลกอริทึมพหุนามสำหรับการแก้ปัญหาของปัญหาการโปรแกรมเชิงเส้นจำนวนเต็ม ในบทความปัจจุบันเราพิสูจน์การคาดเดานี้โดยแสดงอัลกอริทึมดังกล่าว ระดับของพหุนามซึ่งเวลาวิ่งของอัลกอริทึมของเราสามารถ จำกัด ขอบเขตเป็นฟังก์ชันเลขชี้กำลังของ n


2
"ฉันสามารถสร้างอัลกอริธึมที่ชั่งเชิงพหุนามในจำนวนข้อ จำกัด หรือตัวแปรแต่ไม่ได้อยู่ในจำนวนของตัวแปรและข้อ จำกัด " ประเด็น / คำถามที่น่าสนใจ - จนถึงขณะนี้เราได้เห็นว่านี่เป็นจริงสำหรับข้อ จำกัด (ถือจำนวนตัวแปรคงที่) แต่บางทีมันอาจจะน่าสนใจที่จะถามว่ามันจะเป็นจริงสำหรับตัวแปร (ถือจำนวนข้อ จำกัด คงที่) หรือไม่ ? อย่างสังหรณ์ใจมันรู้สึกว่ามันไม่ควรเป็นจริง IP อื่นจะเป็น polytime โดยทั่วไป แต่ฉันไม่แน่ใจ
usul

ในส่วนที่ 4 ของกระดาษ Lenstra กล่าวว่า "ปัญหาการเขียนโปรแกรมเชิงเส้นจำนวนเต็มด้วยค่าคงที่ของ m คือการแก้ปัญหาแบบพหุนาม" (m คือจำนวนของข้อ จำกัด ) สิ่งต่อไปนี้เป็นผลของผลลัพธ์หลัก ส่วนนี้ไม่ชัดเจนสำหรับฉัน ในความคิดที่สองบางทีเขาอาจจะคิดค่าคงที่ n และ m; หมายความว่ามันคือพหุนามใน "a" (ค่าสูงสุดของสัมบูรณ์ของสัมประสิทธิ์ของ A และ b) (ฉันลบส่วน "หรือตัวแปร" ออกจากคำถามของฉันด้านบนตามลำดับ)
Bernhard Kausler

6
@usul: เป็นจริงและไม่ได้หมายความว่า IP นั้นเป็น polytime มันหมายถึงว่ามีอัลกอริธึมหนึ่งที่ใช้เวลาเอ็กซ์โพเนนเชียลในและพหุนามในและอีกอันที่ใช้เวลาเอ็กซ์โพเนนเชียลในและพหุนามในm m nnmmn
Sasho Nikolov

คำตอบ:


19

อัลกอริทึมที่เร็วที่สุดในปัจจุบันเป็นจริงเชิงเส้นความยาวของจำนวนเต็มเชิงเส้นโปรแกรมสำหรับค่าคงที่ทุกnในวิทยานิพนธ์ระดับปริญญาเอกของเขาLokshtanov (2009)สรุปผลการทดลองโดย Lenstra (1983), Kannan (1987), และ Frank & Tardos (1987) โดยทฤษฎีดังต่อไปนี้n

การเขียนโปรแกรมเชิงเส้นจำนวนเต็มสามารถแก้ไขได้โดยใช้ ดำเนินการทางคณิตศาสตร์และพื้นที่พหุนามในLนี่คือจำนวนบิตในอินพุตและจำนวนของตัวแปรในโปรแกรมเชิงเส้นจำนวนเต็มL L nO(n2.5n+o(n)L)LLn

ดังนั้นปัญหาคือพารามิเตอร์เชิงเส้นคงที่แปรพารามิเตอร์ตามจำนวนของตัวแปร

1) ใช่การเขียนโปรแกรมเชิงเส้นจำนวนเต็ม "นิ่ง" NP-complete เวลาทำงานของผลลัพธ์ทางทฤษฎีข้างต้นขึ้นอยู่กับจำนวนของข้อ จำกัด เท่านั้นดังนั้นมันจึงปรับตามจำนวนข้อ จำกัด อย่างไรก็ตามฉันรู้ว่าไม่มีการใช้งานจริงของอัลกอริทึมนี้

2) ใช่การทำให้ตัวแปรใช้ค่าไบนารี่ตรงไปตรงมาตามที่คุณสังเกต

ปรับปรุง การพึ่งพาสามารถปรับปรุงได้จริงในเวลาทำงานสำหรับการเขียนโปรแกรมเชิงเส้นจำนวนเต็ม ขึ้นอยู่กับClarkson (1995)และEisenbrand (2003) (ดูความคิดเห็นด้านล่าง) หนึ่งสามารถรับอัลกอริทึมที่มีเวลาทำงาน โดยที่คือจำนวนข้อ จำกัด และคือจำนวนบิตสูงสุดที่จำเป็นในการเข้ารหัสข้อ จำกัด หรือฟังก์ชันวัตถุประสงค์O ( 2 n n m + 8 n n Lms

O(2nnm+8nnmlogmlogm+n2.5n+o(n)slogm)
ms

1
อาขอบคุณสำหรับคำว่า "พารามิเตอร์เชิงเส้นคงที่" นั่นคือสิ่งที่เกี่ยวกับกระดาษของ Lenstra ดูเพิ่มเติมที่: en.wikipedia.org/wiki/Parameterized_complexity
Bernhard Kausler

4
เป็นข้อสังเกตที่ชัดเจน: สำหรับตัวแปรไบนารีตัวอัลกอริธึม bruteforce ใช้เวลาดังนั้นกรณีนี้จึงเป็นเรื่องเล็กน้อย O ( n 2 n m )nO(n2nm)
Sasho Nikolov

T(n,m,s)nmsO(2nm+(logm)T(n,f(n),s)O(s)f(n)nO(n)

1
สิ่งนี้ไม่เปลี่ยนข้อเท็จจริงพื้นฐานของคำตอบของคุณ แต่การอ้างอิงที่เกี่ยวข้องอื่นคือ KL Clarkson Las Vegas algorithm สำหรับการเขียนโปรแกรมเชิงเส้นและจำนวนเต็มเมื่อขนาดเล็ก J. ACM 42 (2): 488–499, 1995, ดอย: 10.1145 / 201019.201036
David Eppstein

2
mnO(n2.5n+o(n)L)T(n,f(n),s)f(n)=4nL=4nsf(n)O(2nnm+n2.5n+o(n)(logm)s)

4

ต่อไปนี้เป็นจุดสองสามข้อเกี่ยวกับผลกระทบเชิงปฏิบัติของผลลัพธ์แบบ Lenstra และการใช้งานที่เป็นไปได้ใน CPLEX, Gurobi ฯลฯ หนึ่งในขั้นตอนสำคัญใน algos สำหรับ IP ส่วนใหญ่นั้นแตกต่างกันในทิศทาง "ดี" หรือ "ผอม" กล่าวคือไฮเปอร์เพลนตามความกว้างของโพลีเอ็มทีไม่ใหญ่เกินไป (พหุนามในตัวแปรและขนาดของข้อมูล) แต่Mahajan และ Ralphs (พิมพ์ที่นี่ ) แสดงให้เห็นว่าปัญหาของการเลือกการแยกส่วนที่เหมาะสมที่สุดคือ NP-complete ดังนั้นจึงเป็นการยากที่จะสร้างการใช้งานที่มีประสิทธิภาพของ algos ในระดับนี้

algos ส่วนใหญ่ที่นำมาใช้ในแพ็คเกจเช่น CPLEX สามารถจัดเป็นวิธีแยกย่อยและแยกได้ โดยทั่วไปแล้วตระกูลของเทคนิคนี้ทำงานได้ดีบนอินสแตนซ์ IP ที่เป็นไปได้และมักจะสามารถหาวิธีแก้ไขปัญหาที่เหมาะสมที่สุด แต่โฟกัสของ algos ประเภท Lenstra อยู่ในอินสแตนซ์ของ IP กรณีที่เลวร้ายที่สุดที่เป็นไปไม่ได้ที่จะเริ่มต้นด้วยและเป้าหมายคือการพิสูจน์ความเป็นไปได้จำนวนเต็ม (และพวกเขาศึกษาความซับซ้อนของงานนี้) AFAIK ไม่มีปัญหาในการเรียนที่เกี่ยวข้องกับคำอธิบายนี้ ดังนั้น CPLEX / Gurobi folks อาจจะไม่ใช้ algos แบบ Lenstra ได้ทุกเวลาในไม่ช้า

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