Jeśli rozumiem twoje definicje, można to zrobić w czasie liniowym ze stałą przestrzenią. Jest to oczywiście najniższa granica, ponieważ musimy przynajmniej odczytać całe wejście.
Odpowiedź udzielona w tym pytaniu jest satysfakcjonująca.
Niemożliwe jest uruchomienie tego z mniejszym czasem lub przestrzenią, a dodanie dodatkowego czasu lub przestrzeni jest bezużyteczne, więc nie ma tutaj kompromisu między czasoprzestrzenią. (Zauważ, że , więc zaobserwowany przez ciebie kompromis nie jest asymptotyczny.)n=O(n/k)
Jeśli chodzi o twoje ogólne pytanie, nie znam żadnych fajnych twierdzeń, które pomogą ci udowodnić kompromisy czasoprzestrzenne. To pytanie wydaje się wskazywać, że nie ma (znanej) łatwej odpowiedzi. Gruntownie:
Przypuśćmy, że część języka jest rozstrzygalne w czasu (za pomocą pewnej ilości przestrzeni) i y przestrzeń (stosując pewną ilość czasu). Można znaleźć , f , g , tak że L jest rozstrzygalne przez M , która biegnie w f ( t , s ), czasu i g ( t , s )tsf,gLMf(t,s)g(t,s) ?
jest nieznany, a silna odpowiedź rozwiązałaby wiele otwartych problemów (w szczególności dotyczących SC), co sugeruje, że nie ma łatwego rozwiązania.
EDYCJA: Ok, z powtarzaniem (ale nadal zakładam, że przy wejściu o wielkości maksymalna możliwa liczba to n + 1nn+1 ).
Zauważ, że nasz algorytm musi być w stanie rozróżnić co najmniej możliwych odpowiedzi. Załóżmy, że przy każdym przejściu danych możemy uzyskać maksymalnie k części danych. Następnie będziemy potrzebować n / k przepustek, aby rozróżnić wszystkie odpowiedzi. Zakładając, że k = n / s, wówczas biegniemy w nnkn/kk=n/snn/sn=sn czas. Myślę więc, że to potwierdza, czego chcesz.
Trudność polega na wykazaniu, że za każdym razem otrzymujemy tylko bitów. Jeśli założysz, że naszą jedyną legalną operacją jest =, to jesteśmy dobrzy. Jeśli jednak zezwolisz na bardziej złożone operacje, będziesz w stanie uzyskać więcej informacji.k