Normalmente, algoritmos eficientes têm um tempo de execução polinomial e um espaço de solução exponencialmente grande. Isso significa que o problema deve ser fácil em dois sentidos: primeiro, o problema pode ser resolvido em um número polinomial de etapas e, segundo, o espaço da solução deve ser muito estruturado, pois o tempo de execução é apenas polilogarítmico no número de soluções possíveis.
No entanto, algumas vezes essas duas noções divergem, e um problema é fácil apenas no primeiro sentido. Por exemplo, uma técnica comum em algoritmos de aproximação e complexidade parametrizada é (aproximadamente) provar que o espaço da solução pode realmente ser restrito a um tamanho muito menor que a definição ingênua e, em seguida, usar força bruta para encontrar a melhor resposta nesse espaço restrito . Se, a priori , podemos nos restringir a, digamos, n ^ 3 respostas possíveis, mas ainda precisamos verificar cada uma delas, então, em certo sentido, esses problemas ainda são "difíceis", pois não há algoritmo melhor que a força bruta.
Por outro lado, se tivermos um problema com um número duplamente exponencial de respostas possíveis, mas pudermos resolvê-lo apenas em um tempo exponencial, gostaria de dizer que esse problema é "fácil" ("estruturado" pode ser melhor word), já que o tempo de execução é apenas o log do tamanho do espaço da solução.
Alguém conhece algum artigo que considere algo como dureza com base na diferença entre um algoritmo eficiente e força bruta ou dureza em relação ao tamanho do espaço da solução?
Como você lida com problemas típicos de programação dinâmica? Aqui, o que acontece com frequência é que o espaço das soluções ideais é polinomialmente limitado, mas o espaço das soluções não. Portanto, parece "fácil" no seu sentido, porque o tempo de execução é logarítmico no espaço da solução, mas é "difícil" no seu sentido, porque executa a "força bruta" em todas as soluções potencialmente ideais.
fonte
A perspectiva parece assumir algumas coisas, como fininidade de espaços de solução.
Por exemplo, pense no problema de gerar um mosaico de Voronoi a partir de um conjunto de pontos de entrada. Aqui há um espaço de solução com tamanho infinito, pois cada ponto nas bordas do diagrama é uma tupla de números reais. No entanto, uma solução pode ser alcançada em O (n log (n)) no número de pontos de entrada (para o plano).
fonte
Relacionada são problemas que admitem algoritmos com atraso polinomial . A primeira solução e todas as soluções subsequentes podem ser geradas em tempo polinomial. Johnson, Yannakakis e Papdimitriou discutem essa estrutura no contexto de outras possíveis lacunas (como o tempo total polinomial): Sobre a geração de todos os conjuntos independentes máximos , Information Processing Letters 27 , 119-123, 1988.
fonte