==
の項と
の項について、一致する項(重みとアイテム集合が同じ項)を選択し、そのアイテム集合を返す。 アイテム集合のみを返し、重みは1となることに注意する。 重みも含めて選択したい場合は、iif関数と組み合わせることで実現可能である。
本パッケージで扱える比較演算子(関数)は以下の通り。
zdd1 == zdd2 : 等価演算子
zdd1
= zdd2 : 以上演算子
zdd1
zdd2 : 大なり演算子
zdd1
= zdd2 : 以下演算子
zdd1
zdd2 : 小なり演算子
zdd1.ne?(zdd2) : 不等関数
また、式全体の等価判定にはsame?(==) もしくはdiff?を使う。
> require 'zdd'
> a=ZDD::itemset("a")
> b=ZDD::itemset("b")
> c=ZDD::itemset("c")
> x=3*a + 2*b + 2*c
> y=2*a + 2*b + 4*c
> x.show
3 a + 2 b + 2 c
> y.show
2 a + 2 b + 4 c
# (x,yが上記の通り定義されていたとする)
# xとyを比較し、同じ重みを持つアイテム集合を選択する。
> (x==y).show
b
# xとyを比較し、y以上の重みを持つアイテム集合を選択する。
> (x>=y).show
a + b
# xとyを比較し、異なる重みを持つアイテム集合を選択する。
> (x.ne?(y)).show
a + c
# zdd1にあってzdd2にない(もしくはその逆)アイテム集合の重みは0と考えればよい。
> z=2*a + 2*b
> z.show
2 a + 2 b
# アイテム集合cはzにないので項0cを考えればよい。
> (x>z).show
a + c
> (x.ne?(z)).show
a + c
> (x==z).show
b
iif : アイテム比較による選択
same? : 式の等価比較
diff? : 式の不等価比較