Si je comprends vos définitions, cela peut se faire en temps linéaire avec un espace constant. C'est évidemment la borne la plus basse, car nous devons au moins lire l'intégralité de l'entrée.
La réponse donnée dans cette question est satisfaisante.
Il est impossible d'exécuter cela avec moins de temps ou d'espace, et l'ajout de temps ou d'espace supplémentaire est inutile, il n'y a donc pas de compromis espace-temps ici. (Observez que , donc le compromis que vous avez observé ne tient pas asymptotiquement, en tout cas.)n=O(n/k)
En termes de votre question générale, je ne connais pas de bons théorèmes qui vous aideront à prouver les compromis espace-temps. Cette question semble indiquer qu'il n'y a pas de réponse facile (connue). Fondamentalement:
Supposons qu'un langage soit décidable en temps (en utilisant une certaine quantité d'espace) et en espace s (en utilisant une certaine quantité de temps). Peut-on trouver f , g tel que L soit décidable par M qui s'exécute dans f ( t , s ) temps et g ( t , s ) espace?tsf,gLMf(t,s)g(t,s)
est inconnue, et une réponse forte résoudrait beaucoup de problèmes ouverts (notamment sur SC), ce qui implique qu'aucune solution facile n'existe.
EDIT: Ok, avec répétition (mais je suppose toujours qu'avec une entrée de taille le nombre maximum possible est n + 1 ).nn+1
Observez que notre algorithme doit pouvoir différencier au moins réponses possibles. Supposons qu'à chaque passage dans les données, nous puissions obtenir au plus k éléments de données. Ensuite, nous aurons besoin de n / k passes pour différencier toutes les réponses. En supposant que k = n / s alors nous courons en nnkn/kk=n/stemps. Je pense donc que cela prouve ce que vous voulez.nn/sn=sn
La difficulté est de montrer qu'à chaque fois, nous n'obtenons que bits. Si vous supposez que notre seule opération légale est =, alors nous sommes bons. Cependant, si vous autorisez des opérations plus complexes, vous pourrez obtenir plus d'informations.k