ファジィ集合のはなし(2)

久々にエキゾチックな演算から離れて、ファジィ集合の話です。

前回は普通の集合の特徴と、ファジィ集合の特徴の話をして、ファジィ集合が「近い」「寒い」「長い」などの人間的な尺度を要素一つ一つに付与できることを知りました。この尺度、度合いの数値は関数として書け、メンバーシップ関数といいました。

もちろんその尺度の取り方に絶対的な取り決めはもちろんなく、「7が10に近い」度合いは時と場合と人によって変わってもいいことになります。

我々が欲しいのは、そういう尺度の付与をした集合は普通の集合(クリスプ集合)とどんな差異が生まれて、どんなことができるか、逆にできないかにあるんですね。

長いあらすじ終わり。


さて、今回はファジィ集合では包含や和集合をどう書けるか、どうなるかをみていきます。

まずファジィ集合をそれなりに数学的に扱うには、ファジィ集合を従来の枠組みの上に載せたり、あるいは並行して比較して構築すべきでしょう。私はそう思います。それが数学なんだろうな、と。

今回の場合ですと、まず従来の集合であるクリスプ集合で話の対象を絞り込みます。例えば10に近いかどうかのメンバーシップ関数を考えたくとも、その定義域がいるってことですね。この定義域に相当する部分が全体集合になります。

で、その全体集合$${X}$$の要素$${x}$$についてメンバーシップ関数$${\mu(x),\;x\in X}$$を決めたとき、$${X}$$と$${\mu(x)}$$$からなる組(対)、つまり$${\Bigl(X,\mu(x)\Bigr)}$$をファジィ集合と呼びます。

組のことをファジィ集合と呼ぶので、式で書く際は、

$$
\tilde{A}=\Bigl(X,\mu_{\tilde{A}}(x)\Bigr)
$$

とします。$${\mu}$$に添字で$${\tilde{A}}$$を添えたのは妥当で、全体集合$${X}$$そのものにはファジィ集合$${\tilde{A}}$$の情報はなくてもいいわけです。なぜって、全体集合は枠であって、「10ぐらいの数」という情報はメンバーシップ関数$${\mu(x)}$$のほうにあるんですから。

え? くどいって?


さて、以上のように組んだファジィ集合、この中で普通の集合(クリスプ集合)間の関係性をどう再現するかみていきます。

結局のところ、メンバーシップ関数を条件に合わせ1か0を取る関数にすればクリスプ集合に戻るはずです。
メンバーシップ関数が1である要素、0である要素で含む含まれないが表現できるのですから、クリスプ集合間の関係性はメンバーシップ関数に直結していると言えます。
ということは、メンバーシップ関数間の関係性がファジィ集合の関係性の表現に使えそうです。

実際例えば集合の包含関係は

$$
\tilde{A}\subseteq\tilde{B}\Leftrightarrow \mu_{\tilde{A}}(x)\leq \mu_{\tilde{B}}(x)\;(全てのx\in X)
$$

まあ$${\forall}$$をつかうべきなんでしょうけど、ひょっとすると高校生も読んでるでしょうしね。

え、こんなことに興味を持つ高校生なら$${\forall}$$くらい使うって?

この包含関係、直感的にわかりにくいんですが、メンバーシップ関数を二値化するとちゃんとクリスプ集合の包含になっていることがわかります。

試しに適当なメンバーシップ関数のグラフを置いておきます。
めんどくさいので矩形関数ですが、イメージはたぶん伝わるでしょう?

これが、クリスプ化されると、中途半端だった赤のグラフが0か1になり、

こうなるわけです。

少なくとも大きい方の集合の ある値 でメンバーシップ関数が1なら、含まれる小さい方の集合の 同じ値 でのメンバーシップ関数は0か1なわけです。
上のグラフだと1.5や2.5なんかをみるといいと思います。

もちろん包含を反転させた包含はメンバーシップ関数の大小も反転します。

$$
\tilde{A}\supseteq\tilde{B}\Leftrightarrow \mu_{\tilde{A}}(x)\geq \mu_{\tilde{B}}(x)\;(全てのx\in X)
$$

なので集合の同等性は

$$
\tilde{A}=\tilde{B}\Leftrightarrow \mu_{\tilde{A}}(x)=\mu_{\tilde{B}}(x)\;(全てのx\in X)
$$

と表されることになります。


さて続いては和集合と共通集合。これはどうメンバーシップ関数から表現するか、少し悩みますが、包含関係をベースに考えると、

$$
\begin{array}{}A\subseteq(A\cup B)\\A\supseteq(A\cap B)\end{array}
$$

が言えます。これはファジィ集合、メンバーシップ関数では(全ての$${x\in X}$$は省略して)

