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?