I teorien om beregningsmæssig kompleksitet er NC-klassen (fra det engelske Nick's Class ) det sæt af løselighedsproblemer, der kan løses i polylogaritmisk tid på en parallel computer med et polynomielt antal processorer. Med andre ord hører et problem til NC-klassen, hvis der er konstanter, og sådan at det kan løses i tide ved hjælp af parallelle processorer. Stephen Cook [1] [2] opkaldte den "Nick's Class" efter Nick Pippenger , som lavede omfattende forskning [3] i kredsløb med polylogdybde og polynomisk størrelse. [fire]
Ligesom klassen P kan opfattes som en klasse af formbare problemer ( Cobham's Thesis ), så kan NC opfattes som en klasse af problemer, der effektivt kan løses på en parallel computer. [5] NC er en delmængde af P, fordi parallelle polylogberegninger kan simuleres ved hjælp af sekventielle polynomieberegninger. Det vides ikke, om NP = P er sandt, men de fleste forskere mener, at det ikke er det, hvilket indebærer, at der sandsynligvis er formbare opgaver, der er sekventielle "af natur", og ikke kan accelereres væsentligt ved hjælp af parallelisme. Ligesom klassen af NP-komplette problemer kan opfattes som klassen af "mest sandsynligt uløselige" problemer, så kan klassen af P-komplette problemer , når de reduceres til NC, opfattes som "mest sandsynligt ikke paralleliserbare" eller "sandsynligvis sekventiel af natur".
En parallel computer i definitionen kan betragtes som en parallel random access machine ( PRAM - fra engelsk parallel, random-access machine). Det er en parallel computer med en central hukommelsespool, hvor enhver processor kan få adgang til enhver bit på konstant tid. Definitionen af NC påvirkes ikke af den måde, PRAM får adgang til den samme bit fra flere processorer på samme tid.
NC kan defineres som det sæt af løselighedsproblemer, der kan løses af et distribueret boolesk kredsløb med polylogaritmisk dybde og et polynomielt antal porte .
NC omfatter mange opgaver, herunder:
Ofte blev algoritmerne til disse problemer tænkt separat og kunne ikke være en naiv tilpasning af kendte algoritmer - Gauss-metoden og Euklid-algoritmen er afhængig af, at operationer udføres sekventielt.
NC i er sættet af løselighedsproblemer, der kan løses af distribuerede booleske kredsløb med et polynomielt antal porte (med ikke mere end to indgange) og dybde , eller som kan løses i tid af en parallel computer med et polynomielt antal processorer. Naturligvis,
hvad er NC -hierarkiet.
Vi kan forbinde NC -klasserne med lagerklasserne L , NL [6] og AC [7] :
Klasserne NC og AC er identisk defineret, bortset fra det ubegrænsede antal ventilindgange for klasse AC. For hver , er [5] [7] sandt :
En konsekvens af dette er NC = AC . [8] Begge inklusioner er kendt for at være strenge for . [5] På samme måde kan vi få, at NC svarer til det sæt af problemer, der er løst på en variabel Turing-maskine med ikke mere end to valg på hvert trin, og med O (log n ) hukommelse og ændringer. [9]
Et af de store åbne spørgsmål inden for beregningskompleksitetsteori er, om enhver indlejring af NC-hierarkiet er korrekt. Som bemærket af Papadimitriou, hvis NC i = NC i +1 er sand for nogle , så NC i = NC j for alle , og som en konsekvens, NC i = NC . Denne observation kaldes NC-hierarkifoldning, fordi selv fra en enkelt lighed i redekæden:
det følger, at hele NC -hierarkiet "kollapser" til et eller andet niveau . Der er således to muligheder:
Det er en udbredt opfattelse, at (1) er sandt, selvom der endnu ikke er fundet beviser vedrørende sandheden af nogen af udsagn.
Et forgreningsprogram med variabel, bredde og længde består af en sekvens af længdeinstruktioner . Hver instruktion er en tredobbelt , hvor er indekset for den variabel, der skal kontrolleres , og og er permutationsfunktionerne fra til . Tallene kaldes forgreningsprogrammets tilstande. Programmet starter i tilstand 1, og hver instruktion ændrer tilstanden til eller , afhængigt af om den -th variabel er lig med 0 eller 1.
Familien af forgreningsprogrammer består af forgreningsprogrammer med variabler for hver .
Det er let at vise, at ethvert sprog kan genkendes af en familie af forgreningsprogrammer med bredde 5 og eksponentiel længde, eller en familie med eksponentiel bredde og lineær længde.
Ethvert almindeligt sprog kan ikke genkendes som en familie af lineære instruktions-forgreningsprogrammer med konstant bredde (da en DFA kan konverteres til et forgreningsprogram). BWBP betegner en klasse af sprog, der genkendes af BWBP-familien (afgrænset bredde og polynomielængde) af forgreningsprogrammer . [10] .
Barringtons sætning [11] siger, at BWBP er nøjagtigt ikke-allokeret NC 1 . Beviset for sætningen bruger symmetrigruppens uafgørlighed . [ti]
Lad os bevise, at et forgreningsprogram ( VP ) med konstant bredde og polynomisk størrelse kan omdannes til et kredsløb fra NC 1 .
Tværtimod: lad der være et kredsløb C fra NC 1 . Uden tab af generalitet vil vi antage, at der kun bruges AND og NOT -porte i den.
Definition: En VI kaldes -beregning af en boolsk funktion, eller hvis den giver resultatet - den identiske permutation , og for dens resultat - -permutationen. Da vores C -skema beskriver en boolsk funktion og kun den, kan vi udveksle disse termer.
Til beviset vil vi bruge to lemmas:
Lemma 1 : Hvis der er en VP der -beregner , så eksisterer der også en VP der -beregner (det vil sige lig med at og lig med .
Bevis : da og er cyklusser, og to cyklusser er konjugeret , så er der en sådan permutation , at = . Derefter gange vi med permutationerne og fra den første VP-instruktion til venstre (for at få permutationerne og ), og gange permutationerne fra den sidste instruktion med højre (vi får og ). Hvis før vores handlinger (uden tab af almenhed) var lig med , så vil resultatet nu være , og hvis det var lig med , så er resultatet lig med . Så vi fik en VI, der -beregner , med samme længde (antallet af instruktioner er ikke ændret).
Bemærk : hvis vi multiplicerer output fra VP med højre, så får vi på en indlysende måde VP, -beregningsfunktionen .
Lemma 2 : Hvis der er to VI'er: -beregning og -beregning med længder og , hvor og er 5-cykliske permutationer, så eksisterer der en VI med en 5-cyklisk permutation , sådan at VI -beregner , og dens størrelse ikke overstiger + .
Bevis : Lad os lægge instruktionerne fra fire VP'er "på række": , , , (vi bygger de omvendte af Lemma 1). Hvis en eller begge funktioner returnerer 0, så er resultatet af et stort program : for eksempel med . Hvis begge funktioner returnerer 1, så . Her , hvilket er sandt på grund af det faktum, at disse permutationer er 5-cykliske (på grund af symmetrigruppens uopløselighed ). Længden af den nye VI beregnes per definition.
Bevis for sætningen
Vi vil bevise ved induktion. Antag, at vi har et kredsløb C med indgange, og at der for alle underkredsløb D og 5-cyklus permutationer er en VI, der -beregner D . Lad os vise, at der for alle 5-permutationer eksisterer en VP, der -beregner C .
Størrelsen af det resulterende forgreningsprogram overstiger ikke , hvor er kredsløbets dybde. Hvis skemaet har en logaritmisk dybde, så har VP en polynomiel længde.
Kompleksitetsklasser af algoritmer | |
---|---|
Betragtes som lys | |
Formodes at være svært | |
Anses for vanskelig |
|