NC (złożoność) - NC (complexity)

Nierozwiązany problem w informatyce :

W teorii złożoności obliczeniowej klasa NC (od „Klasy Nicka”) jest zbiorem problemów decyzyjnych rozstrzyganych w czasie polilogarytmicznym na komputerze równoległym z wielomianową liczbą procesorów. Innymi słowy, problem występuje w NC, jeśli istnieją stałe c i k takie, że można je rozwiązać w czasie O (log c  n ) przy użyciu procesorów równoległych O ( n k ) . Stephen Cook ukuł nazwę „klasa Nicka” na cześć Nicka Pippengera , który przeprowadził rozległe badania nad obwodami o głębokości polilogarytmicznej i wielkości wielomianu.

Tak jak klasę P można traktować jako problemy wykonalne ( teza Cobhama ), tak NC można traktować jako problemy, które można efektywnie rozwiązać na komputerze równoległym. NC jest podzbiorem P, ponieważ równoległe obliczenia polilogarytmiczne mogą być symulowane przez sekwencyjne obliczenia wielomianowe. Nie wiadomo, czy NC = P , ale większość badaczy podejrzewa, że ​​jest to fałszywe, co oznacza, że ​​prawdopodobnie istnieją pewne problemy, które są „z natury sekwencyjne” i nie można ich znacząco przyspieszyć za pomocą równoległości. Tak jak klasa NP-zupełna może być uważana za „prawdopodobnie niewykonalną”, tak klasa P-zupełna , przy użyciu redukcji NC , może być uważana za „prawdopodobnie niemożliwa do zrównoleglenia” lub „prawdopodobnie z natury sekwencyjna”.

Komputer równoległy w definicji można założyć jako równoległą maszynę o dostępie swobodnym ( PRAM ). Jest to komputer równoległy z centralną pulą pamięci, a każdy procesor może uzyskać dostęp do dowolnego fragmentu pamięci w stałym czasie. Na definicję NC nie ma wpływu wybór sposobu, w jaki PRAM obsługuje jednoczesny dostęp do pojedynczego bitu przez więcej niż jeden procesor. Może to być CRCW, CREW lub EREW. Zobacz PRAM dla opisów tych modeli.

Równoważnie, NC można zdefiniować jako te problemy decyzyjne, które są rozstrzygane przez jednorodny obwód boolowski (który można obliczyć na podstawie długości wejścia, dla NC przypuszczamy, że możemy obliczyć obwód boolowski o rozmiarze n w przestrzeni logarytmicznej w n ) za pomocą polilogarytmicznego głębokość i wielomianową liczbę bramek z maksymalnym rozłożeniem równym 2.

RNC to klasa rozszerzająca NC o dostęp do losowości.

Problemy w NC

Podobnie jak w przypadku P , przez lekkie nadużycie języka można sklasyfikować problemy funkcji i problemy wyszukiwania jako występujące w NC . Wiadomo, że NC zawiera wiele problemów, w tym:

Często algorytmy dla tych problemów musiały być wymyślone oddzielnie i nie mogły być naiwnie zaadaptowane ze znanych algorytmów – eliminacja Gaussa i algorytm euklidesowy opierają się na operacjach wykonywanych po kolei. Można skontrastować sumator przenoszenia tętnienia z sumatorem przenoszenia z wyprzedzeniem .

Hierarchia NC

NC i jest klasą problemów decyzyjnych rozwiązywalnych przez jednorodne układy logiczne z wielomianową liczbą bramek co najwyżej dwóch wejść i głębokości O (log i  n ) lub klasą problemów decyzyjnych rozwiązywalnych w czasie O (log i  n ) na komputer równoległy z wielomianową liczbą procesorów. Oczywiście mamy

który tworzy hierarchię NC .

Możemy powiązać klasy NC z klasami przestrzeni L i NL oraz AC .

Klasy NC są powiązane z klasami AC, które są definiowane podobnie, ale z bramami o nieograniczonym wachlarzu. Dla każdego ja mamy

