next up previous
Next: この文書について... Up: 16 集合 Previous: 16.5 集合族の同等性

16.6 同値類(equivalence classes)

2つの要素a,bの間に同値関係がある場合に, (a b)という形で表すとして, ある集合Aにおける,複数の要素間に同値関係をあらわす 集合として, たとえば,

((a b) (c d) (b e) (f e))
というものがあった場合に,

((c d) (a f b e))
というような形の同値関係で つながる要素を集めた集合からなる集合族(同値類)を 作る手続きを考えると,
(defun eclasses (data)
  (if (null data) nil
    (merge-eclasses (car data)
                    (eclasses (cdr data)))))

(defun merge-eclasses (eclass data)
  (cond
      ((null data) (list eclass))
    ((intersection eclass (car data))
     (merge-eclasses
      (union eclass (car data)) (cdr data)))
    (t (cons (car data)
             (merge-eclasses eclass (cdr data))))))
という具合に定義ができ,

> (eclasses '((a b) (c b) (d e)))
((d e) (c a b))
> (eclasses '((a b) (c d) (b e) (f e)))
((c d) (a f b e))
というような形になる.

generated through LaTeX2HTML. M.Inaba 平成18年5月7日