Por que a programação linear em P, mas a programação inteira é NP-hard?

35

A programação linear (LP) está em P e a programação inteira (IP) é NP-hard. Mas como os computadores só podem manipular números com precisão finita, na prática um computador está usando números inteiros para programação linear. Por esse motivo, LP e IP não deveriam estar na mesma classe de complexidade?

Sasha, o Noob
fonte
7
Acrescentando um pouco à resposta de jmite: Existem muitos casos em que restrições de integralidade tornam o problema muito mais difícil. Por exemplo, o problema fracionário da mochila pode ser resolvido em tempo polinomial, embora o problema inteiro da mochila seja NP-Hard. Portanto, isso não é apenas algo verdadeiro para LP e IP.
user340082710
7
Mesmo se considerarmos que os computadores executam operações com números inteiros, isso não significa que a solução retornada seja um número inteiro; pode ser racional, isto é , razão de dois números inteiros. E isso dá muito mais flexibilidade. E, é claro, nem sempre podemos converter uma solução racional em uma solução viável para o IP. Em geral, o IP terá mais restrições nas variáveis ​​do que apenas pedir uma solução integral. Pense em um programa inteiro . 0,1
megas
11
Não é tão difícil manipular números com precisão infinita, se você quiser, especialmente quando eles são racionais. A precisão finita é apenas uma otimização para reduzir os tempos de execução.
2
@Hurkyl "Não é tão difícil manipular números com precisão infinita, se você quiser, especialmente quando eles são racionais." Existe um subconjunto estrito dos números reais chamados números computáveis, que inclui racionais + números como sqrt (2) etc ... e é definido como o conjunto de números computáveis ​​por uma máquina de Turing. Aqueles que não estão incluídos lá, não podem, por definição, ser manipulados por um computador.
Sasha, o Noob,
11
@SashatheNoob O que você está dizendo não está realmente em desacordo com o que Hurkyl disse. Os números computáveis ​​não têm um limite máximo predefinido de quão precisos eles podem ser (é arbitrariamente definido como qualquer valor que você quiser, desde que a máquina de turing tenha memória suficiente - portanto, precisão infinita). Para dizer que o subconjunto de Números Computáveis ​​inclui todos os números racionais, você está admitindo que os computadores podem manipular números com precisão infinita. (Declaração de Hurkyl é absolutamente verdadeiro O fato de que a precisão é limitada para certos tipos de dados é apenas uma otimização..)
BrainSlugs83

Respostas:

9

Não posso comentar, pois exige 50 repetições, mas existem alguns conceitos errôneos, especialmente o comentário de Raphael "Em geral, um domínio contínuo significa que não há força bruta (e nenhuma heurística inteligente para acelerar isso)".

Isso é absolutamente falso. O ponto chave é de fato convexidade. Excepto algumas qualificações de restrição técnica, minimizar uma função convexa (ou maximizar uma função côncava) sobre um conjunto convexo é essencialmente trivial, no sentido de convergência de tempo polinomial.

Em termos gerais, pode-se dizer que há uma correspondência entre a convexidade de um problema na otimização "matemática" e a viabilidade de algoritmos gananciosos na otimização da "ciência da computação". Isso ocorre no sentido de que ambos habilitam métodos de pesquisa local. Você nunca precisará voltar atrás em um algoritmo ganancioso e nunca terá que se arrepender de uma direção de descida em um problema de otimização convexa. Melhorias locais na função objetivo sempre o levarão mais perto do ideal global.

Não é assim no caso não convexo. Aqui, pode haver um mínimo global, mas vários mínimos locais para os quais um algoritmo de descida local sempre será atraído, da mesma forma que algoritmos gananciosos quando aplicados a problemas de NP. Às vezes, eles encontram o verdadeiro ideal, na maioria das vezes não.

Benjamin Lindqvist
fonte
23

A resposta curta: porque você pode usar Inteiros para simular Booleans para SAT , mas quando você não se restringe a isso, não é possível simular SAT. Você obterá uma resposta viável, mas ela não terá mais significado em termos de qualquer instância do SAT que você estivesse tentando simular.

PNP

jmite
fonte
21

A razão pela qual a programação linear é "eficiente" é que o espaço da solução pode ser representado por um único poliedro convexo. Se alguém está tentando encontrar o vértice "mais alto" nesse poliedro (pode-se aplicar uma transformação linear a qualquer problema de programação linear para fazer com que "altura" corresponda à quantidade a ser maximizada), então, a partir de qualquer vértice, pode-se percorrer as arestas para o ponto mais alto, sem nunca ter que ir "ladeira abaixo". O que torna a programação inteira "difícil" é que não há um espaço de solução contínuo, mas há muitos espaços de solução disjuntos e nenhuma maneira de trabalhar de maneira incremental em direção à solução ideal.

supercat
fonte
2
A palavra-chave aqui é "convexidade"
cody 14/03
11
Essa subida não é o método simplex, do qual nenhuma variante é polinomial no pior dos casos?
jbapple
11
Existem muitos problemas que são mais fáceis de resolver em espaços discretos (o que permite pesquisas discretas) do que no espaço contínuo.
Raphael
@ Rafael: você pode dar alguns exemplos de tais problemas? Eu estive pensando sobre isso e não consigo pensar em muitos.
Cody
@cody Encontrar máximos / mínimos de funções (unidimensionais), por exemplo. Veja aqui um exemplo atraente que só é acessível depois de observar que podemos reduzir o espaço de pesquisa finito para um espaço finito. Observe que os LPs são meio especiais dessa maneira: observando que precisamos considerar apenas os cantos de um poliedro, obtemos um espaço de pesquisa finito. Em geral, um domínio contínuo significa que não há força bruta (e nenhuma heurística inteligente para acelerá-la).
Raphael
3

As outras respostas estão corretas, mas acho-as um pouco técnicas. Suponha que você tenha varrido (eliminado) uma matriz e esteja procurando por uma solução e a matriz tenha a seguinte aparência:

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

Q

Albert Hendriks
fonte