単元一覧 › 大学院数学 計算理論・ラムダ計算

計算理論・ラムダ計算の問題

難易度 2大学院の講義の演習問題レベル大学院数学 計算理論・ラムダ計算

変数のブール関数とは写像 のこととする。入力 をもつ基底 上のブール回路を次のように定める。

  • 回路は有向非巡回グラフで、入力ノード と、いくつかのゲートからなる(定数の入力ノードはもたない)。
  • 各ゲートは 入力の任意のブール関数 (全 個のどれでもよい)を計算し、その つの入力はそれより前にある入力ノードまたはゲートの出力である( つの入力が同じノードでもよい)。
  • 回路のノード(入力ノードでもゲートでもよい)を つ選んで出力とし、そのノードが計算する関数を回路が計算する関数とする。
  • 回路の大きさはゲートの個数とする。

変数のブール関数 に対し、 を計算する回路の大きさの最小値を とする。 を満たす 変数のブール関数 の個数を求めよ。

この問題で使うもの

この問題を解けるようになるまで(31 技能)

ヒント

行き詰まったら、上から順に 1 つずつ開いてください。

ヒント 1

高々 2 変数に依存する関数(ゲート 1 個で足りる)と、3 変数すべてに依存する関数に分けて数えよう。

ヒント 2

3 変数すべてに依存する関数は、ゲート 2 個では ()の形に限られる。 での制限がそれぞれ のどれになるかを調べよう。

ヒント 3

高々 2 変数に依存する関数は 個ある。各 について、上の形で 3 変数すべてに依存するものは 50 個ある。異なる どうしの重なりを ANF( 次・ 次の項)で判定しよう。

答えと解説

答えを見る
結果を記録する(このブラウザにだけ保存されます):
解説を読む

方針. 大きさ 以下の回路で計算できる関数を、本質的に依存する変数の個数で分けて数える。 を と同一視し、関数の区別には代数標準形(ANF)を使う。

(1) 高々 変数にしか依存しない関数.
入力ノード を出力とすれば が得られる。ゲートを 個使えば、任意の と任意の 入力関数 について が得られる。これで定数・・ もすべて得られる。逆に、ゲート 個の回路が計算する関数は高々 変数にしか依存しない。したがって、ちょうど 変数に本質的に依存する 変数関数 (以下、非退化という)の個数を求めればよい。それは 個で、内訳は
- AND 型 個:
- XOR 型 個:

である。よってこの種類の関数は

あり、いずれも である。

(2) 変数すべてに依存し、ゲート 個で計算できる関数.
出力が 個目のゲート である場合だけを考えればよい。 の入力の組み合わせで分けると次のとおり。
- が を使わない場合、または入力が の場合:高々 変数に依存する。
- 入力が と ()の場合:高々 変数に依存する。
- 入力が と ()の場合: となる。

この形の関数で 変数すべてに依存するものの集合を とする。 変数すべてに依存するには が非退化であることが必要である。、 と書くと、 であり、条件は かつ「 がともに定数ではない」ことである。制限の組 は次の 種類になる。
- 型 I:( は非退化)。 で、 個。
- 型 II:一方が定数で他方が非退化。( は非退化)で、 個。

よって である。次に、 の重なりを ANF の形で調べる。
- 型 I で が XOR 型: の 個。これはすべての に属する。
- 型 I で が AND 型:ANF の 次の部分が だけ、 次の項はない。ほかの形と一致しないので、 固有の関数が 個ある。
- 型 II で が XOR 型: 次の部分が で、 が決まる。 固有の関数が 個ある。
- 型 II で 、:( つのリテラルの積)となる。これは について対称なので、すべての に属し、 個ある。
- 型 II で 、:( はリテラル)となり、重みは または である。たとえば を考える。 について制限すると と になり、どちらも定数でなく互いの否定でもない。したがって に属さない( についても同様)。よって 固有の関数が 個ある。

各 の内訳は で、上の計算と合う。和集合の大きさは

(3) 合計. と を合わせて

別解

となる を、ゲート数ごとに数える。

ゲート数 0〜1。 出力が入力ノードなら の 個。ゲートが 個のとき、( も可)で表せるのは、高々 変数に依存する関数すべてである。その個数は次のとおり。
- 定数: 個
- ちょうど 変数に依存する関数 : 個
- ちょうど 変数に依存する関数: 変数の組ごとに 個で、組は 通りなので 個

合計 個。これは の関数の個数である。

ゲート数 2。 出力は第 2 ゲート の出力としてよい。 の入力は入力ノードか第 1 ゲート である。 の入力が両方入力ノードなら の関数になる。 も 変数の関数 になるので同様である。よって新しい関数は の形に限る。 なら高々 変数に依存するので既出である。したがって とし、 変数すべてに依存する関数を数える。

このとき は の両方に依存し、 も両引数に依存する。両方に依存する関数は各 個(AND 型 個と XOR 型 個)である。 と は を取り替えれば同じ を与えるので、 は 類(AND 型 類と XOR 型 類)に分ける。 の類を決めると の 通りは異なる を与える。よって各 について 個で、その型は次のとおり。
- パリティ とその否定: 個
- とその否定の形( はリテラル): 個
- とその否定の形: 個
- 3 リテラルの積 とその否定: 個
- とその否定の形: 個

をまたぐ重複。 パリティ( 個)と 3 リテラルの積およびその否定( 個)は、どの でも現れる。残りの型は ごとに別の関数である。たとえば で に制限した関数が、定数または互いに補関係にある関数の組にならないことから確かめられる。したがって次のようになる。
- に依らない共通の関数: 個
- ごとに固有の関数: 個ずつ、 通りで 個

変数すべてに依存する新しい関数は 個である。

合計。 。

この問題の確認

AI が作成した問題です。公開前に次の確認を行いました。確認の方法について

間違いを報告する

この問題の誤り・分かりにくい点・難易度や学年のずれを知らせる
どこについての報告ですか

報告の内容と問題の番号を保存します。名前やメールアドレスは保存しません。

関連する問題