2006年 8月16日 |
応用編-14 サブセット の擬態 (その 1) |
|
2011年 7月16日 補遺 |
|
本節では、サブセット の 「まじわり」 を扱っている。 セット と サブセット は、数学上、「同値類」 である。そして、同値類に対して、「分割と細分」 を適用した考えかたを、ベーシック (432ページ 参照) で示した [ 以下に、「分割と細分」 に関する記述を再録する ]。 ● 分割 (partition、あるいは、類別) 集合 A の部分集合の族を考えてみる (集合を メンバー とする集合のことを集合族という)。集合族 π が、以下の 2つの条件を満たすなら、π を A の分割 (partition) あるいは、類別 という。 (1)
S ∈ π
∧ T
∈ π
∧ S
≠ T ⇒ S ∩ T = φ. そして、分割
(類別) の メンバー である集合のことを 「類」
という。 (1)
A は、「集合の集合」 である。 つまり、A
は、同値関係によって、同値類 (S と T)
を「類」として、類別されることを言っている。 R1 と
R2
が、A
上の同値関係である、とする。 以上のような言いかたをすれば、ややこしいように感じるが、単純に言えば、A/R1 と A/R2 は、(同値関係だから、) 総数 (cardinality) が同じであって、A/R1 は、A/R2 を、さらに、こまかに、仕切った状態 (集合族) である、と考えればよい。 ┌─────┐ │ │ │ │ └──┬──┘ │ ┌───┴───┐ │ │ 分割 ┌──┴──┐ ┌──┴──┐ ──────┼─────┼─┼─────┼──→ │ │ │ │ │ │ └──┬──┘ └─────┘ 細分│ │ │ ┌───┴───┐ │ │ │ │ ┌──┴──┐ ┌──┴──┐ │ │ │ │ │ │ │ │ │ │ │ └─────┘ └─────┘ ↓
というのは、もし、「周延」 していなければ──もし、サブセット のあいだに 「まじわり」 が起これば──、プログラム は、アルゴリズム のなかで、nested-IF を使って、データ を周延しなければならないから。たとえば、「黒本」 の例で云えば、もし、取引先区分 コード が 9つの値をもっていて、かつ、それらの 値 のなかに 「まじわり」 が起こるとすれば、プログラム は、アルゴリズム として、29 の判断 (nested-IF) を用意しなければならない。しかし、データ が周延していれば、リレーショナル 代数演算として、1つの select 文を作成すれば良い。 サブセット の 「まじわり」 は、プログラム の複雑性 (cyclomatic complexity) を増大している悪因である。したがって、サブセット のあいだに 「まじわり」 がないことを検証して、プログラム の アルゴリズム が無駄な コントロール・フロー をふくまないようにしてほしい。 □
|
[ 補遺 ] (2011年 7月16日) 本 エッセー のなかで使っている数学的説明 「分割と細分」 は、(執筆年から判断して、) 「赤本」 の頃に使っていた論証だと思います。今は、もっと簡単な説明 (「切断」 概念、デデキント 氏が実数を定義するときに使った概念) を使っています。ちなみに、「切断」 概念を使うようになったのは、「いざない」 を出版した後だと記憶しています──「いざない」 も、「分割と細分」 を使っているので。 |
|
|||
|