3.43 restrict : 上位集合の選択

書式

$obj$.restrict($zdd1$) $\rightarrow $ $zdd2$

説明

$obj$に含まれるアイテム集合について、$zdd1$中の少なくとも1つのアイテム集合を包含していれば、その項を選択する。 より正確には、$obj$を構成するある項$T_ i$から重みを省いたアイテム集合を$\alpha _ i$、 同じく$zdd1$のアイテム集合を$\beta _ j$とすると、 $\alpha _ i \supseteq \beta _ j$を満たすような$j$が少なくとも一つあれば、$\alpha _ i$に対応する項$T_ i$$obj$から選択する。 ちなみに、条件式$\alpha _ i \supseteq \beta _ j$$\alpha _ i \subseteq \beta _ j$に変えれば permit関数となる。

例1: 基本例

> require 'zdd'
> a=ZDD::itemset("a")
> b=ZDD::itemset("b")
> c=ZDD::itemset("c")
> x=5*a + b*c + 3*b + 2
> x.show
 5 a + b c + 3 b + 2

# xに含まれる4つのアイテム集合a,bc,b,Φ(重み2の項で空のアイテム集合)のうち、
# yの2つのアイテム集合a,bのいずれかを包含するアイテム集合は、a,bcである。
# よってxからa,bcの項が選択される。
> x.restrict(a+c).show
 5 a + b c

# xに含まれる4つのアイテム集合a,bc,b,Φのうち、
# zのアイテム集合bcを包含するアイテム集合は、bcのみ。
# よってxからbcの項が選択される。
> x.restrict(b*c).show
 b c

# xに含まれる4つのアイテム集合a,bc,b,Φのうち、
# アイテム集合Φ(重み1の空アイテム集合)を含むアイテム集合は全てのアイテム集合。
> x.restrict(1).show
 5 a + b c + 3 b + 2

# xに含まれる4つのアイテム集合a,bc,b,Φのうち、アイテム集合abcを含むアイテム集合はない。
> x.restrict(a*b*c).show
 0

関連

permit : 部分集合の選択