$$
\begin{array}{}\tilde{A}\subseteq(\widetilde{A\cup B})&\Leftrightarrow&\mu_{\tilde{A}} (x)\leq\mu_{\widetilde{A\cup B}}(x)\\\tilde{A}\supseteq(\widetilde{A\cap B})&\Leftrightarrow&\mu_{\tilde{A}} (x)\geq\mu_{\widetilde{A\cap B}}(x)\end{array}
$$

が成立してほしいんだ、と翻訳できます。さらには$${\cup,\cap}$$はなるべく簡単で、しかも対になるような演算だと嬉しいですね。一番手っ取り早いのは$${\max,\min}$$を取ることなんじゃないでしょうか? 実際ファジィ集合の演算では、

$$
\begin{array}{}\mu_{\widetilde{A\cup B}}(x)=\max\Bigl(\mu_{\tilde{A}(x)},\mu_{\tilde{B}(x)}\Bigr)\\ \mu_{\widetilde{A\cap B}}(x)=\min\Bigl(\mu_{\tilde{A}(x)},\mu_{\tilde{B}(x)}\Bigr)\end{array}
$$

で定義します。
へぇ、max,minねぇ……。
ウッ、トロピカル幾何の影が。


さて、続いては補集合。補集合はメンバーシップ関数が0か1クリスプ集合でいうなら、0と1をひっくり返したものに相当します。
0,1以外の中間値にも適用させるとすると、手っ取り早いのは、

$$
\tilde{A}^c : \mu_{\tilde{A}^c}(x)=1-\mu_{\tilde{A}}(x)
$$

とすることでしょう。


この記事で補集合を$${A^c}$$と書いていますが、もちろん高校数学の世界だと$${\bar{A}}$$のことです。
補集合をどう表すかには一悶着あって、いろいろ表記法があります。しかしただでさえファジィ集合を$${\tilde{A}}$$と書いているんですから、$${\bar{\tilde{A}}}$$とするのはちょっと煩雑すぎです。

ちなみに何が煩雑かって、煩雑のお相手であるところの閉包がまた問題なんです。
閉包を$${A^c}$$あるいは$${\bar{A}}$$で表す人がいるって言うんで、補集合と表記が駄々被りなんですね。
なんだそりゃ。

ちなみにこの問題を回避するには、やたら太いCを書く派閥もありますが、どうしても嫌なら補集合を差集合で書けばいいわけです。

あ、そうだ、差集合もやらなきゃ。


差集合ってなんで高校でやらないんでしょうね?
たしかに、補集合を使えば表現は可能ですから、無理に導入する必要はないかもしれません。
そもそも現在の高校の数学って、集合を導入する意味ってそんなにないですよね。
昔はそれこそ写像とか、演算も学習していたんでもういくらか豊かな土壌があったわけですけれども。

えっ? 実用性に乏しいって?
それでいてプログラミング教育とか言ってるの?

差集合とは、集合の要素から、別の集合の要素を引くことに相当します。生き残った部分が差集合です。
記号の上では普通のマイナスだといろいろ紛らわしいので、$${\setminus}$$で書きます。
たとえば$${A}$$を整数、$${B}$$を奇数にすると、差集合$${A\setminus B}$$は偶数ということですね。

実際差集合は補集合と共通集合があれば表示できます。
ようは$${A}$$から$${B}$$と被ってる(共通している)部分を無くした集合ですから、$${A}$$と$${(A\cap B)^c}$$の共通部分と言えます。
なので、

$$
\begin{array}{}A\setminus B&=&A\cap (A\cap B)^c\\&=&A\cap(A^c\cup B^c)\\&=&(A\cap A^c)\cup(A\cap B^c)\\&=&\emptyset\cup(A\cap B^c)\\&=&A\cap B^c\end{array}
$$

つまり$${A\cap (A\cap B)^c}$$ですが、これは$${A\cap B^c}$$に等し……。

と、ここまで書いて思いましたが、これド・モルガン先にやらなきゃこの変形がファジィでできるかわかりませんね。

それに排中律もいるな……。排中律はちょっとまずい。

というところで今回も長くなってきたのでまた次回です。

果たしてド・モルガンは成立するのか!?
気になりますね? どうだと思います?
気になったあなたは自分でやってみるのが早いと思うよ。
(最悪別にド・モルガン認めなくても最後の結果$${(A\cap B^c}$$を定義にすればいいんですよ)


6/27追記:いろいろ差集合の式を追加しました。
うだうだ言っていますが、最後に示唆している通り結論は$${A\cap B^c}$$を最初から天下り的に使えばいいんですけど、初稿の段階で共通集合を抜き取ることを強調してしまったので、次回の記事でこの辺の式変形の等価性含め見ていこうと思います。

この記事が気に入ったらサポートをしてみませんか?