Klasa złożoności odpowiadająca sortowaniu

14

Dwie części TCS to algorytmy i złożoność. Upraszczając powiem, że algorytmy to badanie górnych granic, pokazujące, że możesz coś zrobić (przy danych ograniczonych zasobach), a złożoność polega na pokazaniu, że nie możesz tego zrobić bez minimalnych zasobów.

Tak często problem algorytmiczny pojawia się w modelu decyzyjnym, aby umieścić go w klasie złożoności.

Ale zawsze mi przeszkadzało, że niektóre elementarne algorytmy nigdy nie są wprost wymienione jako należące do określonej klasy. Jednym z przykładów jest sortowanie (porównanie). Staram się, jak mogę, odpowiednia klasa wydaje się po prostu zbyt słaba (tak naprawdę, czy to po prostu sprawdzanie w dzienniku, że wynik jest sortowany? To po prostu wydaje się zbyt słabe, czy też nie mam poprawnej wersji decyzji).

Jaka jest najlepsza / najbardziej odpowiednia / najbardziej użyteczna klasa złożoności, w której znajduje się sortowanie porównawcze?

Mitch
źródło

Odpowiedzi:

17

Sortowania problemem jest faktycznie kompletne na TC0 (w C 0 -redukcja). Standardowym źródłem tego jest Rozdział 1.4.3 książki Vollmera .AC0

Zauważ, że jest klasą problemów decyzyjnych, ale zwykle myślimy o sortowaniu jako problemie funkcji, tzn. Chcemy wypisywać liczby, powiedzmy, w kolejności nie malejącej. Możemy jednak zdefiniować sortowanie jako problem decyzyjny w następujący sposób:TC0

Biorąc pod uwagę ciąg liczb 1 , ... , n i dwie liczby k , p [ n ] , chcemy zdecydować, czy k jest w pozycji P w kolejności otrzymujemy sortując 1 , ... , n w niemalejącą zamówienie. Należy zauważyć, że w celu uniknięcia niejasności, gdy I = a j , chcemy i poprzedzać się j jeśli I < j .a1,,ank,p[n]akpza1,,zanzaja=zajotzajazajotja<jot

Dai Le
źródło
Doskonałe ... określone jako jaki problem formalnej decyzji?
Mitch
1
Umieszczenie odniesienia w odpowiedzi byłoby podwójnie doskonałe.
Oleksandr Bondarenko
@Mitch i @Okeksandr: Dziękujemy za komentarze! Właśnie przedłużyłem swoją odpowiedź, aby wyjaśnić te kwestie.
Dai Le
To brzmi jak problem decyzyjny dla statystyk zamówień. Czy istnieje powiązany problem, w którym wszystko jest na swoim miejscu? Coś jak podano sekwencję 1 . . . a n i permutacja σ na [ 1 .. n ] decyduje, czy 1 k < j n , a σ k < a σ j . To jest tak trudne jak twoje; czy dla klasy obejmującej jest to trudniejsze czy kompletne? a1...anσ[1..n]1k<jn,aσk<aσj
Mitch
2
@Mitch: Uważam, że sprawdzenie, czy wszystko jest w odpowiednim miejscu, jest w rzeczywistości łatwiejsze niż sortowanie. Intuicja jest to, że można sprawdzić, że σ k < σ j dla wszystkich możliwych par ( a Ď k , σ j ) z k < j równolegle, co uważam, że można to zrobić w A C 0 . W przypadku powyższego problemu związanego z sortowaniem musisz „policzyć”, aby ustalić prawidłową pozycję liczby w porządku liniowym. aσk<aσj(aσk,aσj)k<jAC0
Dai Le
0

Wierzę, że FP jest tym, czego szukasz.

Nicholas Mancuso
źródło
Cóż, raczej szukam odpowiedniej klasy złożoności decyzji niż funkcjonalnej, ale mimo to jestem całkiem pewien, że sortowanie porównawcze nie jest bliskie P-complete (lub FP-complete), więc oczekuję mniejsza klasa, dla której oczekuje się jej ukończenia.
Mitch
Nie wiedziałem, że kompletność była jednym z wymogów twojego pytania. Jako problem decyzyjny (jeśli zignorujesz swoje ograniczenie kompletności), dlaczego P nie byłoby akceptowalne jako odpowiedź? Biorąc pod uwagę DTM, możesz zarówno wyprodukować, jak i zweryfikować certyfikat w czasie wielomianowym.
Nicholas Mancuso,
Biorąc pod uwagę ogólny problem, to, co zwykle chcę wiedzieć, to nie tylko to, że jest to czas wielomianowy, ale najmniejsza klasa, w jakiej mógłby się znaleźć. Chciałbym wiedzieć, czy to jest w LOGCFL, NL, L, AC_0 itp. Kompletność to jeden ze sposobów, w jaki „nie możesz” nic lepszego. Więc nit nie jest wymogiem mojego pytania, ale prawdopodobną odpowiedzią.
Mitch,