Programação inteira com um número fixo de variáveis


12

O famoso artigo de 1983 de H. Lenstra Programação inteira com um número fixo de variáveis afirma que programas inteiros com um número fixo de variáveis ​​são solucionáveis ​​no polinômio no tempo no comprimento dos dados.

Eu interpreto isso da seguinte maneira.

  1. A programação inteira, em geral, ainda é NP-completa, mas se meu tamanho típico de problema em questão (digamos cerca de 10.000 variáveis, um número arbitrário de restrições) for possível na prática, eu poderia construir um algoritmo que seja escalonado polinomialmente no número de restrições, mas não em o número de variáveis ​​e restrições.
  2. O resultado também é aplicável à programação binária, pois posso forçar qualquer número inteiro para 0-1 adicionando uma restrição apropriada.

Minha interpretação está correta?

Esse resultado tem implicações práticas? Ou seja, existe uma implementação disponível ou é usada em solucionadores populares como CPLEX, Gurobi ou Mosek?

Algumas citações do artigo:

Esse comprimento pode, para nossos propósitos, ser definido como n · m · log (a + 2), onde a denota o máximo dos valores absolutos dos coeficientes de A e b. De fato, não é provável que exista um algoritmo polinomial, pois o problema em questão é NP-completo

[...]

Foi conjecturado [5], [10] que para qualquer valor fixo de n existe um algoritmo polinomial para a solução do problema de programação linear inteira. No presente artigo, provamos essa conjectura exibindo esse algoritmo. O grau do polinômio pelo qual o tempo de execução do nosso algoritmo pode ser limitado é uma função exponencial de n.


2
"Eu poderia construir um algoritmo que escala polinomialmente o número de restrições ou variáveis, mas não o número de variáveis ​​e restrições". Ponto / pergunta interessante - até agora vimos que isso é verdadeiro para restrições (mantendo o número de variáveis ​​fixo), mas talvez seja interessante perguntar se isso também pode ser verdadeiro para variáveis ​​(mantendo o número de restrições fixo) ? Intuitivamente, parece que não deveria ser verdade; caso contrário, o IP seria polytime em geral, mas não tenho certeza.
usul

Na seção 4 do artigo, Lenstra afirma que "o problema de programação linear inteira com um valor fixo de m é polinomialmente solucionável". (m é o número de restrições) Isto segue como um corolário do resultado principal. Esta seção não está clara para mim. Pensando bem, talvez ele assuma n e m fixo; significando que é polinomial em "a" (o máximo dos valores absolutos dos coeficientes de A e b). (Como resultado, removi a parte "ou variáveis" da minha pergunta acima).
Bernhard Kausler

6
@usul: é verdade e não implica que o IP seja polytime. isto significa apenas que existe um algoritmo que leva tempo exponencial em e em polinomial e outra que leva tempo exponencial em e polinomial emnmmn
Sasho Nikolov

Respostas:


19

O algoritmo mais rápido atual é na verdade linear no comprimento do programa linear inteiro para cada valor fixo de . Em sua tese de doutorado, Lokshtanov (2009) resume bem os resultados de Lenstra (1983), Kannan (1987) e Frank & Tardos (1987) pelo seguinte teorema.n

Programação inteiro linear pode ser resolvido utilizando operações aritméticas e polinomial espaço em . Aqui é o número de bits na entrada e o número de variáveis no linear inteiro programa.O(n2.5n+o(n)L)LLn

Assim, o problema é um parâmetro fixo linear parametrizado pelo número de variáveis.

1) Sim, a Programação Linear Inteira é "ainda" NP-completa. O tempo de execução do resultado teórico acima depende apenas linearmente do número de restrições, por isso é bem dimensionado no número de restrições. No entanto, não conheço nenhuma implementação real desse algoritmo.

2) Sim, fazer as variáveis ​​assumirem valores binários é simples como você observou.

Atualizar. A dependência de pode realmente ser aprimorada no tempo de execução da Programação Linear Inteira. Baseado em Clarkson (1995) e Eisenbrand (2003) (veja os comentários abaixo), pode-se obter um algoritmo com tempo de execução onde é o número de restrições é o número máximo de bits necessário para codificar uma restrição ou a função objetivo.L

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

1
Ah, obrigado pelo termo "parâmetro fixo linear". É disso que trata o artigo de Lenstra. Veja também: en.wikipedia.org/wiki/Parameterized_complexity
Bernhard Kausler 18/2

4
apenas uma observação óbvia: para variáveis ​​binárias, os algoritmos de força bruta levam tempo , portanto esse caso é trivial. nO(n2nm)
Sasho Nikolov

Para a versão de otimização do ILP: se leva para resolver um problema com coeficientes racionais e com variáveis, restrições bits por restrição, o ILP pode ser feito em operações nos racionais de bits, onde é (acho) na pior das hipóteses ; baseia-se no papel de Eisenbrand: www2.math.uni-paderborn.de/fileadmin/Mathematik/AG-Eisenbrand/... .T(n,m,s)nmsO(2nm+(logm)T(n,f(n),s)O(s)f(n)nO(n)
Ken Clarkson

1
Isso não altera os fatos básicos da sua resposta, mas outra referência relevante é a KL Clarkson. Algoritmos de Las Vegas para programação linear e inteira quando a dimensão é pequena. J. ACM 42 (2): 488–499, 1995, doi: 10.1145 / 201019.201036.
David Eppstein

2
Meu artigo é incorreto para o ILP: nos casos básicos de " " pequeno , eu me referi aos algoritmos do ILP para viabilidade, quando eu deveria ter me referido aos algoritmos que resolvem a otimização. O artigo de Eisenbrand observa isso e fornece resultados para o caso base; no entanto, não consegui descobrir a dependência exata de em seu artigo. Você pode simplesmente conectar o resultado na parte do que afirmei, onde , e então . (Desculpe, fiquei confuso sobre o que deveria ser.) O resultado, ignorando esse termo intermediário, é algo como operações. n S ( N 2,5 N + O ( n ) G ) T ( n , f ( n ) , s ) f ( n ) = 4 n L = 4 n s f ( n ) S ( 2 n n m + n 2,5 n + o ( n ) ( log m ) smnO(n2.5n+o(n)L)T(n,f(n),s)f(n)=4nL=4nsf(n)O(2nnm+n2.5n+o(n)(logm)s)
Veja o perfil completo de Ken Clarkson

4

Aqui estão alguns pontos em relação às implicações práticas dos resultados do tipo Lenstra e possíveis implementações no CPLEX, Gurobi, etc. isto é, hiperplanos ao longo dos quais a largura do politopo não é muito grande (polinômio em variáveis ​​e tamanho dos dados). Mas Mahajan e Ralphs (pré-impressão aqui ) mostraram que o problema de selecionar uma disjunção ideal é NP-completo. Portanto, parece difícil criar implementações praticamente eficientes dessa classe de algos.

A maioria dos algos implementados em pacotes como o CPLEX pode ser classificada como métodos de ramificação e corte. Essa família de técnicas geralmente funciona bem em instâncias de IP que são viáveis ​​e geralmente conseguem encontrar soluções quase ideais. Mas o foco dos algos do tipo Lenstra está nos piores casos de instâncias de IP que são inviáveis ​​para começar, e o objetivo é provar sua inviabilidade inteira (e eles estudam a complexidade dessa tarefa). AFAIK, não há classe de problemas com relevância prática que se encaixem nessa descrição. Portanto, o pessoal do CPLEX / Gurobi provavelmente não implementaria algos do tipo Lenstra tão cedo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.