*
と
の乗算を行う。 一般的な多項式と同様に考えれば良いが、唯一、同じアイテム同士の乗算は2乗とはならない点が異なる。 例えば、a*a=aと計算される。
> require 'zdd' # a. 定数乗算 # 重み付き積和集合xに定数cを掛けるx*cでは、xの各項の重みをc倍する。 # 通常の多項式と同様に考えれば良い。 > a=ZDD::itemset('a') > b=ZDD::itemset('b') > c=ZDD::itemset('c') > d=ZDD::itemset('d') > (a*3).show 3 a > (-2*a).show - 2 a > ((a+2*b+3*c)*4).show 4 a + 8 b + 12 c # b. 1つのアイテム集合の乗算 # 重み付き積和集合xに1つのアイテム集合yを掛けるx*yでは、xの各項目にアイテム集合yを加える。 # ただし、同じアイテム同士の掛け算 a*a=a となることに注意する。 > x=a+2*a*b+3*c > x.show 2 a b + a + 3 c > (x*c).show 2 a b c + a c + 3 c > (x*b).show 3 a b + 3 b c > (4*x*a).show 8 a b + 12 a c + 4 a # c. 2つ以上のアイテム集合の乗算 # 2つの重み付き積和集合x,yの乗算x*yでは、xとyそれぞれの各項から一つずつ選ぶ組み合わせ全てについて # 上記a,bの乗算を付す。 # 乗算の結果同じアイテム集合の項は加減算される。 > ((a+b)*(c+d)).show a c + a d + b c + b d > ((a+b)*(b+c)).show a b + a c + b c + b > ((a+b)*(a+b)).show 2 a b + a + b > ((a+b)*(a-b)).show a - b
/ : 除算演算子