第 x 回 回路計算

本日の内容


今回は回路や並列計算の計算量について説明します。

1. 回路計算

入出力のある装置で問題の答を得ることを考えます。 この時、問題の複雑度を考えるにはどのようにすればよいでしょうか?

特定の基本的な素子を考え、それだけでその問題を解くことを考え、その素 子数などで問題の複雑度を考えます。

論理演算の集合 B に対して、 Bが関数的完全とは、 Bに含まれる演算の組み合わ せだけですべての関数が実現できることを言います。

論理回路

2入力の and, or演算と not 演算は基底となり、これで作られた回路であら ゆる論理関数が実現できます。 さらに、実回路としても容易に構成できます。 これらで作られた回路を論理回路(Boolean circuit) と呼びます。 演算素子をゲートと呼びます。 なお、2入力の代わりに多入力で考えることもあります。 また出力も1つだけでなく、多出力も考えることがあります。このような入 出力の条件を示すのに、 fan-in, fan-out という用語を使用することがあ ります。

さて、論理回路は、1,2入力1出力という制限のあるループのない有向グラフと なります。 ゲートnot, and, or はグラフのノードのラベルとし、接続を辺で表します。 この時、単純に、各ゲートのラベル、入力ノード名、出力ノード名という組 を考えます。 また、入力ゲートを x1 , ... , xn で表し、出力ゲートを y1 , ... , yn で表し ます。

このようにすると、論理回路をこの表現で文字列で表すことができます。 ゲート数を N とすると、ゲートを表現するのにlogN ビット程度の文字数 が必要となり、また、各ゲートの表現は定数個のゲートの表現の組程度になる ので、 論理回路の表現の長さはNlogN 程度の文字列で表現できます。

論理関数fに対して、 c⁡(f) 計算する最小の論理回路Cのゲートの素子数とする。 また、 d⁡(f) をfを計算する深さ最小の論理回路 C の入力ゲートから出力ゲートまで の最長パス長とする。

集合 A⊆N に対して、長さ n の回路複雑度 cA ⁡(n) は、 長さ n だけの A∩ {0,1} n 特性関数の回路複雑度として定義する。 長さ n の深さ複雑度 dA ⁡(n) も同様に定義する。

補題

2つの長さ n の論理ベクトル x=( x1 , ... , xn ) と y=( y1 , ... , yn ) の内積 dot⁡ (x,y) = ⋁ i=1 n xi ∧ yi の回路複雑度は d⁡(dot) ≥ logn+1 , c(dot) = O(n2)

補題

2つの n × n 正方論理行列 A,B の積について、 d ⁡ ( A ⁢ B ) ≥ log ⁡ n + 1

(証明) 各積の要素 c i , j = dot ⁡ ( ai , bj ) は独立に計算できる □

補題

n×n の正方論理行列 A の A* = ⋁ k=0 ∞ A k に対して、 d⁡ (A* ) = O⁡ ( log2 n )

(証明) A0 = I を単位行列とする。

  1. a ij 0 =1 ( i = j )
  2. a ij = 1 の時、 a ij 1 = 1
  3. a ij 2 = ⋁ k=1 n a i,k ∧ a k,j これが成立するには、 ある k1 が存在して、 a i k1 = a k1 j = 1
  4. a ij 3 = ⋁ k=1 n a i,k 2 ∧ a k,j より、 ある k2 が存在して、 a i , k1 2 = a k2 j = 1 より、ある、 k1 , k2 が存在して、 a i , k1 = a k1 , k2 = a k2 , i = 1 となる。
  5. したがって、 a i,j * が1になるには、 i=j か、 a i , k1 , a k1 , k2 , a k2 , k3 ,..., a kl , j のそれぞれが1になっ ている必要がある。 なお、この a i , k1 , a k1 , k2 , a k2 , k3 ,..., a kp , k p+1 ,..., a kq , k q+1 ,..., a kl , j で、 kp = kq の時、 a i , k1 , a k1 , k2 , a k2 , k3 ,..., a kp , k q+1 ,..., a kl , j としても i から j まで1の列が得られる。 したがって、これより、 k1 , ... , kl はすべて異なると仮定できる。 そのため、この列は最長でも n になる。 つまり、 A* = ( I∨A ) n と置き換えられる。

