3.2 * : 乗算演算子

書式

$zdd1$ * $zdd2$ $\rightarrow $ $zdd$

説明

$zdd1$$zdd2$の乗算を行う。 一般的な多項式と同様に考えれば良いが、唯一、同じアイテム同士の乗算は2乗とはならない点が異なる。 例えば、a*a=aと計算される。

例1: 基本例

> 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

関連

/ : 除算演算子