A számítási bonyolultság elméletében az NC osztály (az angol Nick's Class szóból ) azon megoldhatósági problémák összessége , amelyek polilogaritmikus időben megoldhatók egy párhuzamos számítógépen , polinomiális számú processzorral. Más szóval, egy probléma akkor tartozik az NC osztályba, ha vannak olyan állandók , amelyek párhuzamos processzorokkal időben megoldhatók . Stephen Cook [1] [2] Nick Pippenger után nevezte el "Nick osztályának" , aki kiterjedt kutatásokat végzett [3] a polilogmélységű és polinomméretű áramkörökről. [négy]
Ahogyan a P osztályt képlékeny problémák osztályának tekinthetjük ( Cobham tézise ), úgy az NC-t is úgy lehet felfogni, mint egy párhuzamos számítógépen hatékonyan megoldható problémák osztályát. [5] Az NC a P részhalmaza, mivel párhuzamos polilog számítások szimulálhatók szekvenciális polinomszámításokkal. Nem ismert, hogy NP = P igaz-e, de a legtöbb tudós úgy véli, hogy nem, ami azt jelenti, hogy valószínűleg vannak olyan alakítható feladatok, amelyek „természetüknél fogva” egymás után következnek, és nem gyorsíthatók fel a párhuzamosság segítségével. Ahogyan az NP-teljes problémák osztályát a "legvalószínűbben megoldhatatlan" problémák osztályának tekinthetjük, úgy a P-teljes problémák osztályát NC-re redukálva úgy tekinthetjük, mint "nagy valószínűséggel nem párhuzamosítható" vagy "valószínűleg szekvenciális természetű".
A definícióban szereplő párhuzamos számítógép párhuzamos véletlen hozzáférésű gépnek tekinthető ( PRAM - az angol parallel, random-access gépből). Ez egy párhuzamos számítógép központi memóriatárral, amelynek bármely processzora állandó időben bármely bithez hozzáfér. Az NC definícióját nem befolyásolja az, hogy a PRAM hogyan éri el ugyanazt a bitet több processzorról egyszerre.
Az NC úgy definiálható , mint a polilogaritmikus mélységű és polinomiális számú kapuval rendelkező elosztott Boole - áramkör által megoldható megoldhatósági problémák halmaza .
Az NC számos feladatot tartalmaz, többek között:
Gyakran ezekre a problémákra az algoritmusokat külön-külön gondolták ki, és nem lehet az ismert algoritmusok naiv adaptációja - a Gauss-módszer és az Euklidész-algoritmus arra a tényre támaszkodik, hogy a műveleteket szekvenciálisan hajtják végre.
Az NC i olyan megoldhatósági problémák halmaza, amelyek polinomiális számú kapuval (legfeljebb két bemenettel) és mélységgel , vagy egy párhuzamos számítógéppel, polinomszámú processzorral időben megoldhatók . Nyilvánvalóan,
mi az NC hierarchia.
Az NC osztályokat az L , NL [6] és AC [7] tárolási osztályokhoz rendelhetjük :
Az NC és AC osztályok azonosak, kivéve az AC osztályhoz tartozó szelepbemenetek korlátlan számát. Mindegyikre az [5] [7] igaz :
Ennek következménye az NC = AC . [8] Ismeretes, hogy mindkét zárvány szigorú a -ra . [5] Hasonlóképpen megkaphatjuk, hogy az NC ekvivalens a változó Turing-gépen megoldott feladatsorral , lépésenként legfeljebb két választási lehetőséggel, O (log n ) memóriával és változtatásokkal. [9]
A számítási komplexitáselmélet egyik nagy nyitott kérdése az , hogy az NC-hierarchia minden beágyazása megfelelő-e. Amint Papadimitriou megjegyezte, ha NC i = NC i +1 igaz néhányra , akkor NC i = NC j mindegyikre , és ennek következtében NC i = NC . Ezt a megfigyelést NC-hierarchia hajtogatásának nevezik, mert még az egymásba ágyazó lánc egyetlen egyenlőségéből is:
ebből következik, hogy a teljes NC -hierarchia valamilyen szintre "összeomlik" . Így két lehetőség lehetséges:
Széles körben elterjedt az a vélemény, hogy az (1) igaz, bár még nem találtak bizonyítékot egyik állítás igazságosságára sem.
A változó, szélesség és hosszúságú elágazó program hosszúságú utasítások sorozatából áll . Minden utasítás egy hármas , ahol az ellenőrizni kívánt változó indexe , és a és a permutációs függvények -tól -ig . A számokat az elágazó program állapotainak nevezzük. A program az 1-es állapotban indul, és minden utasítás állapotát vagy -ra változtatja , attól függően, hogy a -edik változó 0-val vagy 1-gyel egyenlő-e.
Az elágazó programok családja elágazó programokból áll, mindegyikhez változókkal .
Könnyen kimutatható, hogy bármely nyelv felismerhető egy 5-ös szélességű és exponenciális hosszúságú elágazó programcsaládról, vagy egy exponenciális szélességű és lineáris hosszúságú elágazó programcsaládról.
Minden reguláris nyelv nem ismerhető fel állandó szélességű, lineáris utasításokat elágazó programok családjaként (mivel a DFA átalakítható elágazó programmá). A BWBP olyan nyelvosztályt jelöl, amelyet a BWBP (korlátozott szélesség és polinomiális hossz) elágazó programok családja ismer fel. [10] .
Barrington tétele [11] kimondja, hogy a BWBP pontosan allokálatlan NC 1 . A tétel bizonyítása a szimmetriacsoport eldönthetetlenségét használja fel . [tíz]
Bizonyítsuk be, hogy egy állandó szélességű és polinomméretű elágazó program ( VP ) NC 1 -ből áramkörré alakítható .
Ellenkezőleg: legyen egy C áramkör az NC 1 -ből . Az általánosság elvesztése nélkül feltételezzük, hogy csak ÉS és NEM kapukat használunk benne.
Definíció: A VI-t Boole-függvény kiszámításának nevezzük, vagy ha az eredményt adja , akkor az azonos permutációt , az eredményéhez pedig a -permutációt . Mivel a C sémánk néhány logikai függvényt ír le , és csak azt, ezeket a kifejezéseket felcserélhetjük.
A bizonyításhoz két lemmát fogunk használni:
1. lemma : Ha van olyan VP, amely -számítja , akkor létezik olyan VP is, amely -kalkulál (vagyis egyenlő at , és egyenlő .
Bizonyítás : mivel a és a ciklusok, és bármely két ciklus konjugált , akkor van olyan permutáció , hogy = . Ezután megszorozzuk a permutációkkal és a bal oldali első VP utasítással (hogy megkapjuk a permutációkat és ), majd az utolsó utasításból származó permutációkat megszorozzuk a jobb oldalival ( és kapjuk ). Ha korábban cselekedeteink (az általánosság elvesztése nélkül) egyenlő volt -vel, akkor most az eredmény , ha pedig egyenlő volt -vel, akkor az eredmény egyenlő -vel . Így kaptunk egy VI-t, amely -calculates , ugyanolyan hosszúsággal (az utasítások száma nem változott).
Megjegyzés : ha a VP kimenetét megszorozzuk a jobbal , akkor nyilvánvaló módon megkapjuk a VP, -calculating függvényt .
2. lemma : Ha két VI van: -számítás és -számítás hosszúságokkal és , ahol és 5-ciklusos permutáció, akkor létezik olyan VI 5-ciklusos permutációval , hogy a VI -számítja , és mérete nem haladja meg + .
Bizonyítás : Tegyük "sorba" négy VP utasításait: , , , (az inverzeket az 1. lemma alapján építjük fel). Ha az egyik vagy mindkét függvény 0-t ad vissza, akkor egy nagy program eredménye : például -val . Ha mindkét függvény 1-et ad vissza, akkor . Itt , ami annak köszönhető, hogy ezek a permutációk 5-ciklikusak ( a szimmetriacsoport feloldhatatlansága miatt ). Az új VI hosszát definíció szerint számítják ki.
A tétel bizonyítása
Indukcióval fogjuk bizonyítani. Tegyük fel, hogy van egy C áramkörünk bemenetekkel , és minden D aláramkörre és 5 ciklusú permutációra van egy VI, amely -kiszámolja D -t . Mutassuk meg, hogy mind az 5-permutációra létezik egy VP, amely -kiszámítja C -t .
A kapott elágazó program mérete nem haladja meg a -t , ahol az áramkör mélysége. Ha a sémának logaritmikus mélysége van, akkor a VP polinomhosszúságú.
Algoritmusok összetettségi osztályai | |
---|---|
Fénynek tekinthető | |
Állítólag nehéz | |
Nehéznek tartott |
|