Prova de dureza NP: procurando bons problemas restritos np-duros

8

Para mostrar a dureza NP de um problema, é necessário escolher um problema NP-difícil conhecido e encontrar uma redução polinomial do problema conhecido para o problema em questão. Teoricamente, qualquer problema NP-difícil pode ser usado para a redução, mas, na prática, alguns dos problemas são mais facilmente reduzidos do que outros.

Por exemplo, o 3-SAT é geralmente uma escolha melhor para construir uma redução do que o SAT porque o primeiro é mais restrito que o último, a 3-partição é geralmente uma escolha mais fácil do que a embalagem de lixeira, ...

Uma maneira de encontrar esses problemas "bons" para a redução é fazer uma análise estatística das reduções existentes. Por exemplo, pode-se moldar todos os pares de from -> toreduções do livro Computadores e Intratabilidade: Um Guia para a Teoria da Completude NP (ou outros recursos) e desenhar um histograma dos problemas do fromconjunto. Em seguida, podemos descobrir quais problemas são mais comumente usados ​​para reduções.

Eu me pergunto se essa análise estatística faz algum sentido. Essa pesquisa já foi realizada ou não? Caso contrário, qual é o seu palpite sobre os problemas mais usados ​​para reduções.

A razão pela qual estou fazendo essa pergunta é que já fiz algumas provas de dureza NP, mas quase todas elas se baseiam na redução do mesmo problema (3 partições). Estou procurando outras opções para usar em minhas provas.

Hélio
fonte
1
Pela minha pequena experiência, acho que depende do domínio do problema que você está enfrentando (aritmética, teoria dos grafos, programação, quebra-cabeças, etc.); Em primeiro lugar, você deve procurar problemas semelhantes ou relacionados ao NPC para ver se há um bom problema para iniciar a partir de (por exemplo, A1-A12 classific. de G&J); depois, veja as provas do NPC para obter dicas / insights sobre a direção que você pode seguir; finalmente, se nada sair, tente usar problemas simples de NPC de "baixo nível" que não exijam estruturas complexas (3SAT, 1 em 3 SAT, SAT Planar, Capa exata por três conjuntos, 3 cores, 3 partições, ciclo Ham em gráficos planares ou de grade, ..)
Marzio De Biasi 14/04
@MarzioDeBiasi: Você está certo, mas acho que pesquisar entre milhares de problemas para encontrar o adequado é um trabalho exaustivo. A classificação com base no número de reduções que sugeri nos dá uma pista sobre por onde começar a pesquisa. De fato, geralmente não escolhemos um problema aleatoriamente. Geralmente escolhemos o problema com base na semelhança (isso é uma boa palavra?) E com base na frequência de reduções que já vimos desse problema. Eu só queria tornar essa seleção um pouco mais formal ou, pelo menos, obter conselhos de especialistas da área sobre seus problemas favoritos.
Hélio
@MarzioDeBiasi: a propósito, a lista de problemas que você mencionou no seu comentário também é útil para mim.
Hélio
1
@MarzioDeBiasi, acho muito bom se você compartilhar suas experiências como resposta, você é um dos melhores em provas de dureza no cstheory.SE.
Saeed
1
ouça atentamente o MDB re G&J. eles organizam tipos de problemas em seções. talvez existam milhares de variantes de problemas completos do NP, mas elas estão em temas / gêneros / seções básicos. seria interessante construir um gráfico grande, mas não é realmente estatístico. provavelmente exibe uma pequena estrutura mundial onde existem "hubs" importantes. A própria G&J lista os principais hubs em diferentes capítulos / seções.
vzn

Respostas:

6

Não sei se existe uma maneira de fazer isso, mas minha pequena experiência pessoal funciona da seguinte maneira.

Eu tento fornecer um algoritmo de tempo polinomial para um problema. Nessas tentativas, geralmente vejo que existem algumas versões restritas do problema que são solucionáveis ​​em tempo polinomial. Também vou entender qual parte do meu algoritmo estava agitando à mão para o problema original. Posso comparar esses dois casos (a diferença entre as versões restritas e a geral também faz parte de um algoritmo difícil de melhorar). Ao comparar esses dois casos, geralmente é possível adivinhar como é o gargalo do problema. Para que possamos encontrar um problema difícil relacionado. Normalmente, fornecer um algoritmo para um problema é um trabalho árduo e precisa de bons conhecimentos sobre um problema. Depois de obtermos esse conhecimento sobre o problema, podemos ter muitas idéias diferentes para resolver o problema em diferentes cenários (não apenas resultados de dureza).

PS: Se sua prova se baseia em um problema específico, acho que é porque esse problema está muito próximo do seu trabalho, então não se culpe.

Saeed
fonte
2
+1: Concordo que a procura de um algoritmo de tempo poli é um bom ponto de partida e revela segredos sobre o problema
Hélio