==
の項と
の項について、一致する項(重みとアイテム集合が同じ項)を選択し、そのアイテム集合を返す。 アイテム集合のみを返し、重みは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? : 式の不等価比較