Bezpośrednią konsekwencją tego jest to, że NC = AC . Wiadomo, że oba wtrącenia są ścisłe dla i = 0.

Podobnie mamy, że NC jest równoważne z problemami, które można rozwiązać na przemiennej maszynie Turinga, ograniczonym do co najwyżej dwóch opcji na każdym kroku z przestrzenią O (log n ) i alternatywami.

Otwarty problem: czy NC jest prawidłowe?

Jednym z głównych otwartych pytań w teorii złożoności jest to, czy każde ograniczenie w hierarchii NC jest właściwe. Papadimitriou zaobserwował, że jeśli NC i = NC i +1 dla niektórych i , to NC i = NC j dla wszystkich j  ≥  i , aw rezultacie NC i = NC . Ta obserwacja jest znana jako NC – upadek hierarchii, ponieważ nawet pojedyncza równość w łańcuchu powstrzymywania

oznacza, że ​​cała hierarchia NC „zapada się” do pewnego poziomu i . Tak więc istnieją 2 możliwości:

Powszechnie uważa się, że (1) tak jest, chociaż nie odkryto jeszcze żadnego dowodu na prawdziwość któregokolwiek ze stwierdzeń.

NC 0

Specjalna klasa NC 0 działa tylko na stałej długości bitów wejściowych. Jest zatem opisana jako klasa funkcji definiowalnych przez jednorodne obwody logiczne o stałej głębokości i ograniczonym wachlarzu.

Twierdzenie Barringtona

Program rozgałęziający z n zmiennymi o szerokości k i długości m składa się z sekwencji m instrukcji. Każda z instrukcji jest krotką ( i , p , q ), gdzie i jest indeksem zmiennej do sprawdzenia (1 ≤ in ), a p i q są funkcjami od {1, 2, ..., k } do {1, 2, ..., k }. Liczby 1, 2, ..., k nazywane są stanami programu rozgałęziającego. Program początkowo startuje w stanie 1, a każda instrukcja ( i , p , q ) zmienia stan z x na p ( x ) lub q ( x ), w zależności od tego, czy i- ta zmienna ma wartość 0 czy 1. Funkcja mapująca dane wejściowe do stanu końcowego programu nazywamy wydajnością programu (dokładniej, wydajność na wejściu to funkcja mapująca dowolny stan początkowy na odpowiadający mu stan końcowy). Program akceptuje zestaw wartości zmiennych, gdy istnieje taki zestaw funkcji , że sekwencja zmiennej jest w A dokładnie wtedy, gdy jej wydajność jest w F .

Rodzina programów rozgałęziających składa się z programu rozgałęziającego z n zmiennymi na każde n . Akceptuje język, gdy program ze zmienną n akceptuje język ograniczony do długości n wejść.

Łatwo pokazać, że każdy język L na {0,1} może być rozpoznany przez rodzinę programów rozgałęziających o szerokości 5 i wykładniczej długości lub przez rodzinę wykładniczą szerokości i długości liniowej.

Każdy język regularny na {0,1} może być rozpoznany przez rodzinę programów rozgałęziających o stałej szerokości i liniowej liczbie instrukcji (ponieważ DFA można przekonwertować na program rozgałęziający). BWBP oznacza klasę języków rozpoznawalnych przez rodzinę programów rozgałęziających się o ograniczonej szerokości i długości wielomianu.

Twierdzenie Barringtona mówi, że BWBP jest dokładnie niejednorodnym NC 1 . Dowód wykorzystuje nierozwiązywalność symetrycznej grupy S 5 .

Twierdzenie jest dość zaskakujące. Na przykład implikuje, że funkcja większości może być obliczona przez rodzinę programów rozgałęziających się o stałej szerokości i rozmiarze wielomianu, podczas gdy intuicja może sugerować, że aby osiągnąć rozmiar wielomianu, potrzebna jest liniowa liczba stanów.

