計算複雑性理論において、クラスNC (「ニックのクラス」の略) は、多項式数のプロセッサを持つ並列コンピュータ上で多対数時間で決定可能な決定問題の集合です。言い換えれば、入力サイズnの問題は、 O ( n k )個の並列プロセッサを使用してO ((log n ) c )の時間で解ける定数cとkが存在する場合にNCに属します。Stephen Cook [ 1 ] [ 2 ]は、多対数深さと多項式サイズの回路について広範な研究[ 3 ]を行ったNick Pippengerにちなんで「ニックのクラス」という名前を付けました。 [ 4 ]回路複雑性理論の場合と同様に、通常、このクラスには回路ファミリーが均一でなければならないという追加の制約があります(下記参照)。
クラスP が扱いやすい問題 (コブハムのテーゼ)とみなせるのと同様に、 NC は並列コンピュータで効率的に解ける問題とみなせる。[ 5 ] NCはPの部分集合である。なぜなら、多項式時間並列計算は多項式時間逐次計算でシミュレートできるからである。NC = Pかどうかは不明だが、ほとんどの研究者はこれが偽であると推測しており、つまり、おそらく「本質的に逐次的」で並列化を使用しても大幅に高速化できない扱いやすい問題がいくつか存在する。クラスNP 完全が「おそらく扱いにくい」とみなせるのと同様に、クラスP 完全は、NC還元を使用する場合、「おそらく並列化できない」または「おそらく本質的に逐次的」とみなせる。
定義における並列コンピュータは、並列ランダムアクセスマシン(PRAM)であると想定できます。これは、中央にメモリプールを持つ並列コンピュータであり、どのプロセッサも任意のメモリビットに一定時間でアクセスできます。NCの定義は、PRAMが複数のプロセッサによる単一ビットへの同時アクセスをどのように処理するかによって影響を受けません。PRAMはCRCW、CREW、またはEREWのいずれかを選択できます。これらのモデルの説明については、 PRAMの項を参照してください。
同様に、NCは、多項式深さと多項式数のゲートを持ち、最大ファンインが2である均一ブール回路(入力の長さから計算可能。NCの場合、nの対数空間でサイズnのブール回路を計算できると仮定する)によって決定可能な決定問題として定義できる。
RNCは、ランダム性へのアクセス権限を持つNCを拡張したクラスです。
Pと同様に、少し言葉の濫用ではあるが、関数問題や探索問題もNCに分類できるかもしれない。NCには、以下のような多くの問題が含まれることが知られている。
多くの場合、これらの問題に対するアルゴリズムは個別に考案する必要があり、よく知られたアルゴリズム(ガウス消去法やユークリッドの互除法など)を単純に適用することはできませんでした。リップルキャリー加算器とキャリー先読み加算器を比較してみるとよいでしょう。
NC 1の問題の一例として、ビット列のパリティチェックがあります。[ 6 ]この問題は、1 と 0 で構成される文字列中の 1 の数を数えることです。簡単な解決策は、文字列のすべてのビットを合計することです。加算は結合法則を満たすため、このような性質を再帰的に適用することで、長さの二分木を構築することが可能になります。2ビット間のすべての合計そしては、基本的な論理演算子、例えばブール式によって表現できます。。
NC iは、最大 2 つの入力と深さO ((log n ) i )の多項式数のゲートを持つ均一ブール回路によって決定可能な決定問題のクラス、または多項式数のプロセッサを持つ並列コンピュータで時間O ((log n ) i ) で解ける決定問題のクラスです。明らかに、
これはNC階層を形成する。
最小のクラスであるNC 0は、一定の深さと制限されたファンインを持つブール回路によって定義可能な関数のクラスです。
次に小さいクラスであるNC 1は、多項式サイズの有界ファンイン回路(幅 4 以下)で解けるすべての問題の集合であるBW 4 0に等しい。これは、均一な場合と非均一な場合の両方に当てはまる(DLOGTIME 均一性で十分)。[ 7 ] : 142
NCクラスは、空間クラスL、 SL、[ 7 ] : 137 NL、[ 8 ] LOGCFL、およびAC [ 9 ]と関連付けることができます。
NC クラスは AC クラスと関連しており、同様に定義されますが、ゲートのファンインは無制限です。各iについて、[ 5 ] [ 9 ] [ 10 ]
このことから、NC = AC となる。[ 11 ]
同様に、NCは、各ステップで最大 2 つのオプションに制限された交代チューリング マシンで解決可能な問題と同等であり、 O (log n ) の空間と交替。[ 12 ]
大きな未解決問題である(Vollmer 1998 、p. 126)。重要な部分的結果によれば、あるいくつかのものが存在するならば、 、そして問題は少なくともゲートインすると、これはブートストラップして超多項式ゲートを必要とするため、[ 13 ]
均一性には様々なレベルが考慮されています。ブール回路のファミリーは、そのファミリーのどのメンバーの回路図でも、様々なリソース制約の下でチューリングマシンによって生成できる場合に均一であると言えます。制約のレベルが異なると、複雑性クラスも異なる可能性があり、より厳しい制約ほど複雑性クラスが小さくなる可能性があります。
文献では、NC 1クラスについて、強度順に以下の均一性が検討されている: [ 7 ] : 139 [ 14 ]
デフォルトでは、文献ではLOGSPACEの均一性を使用しています。
なぜなら、研究者は、強化可能なNC 1 -均一性を使用する可能性があります。自己参照を避けるために、NC 1 -均一NC 1は次のように定義されます。NC 1ブール回路ファミリーは、記述の集合がALOGTIME交代チューリングマシンによって決定される場合、NC 1 -均一です。マシンは長さを読み取ります。ブール回路の説明と時間停止[ 7 ] : 139
上位クラスNC 2、NC 3、… については、同様の均一性が定義可能です。ただし、、NC k -一様NC kとLOGSPACE -一様NC kは等しく、両方とも次の定義と同等です。ファミリーは交代チューリングマシンによって決定されます。マシンは長さ-を読み取ります。ブール回路の説明と時間停止そして宇宙[ 7 ] : 139
複雑性理論における主要な未解決問題の一つは、 NC階層におけるすべての包含関係が適切であるかどうかである。パパディミトリウは、あるiについてNC i = NC i +1ならば、すべてのj ≥ iについてNC i = NC jとなり、結果としてNC i = NCとなることを指摘した。この指摘は、包含関係の連鎖における単一の等式であっても、NC階層の崩壊として知られている。
これは、 NC階層全体がレベルiまで「崩壊」することを意味する。したがって、可能性は2つある。
(1)が正しいと広く信じられているが、どちらの主張の真偽についてもまだ証明は見つかっていない。
LOGSPACEまたはNC 1還元の下でNC完全となる問題が存在する場合、 NC階層は崩壊する。[ 7 ]: 136
幅k、長さmのn 個の変数を持つ分岐プログラムは、 m個の命令のシーケンスで構成されます。各命令はタプル ( i , p , q )であり、 iはチェックする変数のインデックス (1 ≤ i ≤ n )、pとqは {1, 2, ..., k } から {1, 2, ..., k } への関数です。数値 1, 2, ..., kは分岐プログラムの状態と呼ばれます。プログラムは最初に状態 1 から開始し、各命令 ( i , p , q ) は、 i番目の変数が 0 か 1かに応じて、状態をxからp ( x ) またはq ( x )に変更します。入力をプログラムの最終状態にマッピングする関数は、プログラムのyieldと呼ばれます(より正確には、入力に対する yield は、任意の初期状態を対応する最終状態にマッピングする関数です)。プログラムは、一連の値を受け取ります。関数のセットがある場合の変数の値可変シーケンス収率がFであるとき、それはまさにAにある。
分岐プログラムのファミリーは、各nに対してn 個の変数を持つ分岐プログラムで構成されます。n 個の変数を持つプログラムが、長さ n の入力に制限された言語を受け入れる場合に、この分岐プログラムは言語を受け入れます。
{0,1} 上の任意の言語Lは、幅 5 で指数関数的な長さの分岐プログラムの族、または指数関数的な幅で線形的な長さの族によって認識できることを容易に示すことができる。
{0,1} 上のすべての正規言語は、一定の幅と線形命令数の分岐プログラムのファミリーによって認識できます (DFA は分岐プログラムに変換できるため)。BWBPは、有界幅と多項式長の分岐プログラムのファミリーによって認識可能な言語のクラスを表します。[ 15 ]
バリントンの定理[ 16 ]によれば、BWBPは厳密に非一様NC1である。証明には対称群S5の非可解性を用いる。[ 15 ]
この定理はかなり驚くべきものだ。例えば、多数決関数は一定の幅と多項式サイズの分岐プログラムのファミリーによって計算できることを示唆しているが、直感的には、多項式サイズを実現するには線形数の状態が必要になるように思えるかもしれない。
一定の幅と多項式サイズの分岐プログラムは、(分割統治法によって)NC 1の回路に簡単に変換できます。
逆に、 NC 1の回路が与えられていると仮定します。一般性を失うことなく、AND ゲートと NOT ゲートのみを使用していると仮定します。
補題 1 —順列Pとして動作する場合と順列Qとして動作する場合がある分岐プログラムが存在する場合、最初の命令で順列にαを右から乗算し、最後の命令でβを左から乗算することにより、それぞれβ P αまたはβ Q αとして動作する同じ長さの回路を作成できます。
分岐プログラムが回路Cをα計算するとは、 Cの出力が0のときに恒等回路として機能し、 Cの出力が1のときにα回路として機能する場合をいう。
補題1と長さ5のすべてのサイクルが共役であるという事実の結果として、任意の2つの5サイクルα、βについて、分岐プログラムαが回路Cを計算する場合、同じ長さの分岐プログラムβが回路Cを計算する。
補題 2 —整流子ε = γδγ −1 δ −1が 5 サイクルとなる5 サイクルγ、δが存在します。たとえば、γ = (1 2 3 4 5)、δ = (1 3 5 4 2) とすると、ε = (1 3 2 5 4) となります。
それでは、バリントンの定理を帰納法によって証明します。
入力x 1 ,..., x nを受け取る回路Cがあると仮定し、 Cのすべての部分回路Dと 5 サイクル α に対して、 Dを計算する分岐プログラム α が存在すると仮定します。すべての 5 サイクル α に対して、 Cを計算する分岐プログラム α が存在することを示します。
サブ回路が分岐プログラムを持ち、すべての 5 サイクルα ∈ S 5に対してα計算を行うと仮定することで、要求どおりCもこの性質を持つことを示しました。
分岐プログラムのサイズは最大で 4d です。ここでdは回路の深さです。回路の深さが対数である場合、分岐プログラムの長さは多項式になります。