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

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

難易度 3大学院入試の専門科目の標準レベル大学院数学 計算理論・ラムダ計算

入力変数を とするブール回路を考える。ゲートとしては 2 入力のブール関数 をすべて(16 個。定数関数や片方の入力だけによる関数も含む)使ってよく、各ゲートの 2 つの入力には入力変数 またはそれより前のゲートの出力を(同じものを 2 回使うことも含めて)つなぐ。定数は入力として与えられない。回路の出力は、入力変数またはゲートのどれか 1 つの値とし、回路の大きさはゲートの個数とする。

ブール関数 のうち、大きさ 以下の回路で計算できるものの個数を求めよ。

この問題で使うもの

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

ヒント

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

ヒント 1

が本質的に依存する変数の個数で場合分けする。2 変数以下に依存する関数はゲート 1 個で作れる。3 変数すべてに依存する関数を大きさ 2 の回路で作るとき、回路の形がどう制限されるかを考える。

ヒント 2

3 変数に依存する場合は の形で、 はともに 2 引数に本質的に依存する 10 個の関数のどれか。この 10 個は AND 型 8 個と XOR 型 2 個に分かれ、補関数で閉じていることを使って重複を減らす。

ヒント 3

2 変数以下に依存する関数は 個。3 変数に依存するものは、 が XOR 型のとき と の形、 が AND 型のとき の種類で 3 通りの形に分かれる。異なる形の関数が重ならないことは代数標準形の次数や真になる点の個数で確かめる。

答えと解説

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

が本質的に依存する変数の個数で分けて数える。

(1) 本質的に依存する変数が 2 個以下の関数. これらはすべて大きさ 以下で計算できる。実際、ゲートとして定数関数や も使えるので、 に適当な 2 入力ゲートを 1 つ当てればよい。個数は、2 変数の関数 16 個のうち、定数 2 個、1 変数に本質的に依存するもの の 4 個を除いた 個が 2 変数に本質的に依存することから

個。

(2) 3 変数すべてに本質的に依存する関数. ゲート 1 個では入力が 2 つなので不可能で、ちょうど 2 個必要。出力ゲート は 3 変数すべてに依存しなければならないので、 の入力は 1 つ目のゲート と入力変数 であり、 の入力は残りの 2 変数 ()である。よって

で、 はともに 2 引数に本質的に依存する 2 入力関数(10 個のうちのどれか)である。この 10 個は、AND 型 8 個 と XOR 型 2 個 からなり、補関数をとる操作で閉じている。以下、 はリテラル(変数またはその否定)を表す。

が XOR 型のとき: で、 は を補関数に取り替えれば吸収できるので 。
- が XOR 型: の 個( によらない)
- が AND 型(8 個): 。代数標準形(ANF)の 2 次の項がちょうど なので が決まり、 個はすべて異なる

計 個。これらの次数(ANF の次数)は または で、2 次の項は高々 1 つ。

が AND 型のとき: は の補関数で吸収できるので 。
- : 。リテラルの符号 通りと で 個( によらない)
- : 。 を偽にする の値でだけ が定数になる( を偽にしても が残る)ので が から決まり、さらに残りの部分から符号と も決まる。 個
- : 。ANF の 2 次の項は でちょうど 2 つあり、共通の変数として が決まる。 個

最初の 2 種類は ANF に を含む(次数 )が、真になる点の個数が または 個と または 個で異なる。3 種類目は次数 で 2 次の項が 2 つ。よって互いに重ならず、計 個。さらに XOR 型の 個とも、次数と 2 次の項の個数で区別できるので重ならない。

どれも 3 変数すべてに本質的に依存しているので (1) とも重ならない。したがって (2) の個数は 。

合計.

別解

大きさ 2 以下の回路で計算できる関数を、本質的に依存する変数の個数で分けて数える。

(1) 大きさ 1 以下(ゲート 0 個または 1 個)。入力変数そのもの、または 1 個のゲート の出力。定数 が 2 個。1 変数関数()が 個。ちょうど 2 つの変数 に本質的に依存する 2 変数関数は、16 個の 2 入力関数のうち定数 2 個と片方だけの関数 4 個を除いた 10 個で、変数の組が 3 通りあるので 30 個。合計 個。3 変数以下に依存するどんな 2 変数以下の関数も 1 ゲートで作れるので、これで 2 変数以下の関数はすべて尽くされる。

(2) 大きさ 2 で、3 つの変数すべてに本質的に依存するもの。ゲート の出力と別のゲート を考える。。3 変数すべてに依存するには が の両方に本質的に依存し、( は残りの変数)の形でなければならない。 は、 のときの関数 と のときの関数 が の元で、 かつ両方定数ではない場合。 は で分類して 5 類(4 つの符号違いの AND/OR 型と XOR 型)。

AND/OR 型(、 はリテラル)の 4 類:
- リテラル 3 つの AND: 8 個、リテラル 3 つの OR: 8 個
- 型: 各 で 個、計 24 個
- 型: 同様に 24 個
- またはその否定: 各 で 8 個、計 24 個(ANF の 2 次項が異なるので重ならない)

XOR 型:
- または 型: 各 で 4 個、計 12 個
- または 型: 12 個
- パリティ とその否定: 2 個( の選び方によらず同じ)

これらは互いに異なる(形が異なる、または非対称な形で が一意に決まる)ので、 個。

(3) 合計 個。

検算: (1) は 2 変数以下の関数の個数 を、 から数え直して一致。(2) は 3 変数に依存する関数が 114 個で、3 変数関数全体 256 個に収まり、パリティ(次数 1)、2 次の ANF をもつ型、AND/OR 型を ANF の形で区別できることを確認した。

この問題の確認

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

間違いを報告する

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

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

関連する問題