実際、接続はほとんどありません。完全な理解のために、プログラムと回路の関係について説明させてください。
プログラム(又はアルゴリズム、又は機械が)関数を計算するための機構です。明確にするために、入力がバイナリ文字列であり、出力がブール出力bであると仮定します。入力のサイズは潜在的に無制限です。1つの例は、入力が素数のバイナリエンコーディングであるかどうかを判断するプログラムです。バツb
(ブール)回路は、何らかの有限関数を計算するための命令の集まりです。回路を電気回路として描くことも、一連の命令として考えることもできます(このビューは、紛らわしく直線プログラムと呼ばれます)。具体的には、入力が長さnのバイナリ文字列であり、出力がブール値であると想定できます。1つの例は、入力が素数をエンコードするかどうかを決定する回路です(以前と同じように、入力の長さはnである必要があります)。バツ nn
プログラムを、長さnの入力でPをシミュレートする回路P nに変換できます。回路P 0、P 1、P 2、…の対応するシーケンスは任意ではありません。これらはすべて、n個の出力P nを与えるプログラムによって構築できます。このような一連の回路を均一な回路と呼びます(紛らわしいことに、このシーケンスは不定nに対する「単一」の回路P nと考えられます)。PPnPnP0、P1、P2、…nPnPnn
回路のすべてのシーケンスが均一であるとは限りません。実際、一連の回路は、文字列からブール、計算可能または計算不可能なものまで、すべての関数を計算できます!それにもかかわらず、複雑性理論では、回路が制限されているこのような不均一なモデルに興味があります。たとえば、P = NPという質問は、NP完全問題は多項式時間アルゴリズムでは解決できないことを示しています。これは、NP完全問題は多項式サイズの均一回路では解決できないことを意味します。さらに、NP完全問題は、均一性の要件がなければ、多項式サイズの回路では解決できないと推測されます。
チューリング完全な計算モデルは、すべての計算可能な関数を実現する(そしてそれ以上ではない)モデルです。対照的に、ゲートの完全なシステム(AND、OR、NOT、NANDなど)では、これらのゲートで作られた回路を使用して任意の有限関数を計算できます。このような完全なシステムは、(無制限の)回路シーケンスを使用して完全に任意の関数を計算できます。