Komentarz Emila Jerabka jest miłym podsumowaniem, ale chciałem zwrócić uwagę, że istnieją inne klasy z jaśniejszymi definicjami, które wychwytują mniej więcej tę samą koncepcję i wyjaśniają związek między tymi wszystkimi rzeczami.
[Ostrzeżenie: chociaż wydaje mi się, że mam odpowiednie definicje, niektóre z poniższych rzeczy odzwierciedlają moje osobiste preferencje - starałem się wyjaśnić, gdzie to było.]
W świecie deterministycznym klasa funkcji jest tylko zbiorem funkcji (w zwykłym matematycznym znaczeniu słowa „funkcja”, czyli mapa ). Czasami chcemy zezwolić na „funkcje częściowe”, których dane wyjściowe są „niezdefiniowane” dla niektórych danych wejściowych. (Odpowiednio funkcje zdefiniowane w podzbiorze Σ ∗ zamiast w całości).Σ∗→Σ∗Σ∗
Niestety, istnieją dwa różne definicje dla pływających wokół, io ile mogę powiedzieć, że nie są równoważne (choć są one „moralnie” odpowiednik).FP
- (definicja 1) to klasa funkcji, które można obliczać w czasie wielomianowym. Ilekroć widzisz F P, a nie w kontekście, w którym ludzie mówią o F N P , T F N P , to jest to definicja, którą zakładam.FPFPFNP,TFNP
W niedeterministycznym świecie sprawy stają się trochę zabawne. Tam wygodnie jest zezwolić na „częściowe, wielowartościowe funkcje”. Naturalne byłoby również nazwanie takiej rzeczy relacją binarną , czyli podzbiorem . Ale z punktu widzenia złożoności często filozoficznie i mentalnie przydatne jest myślenie o tych rzeczach jako o „funkcjach niedeterministycznych”. Myślę, że wiele z tych definicji zostało wyjaśnionych przez następujące klasy (których definicje są całkowicie znormalizowane, jeśli nie bardzo dobrze znane):Σ∗×Σ∗
NPMVxxx{(x,y):y is output by some branch of the computation on input x}
NPMVtNPMVx
NPSVNPMVΣ∗
NPSVtNPSVΣ∗→Σ∗NPSVt=FPNP∩coNP
NPMV⊈NPSVNPSVNPMV⊆cfgxgffsą zawsze podzbiorem danych wyjściowych . Właściwym pytaniem jest to czy każdy „funkcja” ma wyrafinowania. Jeśli tak, piszemy .gNPMVNPSVNPMV⊆cNPSV
- PF (nieco mniej standardowy) to klasa funkcji (potencjalnie częściowych) obliczalna w czasie wielozakresowym. Oznacza to, że funkcja ( ) jest , jeżeli jest poli czasie deterministyczny maszyny tak, że na wejściach wyjścia maszynowe , a na wejściach maszyna nie generuje danych wyjściowych (/ odrzuca / mówi „nie” / jakkolwiek chcesz to sformułować).f:D→Σ∗D⊆Σ∗PFx∈Df(x)x∉D
FNP to klasa „problemów funkcji” (a nie klasa funkcji). Nazwałbym też „klasą relacyjną”, ale tak naprawdę, niezależnie od tego, jakich słów użyjesz do jej opisania, musisz się później wyjaśnić, dlatego nie jestem szczególnie stronniczy w tej definicji. Z dowolną relacją binarną wiąże się „problem funkcji”. Co to jest problem z funkcją? Nie mam jasnej definicji matematycznej tak, jak robię to dla języka / funkcji / relacji; jest to raczej zdefiniowane przez to, co jest poprawnym rozwiązaniem: poprawnym rozwiązaniem problemu funkcji związanego z jest dowolna (potencjalnie częściowa) funkcja taka, że jeśliFNPR⊆Σ∗×Σ∗Rf(∃y)[R(x,y)]f generuje dowolne takie , a w przeciwnym razie nie generuje żadnych wyników. to klasa problemów funkcji związanych ze stosunkami takich że (gdy jest uważany za język par) i jest zrównoważony p. Tak więc nie jest klasą funkcji ani klasą języków, ale klasą „problemów funkcji”, w których „problem” jest tutaj zdefiniowany z grubsza pod względem tego, co oznacza jego rozwiązanie.yfFNPRR∈PFNP
TFNP to klasa problemów funkcji w - zdefiniowana przez relację jak powyżej - takie jest całkowite, w tym sensie, że dla każdego istnieje takie, że .FNPRRxyR(x,y)
Aby nie musieć pisać rzeczy typu „Jeśli każdy funkcja (odpowiednio. ) problem ma rozwiązanie w (odpowiednio. zgodnie z powyższym definicja), a następnie ... ”w tym kontekście stosuje się definicję 2 z , czyli:FNPTFNPPFFPFP
- FP (definicja 2) to klasa problemów funkcji w które mają rozwiązanie wielogodzinne. Można założyć, że rozwiązanie (= funkcja) jest tutaj całkowite, wybierając specjalny ciąg który nie jest prawidłowy dla dowolnego , i posiadając funkcję wyjściową gdy inaczej nie byłoby prawidłowego . (W razie potrzeby, możemy zmodyfikować relację przez poprzedzenie każdego z 1, a następnie podjąć się ciąg 0, to nie zmienia niczego związanego złożoności).FNPy0yxy0yRyy0
Oto jak te różne definicje odnoszą się do siebie, (definicja 2, którą należy przyjąć, ponieważ jest w kontekście, w którym jest porównywana z ) jest równoważna do . (def 2) jest równoważne (def 1).FNP⊆FPFNPNPMV⊆cPFTFNP⊆FPNPMVt⊆cFP