Niektóre skomplikowane algorytmy ( szukanie związku ) mają prawie stałą odwrotną funkcję Ackermanna, która pojawia się w asymptotycznej złożoności czasowej, i są optymalne w najgorszym przypadku, jeśli prawie stały odwrotny termin Ackermanna jest ignorowany.
Czy istnieją przykłady znanych algorytmów z czasami działania, które obejmują funkcje, które rosną zasadniczo wolniej niż odwrotny Ackermann (np. Odwrotności funkcji, które nie są równoważne Ackermannowi w transformacjach wielomianowych lub wykładniczych itp.), Które dają najbardziej znany czas najgorszego przypadku złożoność rozwiązania podstawowego problemu?
reference-request
algorithm-analysis
time-complexity
runtime-analysis
użytkownik2566092
źródło
źródło
Odpowiedzi:
(Podziękowania dla Tsvi Kopelowitz za ten odnośnik.)
źródło
źródło
Kiedy Alan Turing odkrył komputer, zaproponowano kilka modeli tego komputera. Turing udowodnił, że niektóre (3) z tych modeli mogą się symulować ORAZ obliczać funkcję Ackermanna, podczas gdy inne modele mogą symulować się nawzajem, ale nie funkcję Ackermanna (więc nie mogą symulować 3). Dlatego te 3 modele (Turing Machine, von Neumann i jeden, którego nie znam) zostały wybrane jako architektura komputera. Nie oznacza to, że funkcja Ackermanna jest granicą komputera, ale przypuszczam, że to twarda nauka. Nie znam żadnych obliczalnych funkcji, które rosną szybciej niż funkcja Ackermanna.
Nie sądzę, aby istniał problem praktyczny pasujący do twojego pytania, ale być może uda nam się go rozwiązać. Musimy jednak nałożyć ograniczenia na dane wejściowe. Ponieważ nie możemy użyć O (n), nie możemy sprawdzić całego wejścia. W rzeczywistości nie możemy nawet sprawdzić długości danych wejściowych, ponieważ byłoby to O (log n). Zatem jako pierwszy parametr potrzebujemy reprezentacji długości reszty danych wejściowych, na przykład c, tak aby Ackermann (c) był długością danych wejściowych. Ponieważ nie jest to również odpowiednie, jako pierwszą wartość w naszym danych wejściowych wymagamy parametru c, tak aby bb (c) był mniej więcej długości wejścia, gdzie bb jest funkcją bobra zajętego. Ta funkcja jest niepoprawna, ale bb (c) z pewnością istnieje. Następnie algorytm wygląda następująco:
Algorytm ma na celu sprawdzenie, czy jeśli c jest odwrotnością bb, to wtedy długość wejściowa jest większa niż bb (c).
Jeśli istnieje funkcja obliczalna, która rośnie szybciej niż funkcja Ackermanna, myślę, że możemy użyć jej odwrotności do stworzenia algorytmu, który odpowie na twoje pytanie na dowolnym wejściu.
źródło