Czy występują problemy, których najbardziej znany algorytm ma czas działania


18

Nigdy wcześniej nie widziałem algorytmu z logiem w mianowniku i zastanawiam się, czy w tym formularzu są jakieś przydatne algorytmy?

Rozumiem wiele rzeczy, które mogą powodować mnożenie współczynnika logu w czasie wykonywania, np. Algorytmy sortowania lub oparte na drzewach, ale co może powodować dzielenie przez współczynnik log?


24
Mergesort, przy . f(n)=nlog2n
Jeffε

12
@ Jɛ ff E snarky Mcsnarkster
Suresh Venkat

5
Sortowanie Radix - tak naprawdę jest to . Chodzi o to, że ze względu na losowy dostęp możesz zapisać współczynnik logarytmiczny ....O(nlogn/logn)
Sariel Har-Peled

Zastanawiam się, czy twierdzenie o hierarchii DTIME może być użyte jako argument na rzecz istnienia takich algorytmów, biorąc pod uwagę, że można wykonać podobną sztuczkę oszczędzania miejsca w modelu RAM.
chazisop

Odpowiedzi:


41

Zwykła odpowiedź na „co może spowodować podział przez log?” to połączenie dwóch rzeczy:

  1. model obliczeń, w którym dozwolone są operacje arytmetyczne o stałym czasie na liczbach całkowitych wielkości słowa, ale w których chcesz zachować ostrożność co do długości słów, więc przyjmij O(logn) bitów na słowo (ponieważ dowolne mniej niż to a nawet nie można było zająć się całą pamięcią, a także dlatego, że algorytmy korzystające z wyszukiwania tabel zajęłyby zbyt dużo czasu na ustawienie tabel, gdyby słowa były dłuższe), i
  2. algorytm, który kompresuje dane poprzez upakowanie bitów na słowa, a następnie działa na nich.

Myślę, że istnieje wiele przykładów, ale klasycznym przykładem jest algorytm Czterech Rosjan dla najdłuższych typowych podsekwencji itp. W rzeczywistości kończy się na , ponieważ wykorzystuje ideę pakowania bitów, ale następnie oszczędza sekundę Współczynnik logowania przy użyciu innego pomysłu: zastąpienie bloków operacji bitowych O ( log 2 n ) pojedynczym przeglądaniem tabeli.O(n2/log2n)O(log2n)


35

Kostka Rubika jest bardzo naturalnym (i dla mnie nieoczekiwanym) przykładem. n×n×n kostki wymagają Θ(n2)/logn) kroki w celu rozwiązania. (Zauważ, że jest to notacja theta, więc jest to ciasna górna i dolna granica).

Jest to pokazane w tym artykule [1].

Warto wspomnieć, że złożoność rozwiązywania określonych przypadków kostki Rubika jest otwarta, ale przypuszcza się, że jest NP-twarda (omówione tutaj na przykład) NP twarda [2]. Θ(n2)/logn) algorytm zapewnia rozwiązanie, a to zapewnia, że wszystkie roztwory są asymptotycznie optymalny, ale może nie rozwiązywać konkretne przykłady optymalnie. Twoja definicja przydatności może tutaj obowiązywać, ale nie, ponieważ kostki Rubika na ogół nie są rozwiązywane za pomocą tego algorytmu (algorytm Kociemby jest ogólnie stosowany w przypadku małych kostek, ponieważ daje szybkie, optymalne rozwiązania w praktyce).

[1] Erik D. Demaine, Martin L. Demaine, Sarah Eisenstat, Anna Lubiw i Andrew Winslow. Algorytmy rozwiązywania kostek Rubika. Materiały z 19. dorocznego europejskiego sympozjum na temat algorytmów (ESA 2011), 5–9 września 2011 r., Strony 689–700

[2] Erik D. Demaine, Sarah Eisenstat i Michaił Rudoy. Optymalne rozwiązanie Kostki Rubika jest zakończone NP. Materiały z 35. międzynarodowego sympozjum na temat teoretycznych aspektów informatyki (STACS 2018), 28 lutego – 3 marca 2018 r., Strony 24: 1-24: 13.


16

Przykładem pokazującym się w mianowniku bez sztuczek upakowania bitów jest niedawny artykuł Agarwal, Ben Avraham, Kaplan i Sharir na temat obliczania dyskretnej odległości Frécheta między dwoma łańcuchami wielokątnymi w czasie O ( n 2 log log n / log n ) . Chociaż nie znam szczegółów algorytmu, jedną ogólną sztuczką jest podzielenie danych wejściowych na względnie małe kawałki, a następnie sprytne połączenie odpowiedzi (oczywiście brzmi to jak dzielenie i podbijanie, ale nie dostajesz log n w mianowniku z kilkoma sprytnymi sztuczkami)lognO(n2loglogn/logn)


5
Jest to bardziej złożony przykład techniki „czterech Rosjan” opisanej w odpowiedzi Davida.
Jeffε

13

Nie do końca to, o co prosiłeś, ale sytuacją „na wolności”, w której w mianowniku pojawia się współczynnik logarytmiczny, jest artykuł „ Kamyki i programy rozgałęziające do oceny drzew” Stephen Cook, Pierre McKenzie, Dustin Wehr, Mark Braverman i ” i Rahul Santhanam.

