直積集合
直積集合(ちょくせきしゅうごう、direct product set)
定義
$ A,B が集合のとき、積$ A \times B は$ (a, b)\quad (a \in A , b \in B) という組みからなる集合で、その集合のことを直積集合と呼ぶ。定義は以下。
$ A \times B = \{ (a,b) | a \in A, b \in B \}
$ (a,b) は順序対(ordered pair)という $ (a, b) \neq (b, a)
$ A,B は特に直積因子と呼ぶ
例:
$ A = \{1,2\} ,\ B = \{ 3, 4\} の直積$ A \times B = \{1,2\} \times \{ 3, 4\} について考える。
このときの組み合わせは4通り。
$ \{1,2\} \times \{ 3, 4\} = \{(1,3), (2,3), (1,4), (2, 4)\}
n個まで拡張する場合
$ (a_1, a_2, ... , a_n) のn個の順序がある組をタプルと多分呼ぶ。
集合$ A_1, A_2,...,A_n の直積は
$ A_1 \times A_2 \times ... \times A_n = \{(a_1, a_2, ..., a_n) | a_1 \in A_1, a_2 \in A_2, ..., a_n \in A_n\}
Haskell
code:memo.hs
> import Control.Monad
> sequence 1, 2], [3,4
sequence関数が直積を生成する関数
確認用
Q. 直積
Q. 直積集合
Q. $ \{1,2\} \times \{ 3, 4\} の組み合わせは何通りか
Q. $ \{1,2\} \times \{ 3, 4\} の集合を列挙すると?
Q. Haskellで直積を生成する処理を書くと?
参考