Pemrograman integer dengan sejumlah variabel tetap


12

Makalah 1983 yang terkenal oleh H. Lenstra Programmer Integer Dengan Jumlah Variabel Tetap menyatakan bahwa program integer dengan jumlah variabel tetap dapat dipecahkan dalam polinomial waktu dalam panjang data.

Saya menafsirkannya sebagai berikut.

  1. Pemrograman integer secara umum masih NP-lengkap tetapi jika ukuran masalah khas saya di tangan (katakanlah sekitar 10.000 variabel, sejumlah kendala sewenang-wenang) layak dalam prakteknya maka saya bisa membangun algoritma yang secara polinomial dalam jumlah kendala tetapi tidak dalam jumlah variabel dan batasan.
  2. Hasilnya juga berlaku untuk pemrograman biner karena saya dapat memaksa integer apa pun ke 0-1 dengan menambahkan batasan yang sesuai.

Apakah interpretasi saya benar?

Apakah hasil ini memiliki implikasi praktis? Yaitu, apakah ada implementasi yang tersedia atau digunakan dalam solver populer seperti CPLEX, Gurobi, atau Mosek?

Beberapa kutipan dari koran:

Panjang ini dapat, untuk tujuan kami, didefinisikan sebagai n · m · log (a + 2), di mana a menunjukkan maksimum dari nilai absolut dari koefisien A dan b. Memang, tidak ada algoritma polinomial seperti itu yang mungkin ada, karena masalah yang dimaksud adalah NP-complete

[...]

Dugaan [5], [10] bahwa untuk setiap nilai tetap dari n terdapat algoritma polinomial untuk solusi dari masalah pemrograman linear integer. Dalam makalah ini kami membuktikan dugaan ini dengan menunjukkan algoritma seperti itu. Tingkat polinomial di mana waktu berjalan dari algoritma kami dapat dibatasi adalah fungsi eksponensial dari n.


2
"Saya bisa membuat algoritma yang mengukur secara polinomi dalam jumlah kendala atau variabel tetapi tidak dalam jumlah variabel dan kendala." Poin / pertanyaan menarik - sejauh ini kita telah melihat bahwa ini benar untuk kendala (menahan jumlah variabel tetap), tetapi mungkin akan menarik untuk bertanya apakah itu bisa berlaku untuk variabel (menahan jumlah kendala tetap) juga ? Secara intuitif rasanya seperti itu tidak benar, kalau tidak IP akan menjadi polytime secara umum, tapi saya tidak yakin.
usul

Dalam bagian 4 dari makalah Lenstra menyatakan bahwa "masalah pemrograman linier integer dengan nilai tetap dari m secara polinomi dipecahkan." (m adalah jumlah contraints) Ini mengikuti sebagai akibat wajar dari hasil utama. Bagian ini tidak jelas bagi saya. Setelah berpikir dua kali, mungkin ia mengasumsikan bahwa ia adalah AND; artinya polinomial dalam "a" (maksimum dari nilai absolut dari koefisien A dan b). (Saya menghapus bagian "atau variabel" dari pertanyaan saya di atas sebagai konsekuensi).
Bernhard Kausler

6
@ Usul: itu benar dan itu tidak menyiratkan bahwa IP adalah polytime. itu hanya berarti ada satu algoritma yang mengambil waktu eksponensial dalam dan polinomial dalam dan yang lain yang mengambil waktu eksponensial dalam dan polinomial dalamnmmn
Sasho Nikolov

Jawaban:


19

Algoritma tercepat saat ini sebenarnya linear dalam panjang program linear integer untuk setiap nilai tetap . Dalam tesis PhD-nya, Lokshtanov (2009) dengan baik merangkum hasil oleh Lenstra (1983), Kannan (1987), dan Frank & Tardos (1987) oleh teorema berikut.n

Integer Linear Programming dapat diselesaikan dengan menggunakan operasi aritmatika dan ruang polinomial di . Berikut adalah jumlah bit pada input dan jumlah variabel dalam integer linear Program.O(n2.5n+o(n)L)LLn

Dengan demikian, masalahnya adalah parameter-linear tetap parameter dengan jumlah variabel.

1) Ya, Integer Linear Programming "masih" NP-complete. Waktu berjalan dari hasil teoretis di atas hanya tergantung secara linier pada jumlah kendala, sehingga dapat diukur dengan baik dalam jumlah kendala. Namun saya tahu tidak ada implementasi aktual dari algoritma ini.

2) Ya, membuat variabel mengambil nilai biner langsung seperti yang Anda amati.

