Jeśli weźmiemy pod uwagę tylko problemy w P, czy są jakieś duże luki między najszybszym znanym algorytmem RAM-słowo i najszybszym znanym algorytmem maszyny Turinga dla określonych problemów? Jestem szczególnie zainteresowany, jeśli istnieją duże luki w naturalnych problemach leżących w interesie ogólnym.
9
Odpowiedzi:
Wiadomo, że każdy problem, który można obliczyć na maszynie RAM w czasie , można to zrobić na maszynie Turinga w czasie co najwyżej . Musisz zauważyć, że całkowity rozmiar używanej pamięci nie może być większy niż , ponieważ oznaczałoby to, że wykonałeś więcej operacji zapisu niż , więc za każdym razem, gdy pobierasz coś z pamięci RAM, Turing maszyna zajęłaby w najgorszym przypadku czas, aby znaleźć żądany element sekwencyjnie z taśmy. Poza dostępem do pamięci pozostałe operacje powinny zająć mniej więcej ten sam czas. I tak dostajesz granicę.T(n) T(n)2 T(n) T(n) T(n)
źródło
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.A O(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)) A A O(nlog(n)) A O(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ę ztab n=2k log(n) d log(n) log(n) t∈[0..log(n)−1] Xt=1 tab[i] d[t]=tab[n/2+i] d[t] ∀i∈[0..n/2−1] Xt=0 ∑log(n)−1t=0Xt nlog(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) A Xt O(n) i∈[0..n/2−1] A t=0,1,2,…log(n)−1 Xt O(nlog(n)) O(nlog(n)) (wykonując obliczenia), więc może zrobić to wszystko w na RAM.A O(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) t At O(nlog(n)) tab[i] d[t] 0 tab[i] At n(log(n)−1)/2 m wymaga 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) A O((nlogn)2) t=0,1,2,…log(n)−1 O(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żm m O(m2) −x<0 x O(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
źródło