NP conclui problemas que são solucionáveis ​​em tempo polinomial se a entrada (por exemplo, número de variáveis) for corrigida?


7

Eu já vi alguns problemas que são difíceis de NP, mas polinomialmente solucionáveis ​​em dimensão fixa.

Penso que os exemplos são a mochila que pode ser resolvida em tempo polinomial se o número de itens for fixo e a Programação Linear Inteira com número fixo de variáveis ​​ou restrições pelo resultado de Lenstras.

Questões:

Quais são outros exemplos de problemas difíceis de NP que se tornam polinomiais solucionáveis ​​no tempo se a dimensão é fixa?

Existem problemas para os quais não é esse o caso?

Esse é sempre o caso de problemas que admitem um algoritmo FPTAS / tempo pseudo-polinomial como o Knapsack?


O que você está procurando é o FPT . Se você pode resolver um problema emf(k)nO(1 1) tempo para qualquer função f, dependendo apenas de k, o problema é considerado um parâmetro fixo tratável ou na classe de complexidade FPT . Problemas clássicos que estão no FPT são cobertura de vértice parametrizada por tamanho da solução, SAT parametrizado por número de variáveis, largura de árvore parametrizada por largura de árvore, etc. Veja também corridas de FPT para obter uma lista dos problemas selecionados.
Gål GD

11
Consulte também a pergunta de referência Lidando com a intratabilidade: problemas NP-completos .
Pål GD

Respostas:


5

Na complexidade parametrizada , resolvemos o problema fixando algum parâmetro (por exemplo,k) Se somos capazes de resolver algum problema emf(k)p(n)tempo, dizemos que o problema é um parâmetro fixo tratável emk. Aquif(k)é apenas uma função computável. Existem muitos problemas difíceis de NP que são FPT, no entanto, existem muitos problemas em NP que se acredita não serem controláveis ​​por parâmetros fixos.

Se fixando algum parâmetro, podemos resolver um problema com o tempo O(nf(k)), diz-se que esse problema está no XP. Acreditamos que XP não é igual ao FPT (assim como acreditamos que PNP). Mas também existem muitos problemas entre esses dois (FPT e XP), e definimos uma hierarquia (na verdade, várias), sendo uma delas a hierarquia W. Na hierarquia W, você tem reduções, como redução nas classes NP-completas, exceto que não estamos procurando reduções de politempo, apenas precisamos de uma redução de FPT. A classe W [0] é a classe FPT.

Estes são alguns exemplos em diferentes classes da hierarquia W:

  1. A cobertura do vértice é FPT (assim como os caminhos separados do vértice em gráficos não direcionados)
  2. Conjunto independente e Clique são ambos completos W [1]
  3. O conjunto dominante é W [2] -Completo.

Esse é outro nível de complexidade para classificar os problemas de PN de maneira mais precisa e, se você quiser mais, poderá ver este artigo .

E se você quer ainda mais, é bom ler o livro de Grohe e Fomine

E finalmente:

Esse é sempre o caso de problemas que admitem um algoritmo FPTAS / tempo pseudo-polinomial como o Knapsack

Não necessariamente, sabe-se que, se o problema tem FPTAS, também é FPT (o que é óbvio), mas existem alguns trabalhos sobre a relação do PTAS e XP, mas não há uma relação muito estreita entre o PTAS e a hierarquia W (pelo menos Eu não sei neste momento).

Também em alguns casos, podemos corrigir alguns parâmetros diferentes, por exemplo: o comprimento de um caminho mais longo no gráfico é limitado e o tamanho de uma solução é limitado (por exemplo, no conjunto de vértices de feedback), ...


A Vertex Cover é talvez o problema mais simples de FPT que existe e existe um argumento de ramificação extremamente simples para resolver o problema a tempo 2knO(1 1). Talvez você quis dizer Conjunto Independente ou Clique? Ambos os problemas são completos W [1]. Além disso, não diga que um problema é "FPT ao corrigirk", pois o ponto é que é FPT em k(ou qualquer que seja o parâmetro).
Gål GD

Além disso, não é verdade que W [1] contenha todos os problemas solucionáveis ​​no tempo nk, não é tão simples assim.
Gål GD

@ PålGD, Você está certo, existe um kernel muito simples para a cobertura de vértices, eu escrevi o caminho separado do vértice para o primeiro, então eu estava pensando em dizer algum problema relacionado à cobertura para o segundo, eu o misturei com o primeiro , e causou esse erro, mas sim, eu poderia dizer que a complexa camada de circuitos que precisamos determina Whierarquia, mas vejo que não é sensato para o novato e precisa de definições mais precisas, por isso me referi ao melhor livro que conheço, para definição exata, e se você vir mais de uma vez que eu disse definição simples, com certeza não será correto em geral.

Enfim, agora, Juho, editou minha resposta e removeu essa parte, mas acho que foi bom trazer alguma intuição ao leitor, para dizer o quanto eles são difíceis.

Na verdade, editei a resposta (você pode ver o histórico de revisões clicando no link "editado xy atrás".)
Pål GD
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.