Если я понимаю ваши определения, это можно сделать за линейное время с постоянным пространством. Это, очевидно, самая низкая граница, потому что нам нужно, по крайней мере, прочитать весь ввод.
Ответ, данный в этом вопросе, удовлетворяет.
Невозможно выполнить это с меньшим временем или пространством, и добавление дополнительного времени или пространства бесполезно, поэтому здесь нет компромисса между пространством и временем. (Заметьте, что , поэтому компромисс, который вы наблюдали, не выполняется асимптотически, в любом случае.)n=O(n/k)
С точки зрения вашего общего вопроса, я не знаю ни одной хорошей теоремы, которая поможет вам доказать компромиссы пространства-времени. Этот вопрос, кажется, указывает на то, что нет (известного) простого ответа. В принципе:
Предположим, что некоторый язык разрешим в времени (используя некоторое количество пространства) и в s пространстве (используя некоторое количество времени). Можем ли мы найти f , g такой, что L разрешима на M, который работает за время f ( t , s ) и g ( t)tsf,gLMf(t,s)пространстве , s ) ?g(t,s)
неизвестно, и сильный ответ решит множество открытых проблем (особенно в отношении SC), подразумевая, что простого решения не существует.
РЕДАКТИРОВАТЬ: Хорошо, с повторением (но я все еще предполагаю, что с вводом размера максимально возможное числоn ).n+1
Заметьте, что наш алгоритм должен уметь различать хотя бы возможных ответов. Предположим, что при каждом прохождении данных мы можем получить не более k фрагментов данных. Тогда нам понадобится n / k пропусков, чтобы дифференцировать все ответы. Предполагая, что k = n / snkn/kk=n/s тогда мы бежим в раз. Так что я думаю, это доказывает, что вы хотите.nn/sn=sn
Сложность состоит в том, чтобы показать, что каждый раз, когда мы получаем только k бит. Если вы предполагаете, что наша единственная законная операция - это =, тогда мы в порядке. Однако, если вы разрешите более сложные операции, вы сможете получить больше информации.