Laskennallisen monimutkaisuuden teoriassa NC-luokka ( englanninkielisestä Nick's Class ) on joukko ratkaistavuusongelmia , jotka voidaan ratkaista polylogaritmisessa ajassa rinnakkaistietokoneella , jossa on polynomimäärä prosessoreita. Toisin sanoen ongelma kuuluu NC-luokkaan, jos siinä on vakioita ja sellaisia, että se voidaan ratkaista ajoissa rinnakkaisilla prosessoreilla. Stephen Cook [1] [2] antoi sille nimen "Nick's Class" Nick Pippengerin mukaan, joka teki laajan tutkimuksen [3] piireistä, joissa on polylogin syvyys ja polynomikoko. [neljä]
Aivan kuten luokkaa P voidaan pitää muokattavien ongelmien luokkana ( Cobhamin opinnäytetyö ), NC voidaan ajatella luokan tehtävien luokkana, joka voidaan ratkaista tehokkaasti rinnakkaistietokoneella. [5] NC on P:n osajoukko, koska rinnakkaisia polylogialaskuja voidaan simuloida käyttämällä peräkkäisiä polynomialaskuja. Ei tiedetä, onko NP = P totta, mutta useimmat tutkijat uskovat, että se ei pidä paikkaansa, mikä tarkoittaa, että on todennäköisesti muovattavia tehtäviä, jotka ovat "luonnoltaan" peräkkäisiä ja joita ei voida merkittävästi nopeuttaa rinnakkaisuuden avulla. Aivan kuten NP-täydellisten ongelmien luokkaa voidaan pitää "todennäköisimmin ratkaisemattomien" ongelmien luokkana, niin P-täydellisten ongelmien luokkaa , kun se pelkistetään NC:ksi, voidaan ajatella "todennäköisimmin ei rinnakkaistavissa" tai "todennäköisimmin peräkkäinen luonteeltaan".
Määritelmässä olevaa rinnakkaistietokonetta voidaan pitää rinnakkaisena hajasaantikoneena ( PRAM - englannin kielestä rinnakkais, random-access machine). Se on rinnakkaistietokone, jossa on keskusmuisti, jonka mikä tahansa prosessori voi käyttää mitä tahansa bittiä vakioajassa. NC:n määritelmään ei vaikuta tapa, jolla PRAM käyttää samaa bittiä useista prosessoreista samanaikaisesti.
NC voidaan määritellä joukkona ratkaistavuusongelmia, jotka voidaan ratkaista hajautetulla Boolen piirillä , jolla on polylogaritminen syvyys ja polynomimäärä portteja .
NC sisältää monia tehtäviä, mukaan lukien:
Usein näiden ongelmien algoritmit keksittiin erikseen, eivätkä ne voineet olla tunnettujen algoritmien naiivia adaptaatiota - Gaussin menetelmä ja Euclid-algoritmi perustuvat siihen, että toiminnot suoritetaan peräkkäin.
NC i on joukko ratkeavuusongelmia, jotka voidaan ratkaista hajautetuilla Boolen piireillä, joissa on polynomimäärä portteja (enintään kaksi tuloa) ja syvyys , tai jotka voidaan ratkaista ajallisesti rinnakkaistietokoneella, jossa on polynomimäärä prosessoreita. Ilmeisesti
mikä on NC - hierarkia.
Voimme yhdistää NC -luokat tallennusluokkiin L , NL [6] ja AC [7] :
Luokat NC ja AC ovat identtisiä, lukuun ottamatta rajatonta määrää venttiilituloja luokassa AC. Jokaisen kohdalla [5] [7] on totta :
Tämän seurauksena NC = AC . [8] Molempien sisällytysten tiedetään olevan tiukkoja . [5] Vastaavasti voimme saada, että NC vastaa muuttujalla Turingin koneella ratkaistavia tehtäviä, joissa on enintään kaksi vaihtoehtoa kussakin vaiheessa ja O (log n ) muistilla ja muutoksilla. [9]
Yksi laskennan monimutkaisuusteorian suurista avoimista kysymyksistä on, onko jokainen NC-hierarkian upotus oikein. Kuten Papadimitriou huomautti, jos NC i = NC i +1 on totta joillekin , niin NC i = NC j kaikille , ja sen seurauksena NC i = NC . Tätä havaintoa kutsutaan NC-hierarkian taitoksi, koska jopa yhdestä tasa-arvosta sisäkkäisketjussa:
tästä seuraa, että koko NC -hierarkia "lupautuu" jollekin tasolle . Näin ollen kaksi vaihtoehtoa on mahdollista:
Yleisesti uskotaan, että (1) on totta, vaikka todisteita kummankaan väitteen totuudesta ei ole vielä löydetty.
Muuttujien, leveyden ja pituuden haaroitusohjelma koostuu joukosta pituuskäskyjä . Jokainen käsky on kolmiosainen , jossa on tarkistettavan muuttujan indeksi ja ja ovat permutaatiofunktiot alkaen - . Numeroita kutsutaan haarautumisohjelman tiloiksi. Ohjelma alkaa tilasta 1, ja jokainen käsky muuttaa tilan tai -tilaan riippuen siitä, onko -: s muuttuja 0 vai 1.
Haaroitusohjelmien perhe koostuu haaroitusohjelmista, joissa jokaiselle on muuttuja .
On helppo osoittaa, että mikä tahansa kieli voidaan tunnistaa haarautuvien ohjelmien perheestä, jonka leveys on 5 ja pituus eksponentiaalinen, tai perheestä, jonka leveys ja lineaarinen pituus on eksponentiaalinen.
Jokaista säännöllistä kieltä ei voida tunnistaa vakioleveyksisten, lineaarista käskyä haaroittavien ohjelmien perheeksi (koska DFA voidaan muuntaa haarautumisohjelmaksi). BWBP tarkoittaa kieliluokkaa, jonka tunnistaa BWBP (rajoitettu leveys ja polynomipituus) haarautuvien ohjelmien perhe . [10] .
Barringtonin lause [11] väittää, että BWBP on täsmälleen allokoimaton NC 1 . Lauseen todistuksessa käytetään symmetriaryhmän ratkaisemattomuutta . [kymmenen]
Osoitetaan, että haaroitusohjelma ( VP ), jolla on vakioleveys ja polynomikoko, voidaan muuttaa piiriksi NC 1 :stä .
Päinvastoin: olkoon piiri C NC 1 :stä . Yleisyyttä menettämättä oletetaan, että siinä käytetään vain AND- ja EI - portteja .
Määritelmä: VI:tä kutsutaan Boolen funktion -laskemiseksi tai jos se antaa tuloksen - identtisen permutaation ja sen tulokseksi -permutaatioksi. Koska C -skeemamme kuvaa jotain Boolen funktiota ja vain sitä, voimme vaihtaa nämä termit keskenään.
Todistuksessa käytämme kahta lemmaa:
Lemma 1 : Jos on VP, joka -laskee , niin on olemassa myös VP, joka -laskee (eli yhtä suuri kuin , ja yhtä suuri kuin .
Todistus : koska ja ovat jaksoja ja mitkä tahansa kaksi sykliä ovat konjugoituja , niin on olemassa sellainen permutaatio , että = . Sitten kerrotaan permutaatioilla ja ensimmäisestä vasemmanpuoleisesta VP-käskystä (jotta saadaan permutaatiot ja ), ja kerrotaan permutaatiot viimeisestä käskystä oikealla (saamme ja ). Jos ennen toimintamme (ilman yleisyyden menetystä) oli yhtä suuri kuin , niin nyt tulos on , ja jos se oli yhtä suuri , tulos on yhtä suuri kuin . Saimme siis VI:n, joka -laskee , samanpituisena (käskyjen määrä ei ole muuttunut).
Huomaa : jos kerromme VP : n ulostulon oikealla, niin saadaan ilmeisellä tavalla VP, -laskentafunktio .
Lemma 2 : Jos on kaksi VI:tä: -laskeminen ja -laskenta pituuksilla ja , missä ja ovat 5-syklisiä permutaatioita, niin on olemassa VI, jolla on 5-syklinen permutaatio siten, että VI -laskee ja sen koko ei ylitä + .
Todistus : Laitetaan "peräkkäin" neljän VP:n ohjeet: , , , (käänteiset rakennamme Lemman 1 mukaan). Jos toinen tai molemmat funktiot palauttavat arvon 0, niin suuren ohjelman tulos on : esimerkiksi . Jos molemmat funktiot palauttavat arvon 1, niin . Tässä , mikä on totta, koska nämä permutaatiot ovat 5-syklisiä ( symmetriaryhmän ratkaisemattomuudesta johtuen ). Uuden VI:n pituus lasketaan määritelmän mukaan.
Todistus lauseesta
Todistamme induktiolla. Oletetaan, että meillä on piiri C tuloineen ja että kaikille alipiireille D ja 5-jaksoisille permutaatioille on VI, joka -laskee D :n . Osoitetaan, että kaikille 5-permutaatioille on olemassa VP, joka -laskee C :n .
Tuloksena olevan haaroitusohjelman koko ei ylitä , missä on piirin syvyys. Jos kaaviolla on logaritminen syvyys, niin VP:llä on polynomipituus.
Algoritmien monimutkaisuusluokat | |
---|---|
Kevyenä pidetty | |
Taitaa olla vaikeaa | |
Vaikeaksi pidetty |
|