logo

関数的に完全な集合とは何か?

関数的に完全な集合とは何か?

定義1

ブール関数の集合{fk}={fk:{0,1}nk{0,1}}kΓ\left\{ f_{k} \right\} = \left\{ f_{k} : \left\{ 0, 1 \right\}^{n_{k}} \to \left\{ 0, 1 \right\} \right\}_{k\in \Gamma}が与えられたとしよう。Γ\Gammaは有限集合だ。任意のブール関数

{0,1}n{0,1}(nN) \left\{ 0, 1 \right\}^{n} \to \left\{ 0, 1 \right\}\quad (n \in \mathbb{N})

{fk}\left\{ f_{k} \right\}の合成で表現できるとき、集合{fk}\left\{ f_{k} \right\}機能的に完全functionally completeだという。

定理

NOT\text{NOT}ゲートAND\text{AND}ゲートの集合{¬,}\left\{ \lnot, \land \right\}は機能的に完全だ。

説明

つまり、全てのブール関数はNOT\text{NOT}AND\text{AND}の繰り返しで作ることができる。機能的に完全な集合は一意ではなく、無数にある。例えばab=¬(¬a¬b)a \land b = \lnot(\lnot a \lor \lnot b)であるため、{¬,}\left\{ \lnot, \lor \right\}も機能的に完全な集合だ。この定理から、任意の集合がAND\text{AND}ゲートとNOT\text{NOT}ゲートを作ることができるかだけ示せば、機能的に完全な集合であることを証明できる。

機能的に完全な集合の例:

もちろん複製関数が必要な場合もある。これらの結果をコンピュータ回路の言葉で述べれば以下のようになる。全ての論理演算は:

  • NOT\text{NOT}ゲートとAND\text{AND}ゲートのみを使用して回路に実装できる。
  • NAND\text{NAND}ゲートと複製関数のみを使用して回路に実装できる。
  • NOR\text{NOR}ゲートと複製関数のみを使用して回路に実装できる。
  • トフォリゲートのみを使用して回路に実装できる。
  • フレドキンゲートのみを使用して回路に実装できる。

ユニバーサルゲート

特に、自分自身だけで構成された集合{f}\left\{ f \right\}が機能的に完全なとき、そのようなffユニバーサルゲートという。ユニバーサルゲートは自分自身だけで全てのブール関数を表現できる。NAND\text{NAND}NOR\text{NOR}TTFFはユニバーサルゲートだ。


  1. 金英勳・許在成, 量子情報理論 (2020), p88 ↩︎