Jakie są nietrywialne problemy, o których wiemy, że obecny algorytm jest asymptotycznie optymalny? (Do maszyn Turinga)
Jak to udowodniono?
Jakie są nietrywialne problemy, o których wiemy, że obecny algorytm jest asymptotycznie optymalny? (Do maszyn Turinga)
Jak to udowodniono?
Odpowiedzi:
Każdy algorytm, który wymaga czasu liniowego i musi odczytać całe dane wejściowe, musi być optymalny asymptotycznie. Podobnie, jak komentuje Raphael, optymalny jest każdy algorytm, którego środowisko wykonawcze jest tego samego rzędu co wielkość wyjściowa.
Jeśli rozważaną miarą złożoności jest złożoność zapytań, tzn. Ile razy maszyna musi spojrzeć na dane wejściowe w celu rozwiązania konkretnego problemu, istnieje wiele problemów, dla których mamy optymalne algorytmy. Powodem tego jest to, że dolne granice złożoności zapytań są łatwiejsze do osiągnięcia niż dolne granice złożoności czasowej lub przestrzennej, dzięki niektórym popularnym technikom, w tym metodzie przeciwnika .
Minusem jest jednak to, że ta miara złożoności jest prawie wyjątkowo wykorzystywana w przetwarzaniu informacji kwantowej, ponieważ zapewnia łatwy sposób wykazania luki między kwantową a klasyczną mocą obliczeniową. Najbardziej znanym algorytmem kwantowym w tym układzie jest algorytm Grovera . Biorąc pod uwagę ciąg binarny dla którego istnieje pojedyncze i takie, że x i = n , musisz znaleźć i . Klasycznie (bez komputera kwantowego) najbardziej trywialny algorytm jest optymalny: musisz znaleźć ten ciąg średnio n / 2 razy, aby znaleźć . Grover podał algorytm kwantowy, który robi to w O ( √zapytania do ciągu. Zostało to również udowodnione jako optymalne.
Sortowanie porównawcze przy użyciu porównań (sortowanie scalające, aby wymienić jedno) jest optymalne, dowód polega na obliczeniu wysokości drzewa za pomocą n ! pozostawia.
Zakładając, że Unique Games Conjecture, Khot, Kindler, Mossel i O'donnell pokazali, że NP-zupełne jest przybliżenie Max-Cut lepiej niż algorytm Goemansa i Williamsona. Tak więc w tym sensie G&W jest optymalna (zakładając również, że ).
Niektóre rozproszone algorytmy mogą być optymalne w odniesieniu do niektórych warunków (np. Odsetek procesorów przeciwnych), ale skoro wspomniałeś o maszynach Turinga, to chyba nie tego rodzaju przykładów szukasz.
Załóżmy, że dane wejściowe są podane i poprosił aby zdecydować, czy maszyna RAM M kończy się wejściowym x po t krokach. Według twierdzenia o hierarchii czasowej optymalnym algorytmem do podjęcia takiej decyzji jest symulacja wykonania M ( x ) dla t kroków, które można wykonać w czasie .
(Uwaga: w przypadku maszyn Turinga symulacja wykonania wymaga wykonania kroków O ( t log t ) ; znamy tylko dolną granicę Ω ( t ) . Nie jest to zatem optymalne w przypadku maszyn Turinga).
Istnieje kilka innych problemów, które zawierają wersję problemu zatrzymania jako podprzykład. Na przykład podjęcie decyzji, czy zdanie jest konsekwencją WS1S, wymaga czasu 2 ↑ ↑ O ( | θ | ) i jest to optymalne.
Jeśli pozwalasz na problemy z dynamiczną strukturą danych, znamy niektóre algorytmy superliniowe optymalne pod względem czasu. Jest tak w modelu sondy komórkowej, który jest tak silny jak słowo RAM, tzn. Nie jest to model ograniczony, taki jak algebraiczne drzewa decyzyjne.
You can easily support both operations in time with a data structure based on an augmented binary tree with at the leaves. Patrascu and Demaine showed this is optimal: for any data structure there is a sequence of additions and prefix sum queries that must take time total.
Another example is union find: start with a partition of into singletons, and keep a data structure that allows the two operations:
Tarjan showed that the classical disjoint set forest data structure with the union by rank and path compression heuristics takes time per operation, where is the inverse Ackermann function. Fredman and Saks showed this is optimal: for any data structure there exists a sequence of union and find operations which must take time.
istnieją dwa dość podobne algorytmy wyszukiwania, które [rozumiem, że] są optymalne w oparciu o określone ograniczenia dotyczące kolejności / dystrybucji danych wejściowych. jednak prezentacje algorytmów zwykle nie podkreślają tej optymalności.
złoty odcinek poszukiwanie maksimum lub minimum (ekstremum) funkcji unimodalnej. zakłada, że wejście jest funkcją unimodalną. znajduje to średnio w czasie logarytmicznym. o ile pamiętam, może być dowód optymalności w książce Struktura i interpretacja programów komputerowych autorstwa abelsona i sussmana.
wyszukiwanie binarne znajduje średnio punkt w logarytmicznym czasie na posortowanej liście, ale wymaga sortowania danych wejściowych.
cytuję wikipedię powyżej, ale nie ma ona dowodów na to, że są one optymalne, może publiczność może znaleźć inne odniesienia, które dowodzą optymalności.
Many sublinear time algorithms have upper bounds matching their lower bounds.