Se eu entendo suas definições, isso pode ser feito em tempo linear com espaço constante. Este é obviamente o limite mais baixo, porque precisamos pelo menos ler toda a entrada.
A resposta dada nesta pergunta é satisfatória.
É impossível executar isso com menos tempo ou espaço, e adicionar tempo ou espaço extra é inútil, portanto, não há troca de espaço-tempo aqui. (Observe que , para que o tradeoff que você observou não seja assintoticamente, em nenhum caso).n=O(n/k)
Em termos de sua pergunta geral, não conheço nenhum bom teorema de improviso que o ajude a provar trocas no espaço-tempo. Esta pergunta parece indicar que não há uma resposta fácil (conhecida). Basicamente:
Suponha que alguma linguagem seja decidida no tempo (usando uma certa quantidade de espaço) e no espaço s (usando uma certa quantidade de tempo). Podemos encontrar f , g tal que L é decidível por M , que é executado em f ( t , s ) tempo e g ( t , s ) espaço?tsf,gLMf(t,s)g(t,s)
é desconhecido, e uma resposta forte resolveria muitos problemas em aberto (principalmente sobre SC), o que implica que não existe uma solução fácil.
EDIT: Ok, com repetição (mas ainda estou assumindo que, com uma entrada de tamanho o número máximo possível é n + 1 ).nn+1
Observe que nosso algoritmo precisa ser capaz de diferenciar entre pelo menos respostas possíveis. Suponha que, a cada passagem dos dados, possamos obter no máximo k partes de dados. Em seguida, precisaremos de n / k passes para diferenciar todas as respostas. Supondo que k = n / s então corremos em nnkn/kk=n/stempo. Então eu acho que isso prova o que você quer.nn/sn=sn
A dificuldade está em mostrar que, a cada vez, obtemos apenas bits. Se você assumir que nossa única operação legal é =, então estamos bem. No entanto, se você permitir operações mais complexas, poderá obter mais informações.k