これはすべて同じ回路の論理積なので、 O ⁡ ( log ⁡ n ) 段で ( I∨A ) n を計算できる。 □

定理

A が1テープ決定性チューリングマシンで T ⁡ ( n ) 時間内に受理できれば、 c A ⁡ ( n ) = O ⁡ ( T ⁡ ( n ) 2 )

(証明) Cook の定理同様、様相を論理変数で表し、遷移のルールも論理式で表す。 決定性チューリング機械なので、途中の様相から次の様相の値は論理式を計 算すれば求められる。 様相のサイズは O ⁡ ( T ⁡ ( n ) ) , また次の様相を計算する際、処理する情報は有限 個の論理変数のみなので(状態は有限個、読み、変更し、書き出すテープの マス目も有限個)、一つの様相から次の様相を計算する論理回路のゲート数 は O ⁡ ( T ⁡ ( n ) ) で深さは定数段になる。 したがって、 T ⁡ ( n ) 時間のシミュレーションは O ⁡ ( T ⁡ ( n ) 2 ) サイズの回路で 作ることができる。 また、深さは O ⁡ ( T ⁡ ( n ) ) である。 □

定理

入力テープが読み込みのみ可能で、作業用テープが 入力の長さ n に対して、 S⁡(n) ( S⁡(n) ≥ log n ) だけ使用できるような 決定性チューリングマシンで、 A が受理できるとする。 その時、 d A ⁡ (n) = O ⁡ ( S ⁡ ( n ) 2 )

(証明)一般性を失わず、受理するときに作業用テープをすべて0で消し、入力テープ ヘッドも作業用テープヘッドも左端に移動してから受理状態に入ることとする。 これにより、受理様相は一つだけに限定できる。

さて、 様相として、状態と作業用のテープの内容のほか、入力テープの読み込みヘッ ドの位置を考える。 入力テープの読み込みヘッド位置を二進数で表現すると、 O ⁡ ( log n ) で表現 できる。 そのため、様相の長さは O ⁡ ( log n + S ⁡ ( n ) ) となる。 この長さで表せる様相すべて考えると 2 log n + S ⁡ (n) 通りとなる。 決定性の計算なので、計算が止まる条件は、計算の過程でこのすべての様相 が高々1回だけしか出現しないことである。

ここで、入力テープの内容は変化せず、様相とは別に設定できるため、 入力テープの内容が x の時、様相 a が様相 b に 1 stepで遷移できるという論理 関数 step a , b ⁡ ( x ) を考えることができる。 実は、この計算は、入力テープのヘッド位置が k の入力 xk の値だけで決定さ れるので、深さは 1 で実現できる。

次に、2 stepで遷移可能かどうかを判定する場合、中間様相 c を考えると、 ある c があって、 step a , c ⁡ ( x ) ∧ step c , b ⁡ ( x ) となればいいので、 ⋁ c step a , c ⁡ ( x ) ∧ step c , b ⁡ ( x ) となる。 結局これも様相による正方行列における閉方を考えればいいので、 様相の数に対して O ⁡ ( ( log 2 S ⁡ ( n ) ) 2 ) = O ⁡ ( S ⁡ ( n ) 2 ) の深さの回路で実現できる。 □

2. アドバイス関数によるクラスと回路計算量

クラス C と、アドバイス関数族 F により、 C / F を定義する。 B が C/F に含まれるとは、 C に含まれる集合 A と F に含まれる関数 f に ついて、 B = { x | ( x , f ⁡ ( | x | ) ) ∈ A }

C/F は nonuniform なクラスとして知られている。 C/F として P/poly などが研究されている。

