論理関数とその取り扱い

論理関数

関数は入力データに何らかの処理を行い,その結果を出力する装置とみなすことができる.したがって論理関数とは論理値(0か1)を入力として,出力も同様に論理値である.この時,入力変数や出力変数は複数であっても構わない.

function-model-1-crop

したがって、論理関数の一般形は以下のように記述できる.

\(\mathbb{X} =\{(x_1, x_2, \cdots , x_n)\}\) 入力変数

\(y = f_i(\mathbb{X})    ここで  i = 1,\cdots ,k\)

リテラルと項

論理変数\(x\)は二つのリテラル(literal)\(x\)と\(\overline{x}\)をもっている.各変数のリテラルをたかだか一つしか含まない論理積を(Term)という.項は一つのリテラルだけから成り立つこともある.同様に,各変数のリテラルをたかだか一つしか含まない論理和を 和 という.和項は一つのリテラルから成り立つ場合もある.例えば,\(x_1\bar{x}_2x_3\)は項であり,\(x_1+\bar{x}_2\)は和項で
ある.

\(n\)個の変数\(x_1,x_2,\cdots,x_n\)について考えるとき,最小項(minterm)とは\(n\)個のリテラルの論理積で,各変数のリテラルが1個だけ含まれているものである. 最大項(maxterm)とは,n個のリテラルの論理和で,各変数のリテラルが1個だけ含まれているものである.

最小項展開(SOP: Sum Of Product)


\(n\)変数論理関数が最小項(\(n\)個のリテラルの論理積、ただしリテラルは全て異なる)の論理和で表現されているとき,それを\(f\)の最小項展開(minterm expansion, Sum Of Product)あるいは主加法標準形という.

たとえば,\(n=3\)のとき次の\(8\)個の最小項が存在する.変数名を\(x_1,x_2,x_3\) とすると,
\(\bar{x}_1\bar{x}_2\bar{x}_3,\bar{x}_1\bar{x}_2x_3,\bar{x}_1x_2\bar{x}_3,\bar{x}_1x_2x_3,,x_1\bar{x}_2\bar{x}_3,x_1\bar{x}_2x_3,x_1x_2\bar{x}_3,x_1x_2x_3 \) が最小項である.

任意の論理関数は,一意に最小項展開できる.

例えば,2変数の場合を例として説明すると \(f(x_1,x_2)\) を最小項を用いて記述すると,

$$f(x_1,x_2) = g_{00}\overline{x_1}\overline{x_2}+g_{01}\overline{x_1}{x_2}+g_{10}x_{1}\overline{x_2}+g_{11}x_1x_2$$

と記述できる.ここで,係数\(g_{00}, g_{01},g_{10},g_{11}\)は\(f(x_1,x_2)\)の変数\(x_1,x_2\)に0と1の値を代入することにより得られる.いま,\(g_{00}=f(0,0),g_{01}=f(0,1), g_{10}=f(1,0), g_{11}=f(1,1)\)が得られると\(f(x_1,x_2)\)の最小項展開は$$f(x_1,x_2)=f(0,0)\bar{x}_1\bar{x}_2+f(0,1)\bar{x}_1x_2+f(1,0)x_1\bar{x}_2+f(1,1)x_1x_2$$
で求めることができる.

係数\(f(0,0),f(0,1),f(1,0),f(1,1)\)は\(x_1\)と\(x_2\)の値の組合せのそれぞれに対して\(f(x_1,x_2)\)の論理式が具体的に与えられると,一意に定まる.

例えば,\(f(x_1,x_2)=x_1+x_2\)ならば\(f(0,0)=0\),\(f(0,1)=1\),\(f(1,0)=1\),\(f(1,1)=1\)とすると,\(f(x_1,x_2)=x_1+x_2\)の最小項展開は

\(f(x_1, x_2) = f(0,0)\bar{x}_1\bar{x}_2+f(0,1)\bar{x}_1x_2+f(1,0)x_1\bar{x}_2+f(1,1)x_1x_2\)
     \(=0\cdot \bar{x}_1\bar{x}_2+1\cdot \bar{x}_1x_2+1\cdot x_1\bar{x}_2+1\cdot x_1x_2\)           \(=\bar{x}_1x_2+ x_1\bar{x}_2+x_1x_2\)

となる.