Memperbarui. Ketergantungan pada sebenarnya dapat ditingkatkan dalam waktu berjalan untuk Integer Linear Programming. Berdasarkan Clarkson (1995) dan Eisenbrand (2003) (lihat komentar di bawah) orang dapat memperoleh algoritma dengan waktu berjalan mana adalah jumlah kendala dan adalah jumlah bit maksimum yang diperlukan untuk menyandikan kendala atau fungsi tujuan.L

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

1
Ah, terima kasih untuk istilah "fixed-parameter linear". Tentang itulah makalah Lenstra. Lihat juga: en.wikipedia.org/wiki/Parameterized_complexity
Bernhard Kausler

4
hanya sebuah pengamatan yang jelas: untuk variabel biner, algoritma bruteforce membutuhkan waktu , sehingga kasusnya sepele. nO(n2nm)
Sasho Nikolov

Untuk versi optimalisasi ILP: jika itu membutuhkan waktu untuk memecahkan masalah dengan koefisien rasional dan dengan variabel, kendala, dan bit per kendala, maka ILP dapat dilakukan dalam beroperasi pada -bit rasional, di mana adalah (saya pikir) paling buruk ; ini didasarkan pada makalah Eisenbrand: www2.math.uni-paderborn.de/fileadmin/Mathematik/AG-Eisenbrand/… .n m s O ( 2 n m + ( log m ) T ( n , f ( n ) , s ) O ( s ) f ( n ) n O ( n )T(n,m,s)nmsO(2nm+(logm)T(n,f(n),s)O(s)f(n)nO(n)
Ken Clarkson

1
Ini tidak mengubah fakta dasar jawaban Anda, tetapi referensi lain yang relevan adalah KL Clarkson. Algoritma Las Vegas untuk pemrograman linier dan integer saat dimensinya kecil. J. ACM 42 (2): 488-499, 1995, doi: 10.1145 / 201019.201036.
David Eppstein

2
Makalah saya bermasalah untuk ILP: dalam kasus dasar untuk "kecil" , saya merujuk ke algoritma ILP untuk kelayakan, ketika saya seharusnya merujuk pada optimasi penyelesaian algoritma. Makalah Eisenbrand mencatat ini dan memberikan hasil untuk kasus dasar; Namun, saya tidak dapat menemukan ketergantungan yang tepat pada di makalahnya. Anda bisa memasukkan hasil ke bagian dari apa yang saya klaim, di mana , dan begitu . (Maaf, saya bingung tentang apa yang seharusnya .) Hasilnya, mengabaikan istilah tengah, adalah sesuatu seperti operasi. nmnT ( n , f ( n ) , s ) f ( n ) = 4 n L = 4 n s f ( n ) O ( 2 n n m + n 2.5 n + o ( n ) ( log m ) s )O(n2.5n+o(n)L)T(n,f(n),s)f(n)=4nL=4nsf(n)O(2nnm+n2.5n+o(n)(logm)s)
Ken Clarkson

4

Berikut adalah beberapa poin mengenai implikasi praktis hasil tipe Lenstra, dan kemungkinan implementasi di CPLEX, Gurobi, dll. Salah satu langkah kunci dalam sebagian besar algos tersebut untuk IP adalah bercabang pada arah "baik" atau "tipis", yaitu, pesawat terbang di mana lebar polytope tidak terlalu besar (polinomial dalam variabel dan ukuran data). Tetapi Mahajan dan Ralphs (preprint here ) menunjukkan bahwa masalah memilih disjungsi optimal adalah NP-lengkap. Jadi, akan tampak sulit untuk membuat implementasi yang praktis dari kelas algos ini.

Sebagian besar algo yang diimplementasikan dalam paket seperti CPLEX dapat diklasifikasikan sebagai metode cabang-dan-potong. Rangkaian teknik ini biasanya bekerja dengan baik pada instance IP yang layak, dan seringkali dapat menemukan solusi yang hampir optimal. Tetapi fokus dari algos tipe Lenstra adalah pada kasus IP kasus terburuk yang tidak layak untuk memulai, dan tujuannya adalah untuk membuktikan ketidaklayakan bilangan bulat mereka (dan mereka mempelajari kompleksitas tugas ini). AFAIK, tidak ada kelas masalah dengan relevansi praktis yang sesuai dengan deskripsi ini. Jadi, orang CPLEX / Gurobi mungkin tidak akan mengimplementasikan algos jenis Lenstra dalam waktu dekat.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.