Next: 3.1 union, intersection
Up: ソフトウェア特論 講義資料 リスト,集合,グラフ,木の処理
Previous: 2.3 リスト行列の掛け算
Lispでは集合はシーケンスデータで扱うことが可能ですが,
要素の順序が異なっても同じ集合としてみなす必要があります。
集合は要素に重複のないリストで表現することが可能です.
CommonLispにはこのように集合を表現するリストを操作するための関数が
あります.和集合union, 積集合intersection, 集合の差set-difference,
排他的和集合set-exclusive-or,集合の包含関係を調べるsubsetpがそれです.
集合の要素かどうかを調べるには,member, findを使うことができます.
> (union '(a b c d) '(c b e f))
(D A C B E F)
> (intersection '(a b c d) '(c b e f))
(C B)
> (set-difference '(a b c d) '(c b e f))
(D A)
> (set-exclusive-or '(a b c d) '(c b e f))
(F E D A)
> (subsetp '(a b c d) '(c b e f))
nil
> (subsetp '(a b c) '(b a d c))
t
> (member 'b '(a b c))
(b c)
> (find 'b '(a b c))
b
generated through LaTeX2HTML. M.Inaba 平成18年5月6日