next up previous
Next: 3.1 union, intersection Up: ソフトウェア特論 講義資料 リスト,集合,グラフ,木の処理 Previous: 2.3 リスト行列の掛け算

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日