CVP(circuit value problem) は 入力として ( x , c ) で回路表現 c に対して c ⁡ ( x ) の論理値を求める問題とする。

定理

CVP∈P

定理

A が polynomial サイズの回路を持つ ↔ A∈P/poly

これにより、回路での現実的に構成可能なクラスは P/poly という風に捉え ることができます。

(証明) (→) A を認識する polynomial サイズの回路列 Cn を考える。 アドバイス関数として h⁡(n) = Cn とすると、 ( x , h ⁡ ( | x | ) ) がtrue かどうかを判断するのは CVP なので、 P に含まれる。 したがって、 A∈P/poly

(←) A が P/poly に含まれているとすると、アドバイス関数 h と P に含まれている 集合 B に対して、 x∈A ↔ ⟨ x , h ⁡ ( | x | ) ⟨ ∈ B となる。 B は P に含まれるので、決定性多項式時間の1テープチューリング機械 M が存在 する。 決定性多項式時間のチューリング機械は実行時間の2乗サイズの回路で計算 できる。 n を固定した場合、 h ⁡ ( | x | ) = h ⁡ ( n ) も定数となり、また、 ⟨ x , h ⁡ ( | x | ) ⟨ と組を作るのも多項式時間でできるため、 n を固定した ( x , h ⁡ ( | n | ) ) が B に含まれるか判定する回路も多項式サイズで構 成できる。 □

定理

EXPTIME にP/poly に含まれない問題が存在する。

(証明) 指数時間を使って対角化します。

定理

BPP∈P/Poly[Adleman 1978]

(証明) A が BPP に含まれるとする。 すると、長さ n の入力に対して、必要な乱数の長さはある多項式 r⁡(n) で あるとし、2入力の多項式時間決定性チューリングマシンで以下を仮定して いる。 を仮定する ( 誤り率を 1 2 n + 1 以下としている)。

各長さ n の入力 x についてそれぞれ、正解を出す乱数列が 2 r ⁡ ( n ) ⁢ ( 1 - 1 2 n + 1 ) 以上の個数がある。 すると、全入力 x について、少なくとも1つの入力に対して誤りを出す乱 数列は 2 n ⁢ 2 r ⁡ ( n ) ⁢ 1 2 n + 1 = 2 r ⁡ ( n ) / 2 以下となる。 つまり、残りの 2 r ⁡ ( n ) / 2 以上の乱数はすべての入力で正解を出す。 長さ n のすべての入力に対して、正解を出す乱数列 r をアドバイス関数の 値として入力に付与すれば、 M ⁡ ( x , r ) は決定性チューリングマシンで多項式時間で常に正解を出すため、 これは、 P/poly の定義を満たす。 □

3. 並列計算

NC (Nick's Class) は Nick Pippenger が特徴づけをした計算量のクラスで、 多項式個のプロセッサが対数多項式の深さで計算できるクラスです。 但し、構成については uniformity(一様性)が仮定されています。

Uniformity とは、回路の構成を、入力の長さに対して、多項式時間やlog領 域の制限を設けることを言います。 この制限があるため、P/poly と NC は異なり、 NC⊆P が成り立ちます。 NCに関する未解決問題はNC=P?か否かになります。 NC=Pならば、多項式時間計算可能なものはすべてlog多項式時間の並列計算 が可能ということになります。 しかし、現状ではP完全問題に関して、NCに含まれないと信じら れています。 ここでP完全問題とはPに含まれる任意の問題が log 領域 many-one reducibleな問題

NC1 ⊆ L ⊆ NL ⊆ NC2

4. 参考文献

  1. José Luis Balcázar, Josep Díaz, Joaquim Gabarró "Structural Complexity I" Springer Berlin Heidelberg; 2nd ed. 1995.
  2. 河村 「ランダム性と計算量」 https://www.kurims.kyoto-u.ac.jp/~kawamura/t/kyushu/R051124.pdf 令和5年11月24日

坂本直志 <sakamoto@c.dendai.ac.jp>
東京電機大学工学部情報通信工学科