【論理関数】n変数対称関数、多数決関数の性質

論理関数f1(x1,x2,,xi,,xj,xn)xi,xjを入れ替えた
関数f2(x1,x2,,xj,,xi,xn)xi,xjを考える。
任意のi,jについてf1,f2の出力が等しいとき、n変数対称関数と言う。
n個の変数のうち、過半数以上の変数が1であるときのみ1を出力する関数をn変数多数決関数と言う。
(1)n変数対称関数は何個存在するか。
(2)多数決関数は、対称関数かつ自己双対関数であることを示せ。
(3)ある論理関数fが対称ならば、fの双対関数は対称であることを示せ。

はじめに

論理関数に関する問題の続きです。以前の記事では、自己双対関数線形関数をそれぞれ紹介しました。まだの方は是非ご覧ください。

本記事で覚えたいこと

  1. 対称関数は、変数のうち1である数字の数の組み合わせで総数が決まる
  2. 多数決関数の否定を取ると、過半数を超えない変数が1のとき、出力も1になる

1.について、例えば2変数対称関数fを考えます。

どのような変数の入力の組み合わせでも1を出力する場合を考えると

1を取る変数が0つのとき、f0=xy

1を取る変数が1つのとき、f1=xy+xy

1を取る変数が2つのとき、f2=xy

これを全て組み合わせて、(1)f=f0+f1+f2=xy+xy+xy+xy

もし、1を取る変数が1つのときは0を出力するならば、f1=0とし、(2)f=xy+xyとできます。

このように、n変数対称関数は、(3)f=a0f0+a1f1++anfnのうち、(a0,a1,,ak)(0,1)が取る組み合わせで個数が決まります。

2.については、記載した通りです。イメージ通りだと思いますが、(2)(3)でこの考え方を利用します。

解答例

(1)n変数対称関数の個数

式(3)より、aii=0,1,,nは0か1を取り、iは合計n+1個存在するので

2222=2n+1個存在する。

過去記事で紹介した、n変数線形関数と同様の考え方に帰着できました。

(2)多数決関数の対称性、自己双対性

対称性について

多数決関数は、n=2m+1m=0,1,2,としたとき

式(3)の[2m+12]<kを満たすakに対し、全てak=1を代入。

[2m+12]<k未満は、全てak=0を代入することで実現できます。

(4)f=f[2m+12]+1+f[2m+12]+2+fn

と表すことができます。

これは、対称関数の一部であることから、対称性を説明することができました。

自己双対性について

自己双対関数の定義により、式(4)の変数及び関数fに否定を取ります。

(5)fd=f[2m+12]+1(x1,x2,xn)+f[2m+12]+2(x1,x2,xn)+fn(x1,x2,xn)=f0(x0,x1xn)+f1(x0,x1xn)+f[2m+12](x0,x1xn)=f[2m+12]+1(x0,x1xn)+f[2m+12]+2(x0,x1xn)+fn(x0,x1xn)

以上の式変形で説明できました。

(3)対称関数と双対性

第2章により、ある関数fが対称関数であるとき、変数の個数によって出力0,1が決まる。((x,y,z)=(1,0,0),(0,1,0),(0,1,1)が異なる出力になることは無い。)

例として3変数対称関数を考える。

変数及び出力fの否定を取って双対関数を計算すると、下記の真理値表の対応になる。

変数の否定を取り、元の対称関数に代入するため、真理値表が反転しただけで、対称性は保持される。

これが、任意のnに対して成立するため、題意は示された。

最後に

(3)は式で説明できるかもしれませんが、表で書いた方が分かりやすいと考え、上記の説明にしました。

問題が複雑になるほど、真理値表を書いて実験することが重要になります。

多数決関数は単調増大関数の性質もあります。合わせて確認しておきましょう。

タイトルとURLをコピーしました