Para cada função computável existe um problema que pode ser resolvido na melhor das hipóteses em ou existe uma função computável modo que todo problema que pode ser resolvido em possa também pode ser resolvido em tempo?
Esta pergunta surgiu na minha cabeça ontem. Estou pensando nisso há um tempo, mas não consigo descobrir. Eu realmente não sei como eu pesquisaria isso, então estou perguntando aqui. Aqui está o que eu vim com:
Meu primeiro pensamento foi que a resposta é sim: Para cada função computável o problema "Output pontos" (ou criar uma cadeia com pontos ou o que for) não pode, obviamente, ser resolvido em hora. Portanto, precisamos mostrar apenas que ele pode ser resolvido no tempo . Não tem problema, basta usar o seguinte pseudo-código:
x = f(n)
for i from 1 to x:
output(".")
Claramente, esse algoritmo resolve o problema declarado. E o tempo de execução está obviamente em , então o problema foi resolvido. Isso foi fácil, certo? Exceto que não, não é porque você deve considerar o custo da primeira linha. O tempo de execução do algoritmo acima é apenas em se o tempo necessário para calcular estiver em . Claramente isso não é verdade para todas as funções 1 .Θ ( f ( n ) ) f ( n ) O ( f ( n ) )
Portanto, essa abordagem não me levou a lugar algum. Ficaria grato por alguém me apontando na direção certa para descobrir isso corretamente.
1 Considere, por exemplo, a função . Claramente , mas não há algoritmo que calcule no tempo de . O ( p ( n ) ) = O ( 1 ) p O ( 1 )