DAA - Złożoność kosmiczna

W tym rozdziale omówimy złożoność problemów obliczeniowych w odniesieniu do ilości miejsca wymaganego przez algorytm.

Złożoność przestrzeni ma wiele wspólnych cech ze złożonością czasową i służy jako dalszy sposób klasyfikowania problemów według ich trudności obliczeniowych.

Co to jest złożoność przestrzeni?

Złożoność przestrzeni to funkcja opisująca ilość pamięci (przestrzeni), jaką zajmuje algorytm, w kategoriach ilości danych wejściowych do algorytmu.

Często o tym mówimy extra memorypotrzebne, nie licząc pamięci potrzebnej do przechowywania samego wejścia. Ponownie, do pomiaru tego używamy jednostek naturalnych (ale o stałej długości).

Możemy używać bajtów, ale łatwiej jest użyć, powiedzmy, liczby użytych liczb całkowitych, liczby struktur o stałej wielkości itp.

Ostatecznie funkcja, którą wymyślimy, będzie niezależna od rzeczywistej liczby bajtów potrzebnych do reprezentacji jednostki.

Złożoność przestrzeni jest czasami pomijana, ponieważ wykorzystywana przestrzeń jest minimalna i / lub oczywista, jednak czasami staje się tak ważna, jak złożoność czasowa

Definicja

Pozwolić M być deterministą Turing machine (TM)który zatrzymuje się na wszystkich wejściach. Złożoność przestrzeniM jest funkcją $ f \ colon N \ rightarrow N $, gdzie f(n) to maksymalna liczba komórek taśmy i M skanuje dowolne dane wejściowe o długości M. Jeśli złożoność przestrzeniM jest f(n), możemy to powiedzieć M działa w kosmosie f(n).

Szacujemy złożoność przestrzenną maszyny Turinga za pomocą notacji asymptotycznej.

Niech $ f \ colon N \ rightarrow R ^ + $ będzie funkcją. Klasy złożoności przestrzeni można zdefiniować w następujący sposób -

SPACE = {L | L is a language decided by an O(f(n)) space deterministic TM}

SPACE = {L | L is a language decided by an O(f(n)) space non-deterministic TM}

PSPACE jest klasą języków, które są rozstrzygalne w przestrzeni wielomianowej na deterministycznej maszynie Turinga.

Innymi słowy, PSPACE = Uk SPACE (nk)

Twierdzenie Savitcha

Jednym z najwcześniejszych twierdzeń związanych ze złożonością przestrzeni jest twierdzenie Savitcha. Zgodnie z tym twierdzeniem maszyna deterministyczna może symulować maszyny niedeterministyczne, wykorzystując niewielką ilość miejsca.

Wydaje się, że w przypadku złożoności czasowej taka symulacja wymaga wykładniczego wydłużenia czasu. W przypadku złożoności przestrzeni to twierdzenie pokazuje, że każda niedeterministyczna maszyna Turinga, która używaf(n) przestrzeń można przekształcić w deterministyczną pamięć TM, która używa f2(n) przestrzeń.

Stąd twierdzenie Savitcha stwierdza, że ​​dla dowolnej funkcji $ f \ colon N \ rightarrow R ^ + $, gdzie $ f (n) \ geqslant n $

NSPACE(f(n)) ⊆ SPACE(f(n))

Relacje między klasami złożoności

Poniższy diagram przedstawia relacje między różnymi klasami złożoności.

Do tej pory nie omawialiśmy klas P i NP w tym samouczku. Zostaną one omówione później.