Problem oceny drzewo (TEP) wynosi: otrzymuje -ary drzewo uwagami z wartościami w { 1 , ... , k } na liście i funkcji { 1 , ... , k } d{ 1 , ... , k } na węzłach wewnętrznych oceń drzewo. Tutaj każdy węzeł wewnętrzny pobiera wartość swojej funkcji z adnotacjami do wartości swoich potomków. Jest to prosty problem, a chodzi o to, aby pokazać, że nie można go rozwiązać w przestrzeni logarytmicznej (gdy wysokość drzewa jest częścią danych wejściowych). W tym celu jesteśmy zainteresowani rozmiarem programów rozgałęziających rozwiązujących TEP.d{1,,k}{1,,k}d{1,,k}

W rozdziale 5 przedstawiono ścisłe ograniczenia dla drzew o wysokości 3, zarówno dla TEP, jak i dla pokrewnego problemu BEP, w którym dane wyjściowe są zwinięte do w dowolny arbitralny sposób. W przypadku TEP granica wynosi Θ ( k 2 d - 1 ) , podczas gdy dla BEP granica wynosi Θ ( k 2 d - 1 / log k ) , tzn. Uzyskuje się zapis log k .{0,1}Θ(k2d1)Θ(k2d1/logk)logk


12

Mimo że nie chodzi o środowisko uruchomieniowe, pomyślałem, że warto wspomnieć o klasycznym wyniku Hopcroft, Paul i Valiant: [1], ponieważ wciąż jest w duch „co może spowodować, że uratujeszTIME[t]SPACE[t/logt] współczynnik log”.

To daje wiele przykładów problemów, których najlepiej znana górna granica złożoności przestrzeni ma log w mianowniku. (W zależności od twojego punktu widzenia, uważam, że albo czyni ten przykład bardzo interesującym - co za niesamowite twierdzenie! - albo bardzo nieciekawym - prawdopodobnie nie jest „faktycznie przydatny”.)

[1] Hopcroft, Paul i Valiant. Na czas kontra przestrzeń . J. ACM 24 (2): 332–337, 1977.



8

The best known algorithm for computing the edit (a.k.a. Levenshtein) distance between two strings of length n takes O((n/logn)2) time:

William J. Masek, Mike Paterson: A Faster Algorithm Computing String Edit Distances. J. Comput. Syst. Sci. 20(1): 18-31 (1980).


4
Znowu, jak sądzę, jest to wariant algorytmu Czterech Rosjan.
David Eppstein,

7

Θ(n/logn) pojawia się jako poprawna granica problemu rozpatrywanego przez Grega i Paula Valianta (brak połączenia z trikami bitowymi):

Gregory Valiant i Paul Valiant, Moc estymatorów liniowych, 2011. W 52. dorocznym sympozjum IEEE na temat podstaw informatyki, FOCS 2011.


7

Oto kolejny przykład ścisłego powiązania mającego współczynnik logarytmiczny. (To jest twierdzenie 6.17 z Boolean Function Complexity: Advances and Frontiers autorstwa Stasys Jukna.)

Rozmiar formuły (ponad pełną podstawę binarną lub podstawę De Morgana) problemu odróżnialności elementu wynosi Θ(n2/logn), where n is the number of bits in the input.

The reason the log factor appears in the denominator is that representing m integers between 1 and poly(m) requires n:=O(mlogm) bits in total, since each integer requires O(logm) bits. So an upper bound that looks natural in terms of m, like Θ(m2logm), becomes Θ(n2/logn) when expressed in terms of n, where n is the number of bits in the input.


2

Finding the prime factors of n by trial division when the list of primes is already given. There are θ(nlog(n)) primes less than n so if these primes are given to you, then trial division of n by each of them takes θ(nlog(n)) time (assuming division is a constant-time operation)


3
In fact, it's enough to look at the roughly 2n/logn primes below n. But there are far better algorithms out there.
Yuval Filmus

-2

somewhat similar to JG's answer & "thinking outside the box", this seems like a related/relevant/apropos/fundamental negative result. based on diagonalization with a universal TM, there exists a O(f(n)) DTIME language that cannot run in O(f(n)logf(n)) DTIME, due to the time hierarchy theorem. so this applies to a linear DTIME algorithm that exists, f(n)=n, that runs impossibly in O(nlogn) DTIME.


2
on a TM, DTIME(n/logn) is trivial as it doesn't allow the machine to read the whole input. also, the DTIME notation makes the big-oh notation unnecessary.
Sasho Nikolov

?? there is still theory for sublinear time algorithms...
vzn

3
sublinear algorithms make sense in oracle & random access models. DTIME is standardly defined w.r.t. multitape TM, and that's the definition used in the hierarchy theorem for DTIME.
Sasho Nikolov

1
No, @SashoNikolov, DTIME(n/logn) is not trivial. Compare "Are the first n/lgn bits of the input all zeros?" with "Do the first n/lgn bits of the input encode a satisfiable boolean formula?"
Jeffε

5
@JɛffE: You cannot test “Are the first n/lgn bits of the input all zeros?” in O(n/logn) time on a TM, since you do not know what n is without first reading the whole input, which takes time n. It is a standard fact that if f(n)<n, then DTIME(f(n)) contains only languages the membership in which can be determined from the first k bits of input for a constant k (and therefore are computable in constant time).
Emil Jeřábek supports Monica
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.