Poniższy przykład pokazuje, że algorytm który wymaga do rozwiązania problemu z ramą słów, może wymagać na 1-taśmowej maszynie Turinga (TM) ), która dokładnie wykonuje wszystkie obliczenia wskazane przez . Rozumiem, że pytanie dotyczy 1-taśmy TM i używam tego tylko w mojej odpowiedzi. To jest edycja, aby odpowiedzieć na uwagi Emila Jeřábka.AO(nlog(n))O(n2log(n)3)A
Znajdziemy następujący bardziej ogólny wniosek . Aby udowodnić, że TM może rozwiązać w problem rozwiązany w przez algorytm na pamięci RAM, nie wystarczy uruchomić na TM. Mądry może być potrzebny algorytm. To samo dotyczy sytuacji, gdy ktoś chce udowodnić narzut . W każdym razie udowodnienie istnienia sprytnego algorytmu wydaje się być dalekie od natychmiastowego. Nie jest to zgodne z innymi odpowiedziami, które w zasadzie proponują jedynie symulację / wykonanie na TM wszystkich obliczeń pamięci RAM (algorytmu ) w celu ogłoszenia złożoności TM, takiej jakO(T(n)2)O(T(n))AAO(nlog(n))AO(T(n)2) lub .O(T(n)nlog(n))
Problem: tablicę / tabelę z liczb całkowitych, każda zapisana w bitach. Otrzymujemy drugą tablicę z pozycjami , z których każda rejestruje pewną liczbę bitów. Dla dowolnego definiujemy if MOD MOD . W przeciwnym razie . Wyjście . Uważam, że dane wejściowe podano jako taśmę ztabn=2klog(n)dlog(n)log(n)t∈[0..log(n)−1]Xt=1tab[i]d[t]=tab[n/2+i]d[t] ∀i∈[0..n/2−1]Xt=0∑log(n)−1t=0Xtnlog(n)+log(n)log(n) cyfry binarne, aby odpowiedzieć na komentarze Emila Jeřábka.
Algorytm w pamięci RAMA A Pamięć RAM o rozmiarze słowa potrzebuje = do odczytu wejściowego ciągu binarnego dane. Ale po odczytaniu danych może działać tylko ze słowami o rozmiarze . Algorytm oblicza dowolne w , przechodząc przez wszystkie i testując warunek. Główna pętla to FOR : oblicz . Całkowita złożoność wynosi (odczyt danych) +w=log(n)O(nlog(n)+log(n)2)O(nlog(n))log(n)AXtO(n)i∈[0..n/2−1]At=0,1,2,…log(n)−1XtO(nlog(n))O(nlog(n))(wykonując obliczenia), więc może zrobić to wszystko w na RAM.AO(nlog(n))
Algorytm na TM na 1 taśmę:A Twierdzę, że TM na jedną taśmę potrzebuje czasu na ustalone . Z punktu widzenia TM określenie jest równoważne testowaniu równości dwóch ciągów binarnych o długości . Na przykład operacja MOD MOD może być równoważna usunięciu bitu z . W takich przypadkach ustalenie jest równoważne testowi równości na ciągach bitów o długości . Dobrze wiadomo, że testowanie równości dwóch łańcuchów długościO(n2log(n)2)tAtO(nlog(n))tab[i]d[t]0tab[i]Atn(log(n)−1)/2mwymaga na 1-taśmie TM, ale tak naprawdę nie mogę teraz znaleźć odniesienia. Jednak dostarczam dowód w ps. Jeśli TM wykonuje główną pętlę z , musi wydać co najmniej dla każdego , kończąc się w .O(m2)AO((nlogn)2)t=0,1,2,…log(n)−1O(n2log(n)3)
ps. Pokazuję, że testowanie równości na ciągach bitów z bitami nie może być szybsze niż testowanie palyndromu na ciągach bitów z bitami (wiadomo, że palyndrom zajmuje co najmniej czas ). Możemy zmodyfikować dowolny algorytm TM do testowania równości w celu rozwiązania palindromu. Załóżmy, że TM testująca równość rozpoczyna się od dwóch liczb całkowitych: jednej po lewej stronie głowy, jednej po prawej (jest to najprostsza forma wprowadzania TM). Każdy ruch nad lewymi pozycjami może być odzwierciedlony (odbity) nad prawymi pozycjami. Budujemy lustrzaną bazę TM: ilekroć początkowa baza TM znajduje się w pozycji (po lewej), lustrzana baza TM znajduje się w pozycji (po prawej). Jeżeli TM rozwiązała test równości w mniej niżmmO(m2)−x<0xO(m2), ta zmodyfikowana lustrzana TM rozwiązałaby palindrom w mniej niż .O(m2)
Ponadto istnieją pewne algorytmy TM do testowania równości i wszystkie z nich wymagają kwadratowego czasu, ponieważ wymagają trochę zygzakowatości, patrz na przykład Turing Machine Przykład 2 na kursy.cs.washington.edu/courses/cse431/14sp/scribes/ lec3.pdf