.restrict(
)
に含まれるアイテム集合について、
中の少なくとも1つのアイテム集合を包含していれば、その項を選択する。 より正確には、
を構成するある項
から重みを省いたアイテム集合を
、 同じく
のアイテム集合を
とすると、
を満たすような
が少なくとも一つあれば、
に対応する項
を
から選択する。 ちなみに、条件式
を
に変えれば permit関数となる。
> 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 : 部分集合の選択