Dowód twierdzenia Barringtona

Program rozgałęziający o stałej szerokości i rozmiarze wielomianu można łatwo przekształcić (poprzez dziel i zwyciężaj) na obwód w NC 1 .

I odwrotnie, załóżmy, że podany jest obwód w NC 1 . Bez utraty ogólności załóżmy, że używa tylko bramek AND i NOT.

Lemat 1  —  Jeśli istnieje program rozgałęziający, który czasami działa jako permutacja P, a czasami jako permutacja Q , przez pomnożenie permutacji w pierwszej instrukcji przez α , a w ostatniej instrukcji przez β , możemy wykonać obwód o tej samej długości, który zachowuje się odpowiednio jak β P α lub β Q α .

Dowód  —

Wywołaj program rozgałęziający α-obliczający obwód C, jeśli działa on jako identyczność, gdy wyjście C ma wartość 0, i jako α, gdy wyjście C ma wartość 1.

W konsekwencji Lematu 1 i faktu, że wszystkie cykle o długości 5 są sprzężone , dla dowolnych dwóch 5-cykli α , β , jeśli istnieje program rozgałęziający α-obliczający obwód C , to istnieje program rozgałęziający β-obliczający obwód C o tej samej długości.

Lemat 2  —  Istnieje 5 cykli γ , δ takie, że ich komutator ε = γδγ -1 δ -1 jest 5-cyklem. Na przykład γ = (1 2 3 4 5), δ = (1 3 5 4 2) dając ε = (1 3 2 5 4).

Dowód  —

Teraz udowodnimy twierdzenie Barringtona przez indukcję:

Załóżmy, że mamy do obiegu C , które trwa wejścia x 1 , ..., x n i zakładamy, że wszystkie układy podrzędne D z C i 5 cykli a, istnieje rozgałęzienia programów obliczeniowych a- D . Pokażemy, że dla wszystkich 5-cykli α istnieje program rozgałęziający α-obliczenia C .

  • Jeśli obwód C po prostu wyprowadza jakiś bit wejściowy x i , potrzebny nam program rozgałęziający ma tylko jedną instrukcję: sprawdzanie wartości x i (0 lub 1) i wyprowadzanie tożsamości lub α (odpowiednio).
  • Jeśli obwód C wyjścia Kontakty jakiegoś innego obwodu A utworzyć rozgałęzienia programów alfa -1 -computing A i następnie mnoży wyjście z programu przez a. Przez lematu 1, otrzymujemy rozgałęzień program A wyprowadzanie tożsamości lub a, czyli a -computing ¬ A = C .
  • Jeśli obwód C wyprowadza AB dla obwodów A i B , dołącz do programów rozgałęziających, które γ -oblicz A , δ -oblicz B , γ −1 -oblicz A , i δ −1 -oblicz B dla wyboru 5 cykli γ i δ takie, że ich komutator ε = γδγ -1 δ -1 jest również 5-cyklem. (Istnienie takich elementów zostało ustalone w Lemacie 2.) Jeśli jeden lub oba z obwodów wyjdą 0, to program wynikowy będzie tożsamością z powodu anulowania; jeśli oba obwody wyprowadzą 1, wynikowy program wygeneruje komutator ε . Innymi słowy, otrzymujemy program ε- obliczający AB . Ponieważ ε i α są dwoma 5-cyklami, są sprzężone, a zatem istnieje program α -obliczający AB według Lematu 1.

Zakładając, że podukłady mają programy rozgałęziające, tak że wykonują obliczenia α dla wszystkich 5-cykli αS 5 , pokazaliśmy, że C również ma tę właściwość, zgodnie z wymaganiami.

Rozmiar programu rozgałęzienia wynosi co najwyżej 4 d , gdzie d jest głębokością obwodu. Jeśli obwód ma głębokość logarytmiczną, program rozgałęziający ma długość wielomianu.

Uwagi

Bibliografia