.show([
])
: string
ZDDオブジェクト
を多様な形式で標準出力に出力する。 出力形式は、Table 3.1に示された値(文字列)を与えることによって切り替える。
を省略すればアイテムの積和形式で表示する。
|
機能 |
(スイッチ無し) |
アイテムの積和形での表示 |
bit |
重みの(-2)進数の各桁別アイテム集合の表示 |
hex |
整数値を 16 進数で表現する積和形表示 |
map |
カルノー図で表示。アイテム変数6個まで表示できる |
rmap |
カルノー図で表示。冗長なアイテム変数は省いて表示 |
case |
整数値ごとに場合分けして積和形表示 |
/size |
計算結果のBDD節点数(および処理系全体の節点数)を表示 |
/count |
式に現れる(0 以外の値を持つ)組合せの個数を表示 |
/density |
集合の濃度(0 以外の値を持つ組合せの比率)を表示 |
/value |
シンボル変数にすべて数値を代入したときの式の値を表示 |
/maxcover |
式に含まれる(0 以外の値を持つ)コスト最大の組合せを1つ表示 |
/maxcost |
コスト最大組合せのコスト値を表示 |
/mincover |
式に含まれる(0 以外の値を持つ)コスト最小の組合せを1つ表示 |
/mincost |
コスト最小組合せのコスト値を表示 |
/plot |
BDDの形を図示する。(使用不可) |
decomp |
単純直交分解形式での出力 |
/export |
BDDの形を図示する(否定枝不使用)。 |
|
指定されたファイルに出力 |
> require 'zdd'
> a=ZDD::itemset("a")
> b=ZDD::itemset("b")
> c=ZDD::itemset("c")
> f=5*a*b*c - 3*a*b + 2*b*c + c
> f.show
5 a b c - 3 a b + 2 b c + c
> ZDD::constant(0).show
0
> require 'zdd'
> a=ZDD::itemset("a")
> b=ZDD::itemset("b")
> c=ZDD::itemset("c")
> f=5*a*b*c - 3*a*b + 2*b*c + c
> f.show
5 a b c - 3 a b + 2 b c + c
> f.bit
NoMethodError: undefined method `bit' for 5 a b c + - 3 a b + 2 b c + c:Module
from (irb):8
from /Users/hamuro/.rvm/rubies/ruby-1.9.3-p362/bin/irb:16:in `<main>'
# "a b c"の重み5の(-2)進数は101となる。
# 1*(-2)^2+0*(-2)^1+1*(-2)^0 = 5
# よって0桁目と2桁目にアイテム集合"a b c"が表示されている。
# "a b"の重み-3の(-2)進数は1101となる。
# 1*(-2)^3+1*(-2)^2+0*(-2)^1+1*(-2)^0 = -3
# よって0,2,3桁目にアイテム集合"a b"が表示されている。
> require 'zdd'
> a=ZDD::itemset("a")
> b=ZDD::itemset("b")
> c=ZDD::itemset("c")
> d=ZDD::itemset("d")
> f=a*b+11*b*c+30*d+4
> f.show
a b + 11 b c + 30 d + 4
> f.hex
NoMethodError: undefined method `hex' for a b + 11 b c + 30 d + 4 :Module
from (irb):9
from /Users/hamuro/.rvm/rubies/ruby-1.9.3-p362/bin/irb:16:in `<main>'
> require 'zdd'
> a=ZDD::itemset("a")
> b=ZDD::itemset("b")
> c=ZDD::itemset("c")
> d=ZDD::itemset("d")
> f=2*a*b+3*b+4
> f.show
2 a b + 3 b + 4
> f.map
NoMethodError: undefined method `map' for 2 a b + 3 b + 4 :Module
from (irb):8
from /Users/hamuro/.rvm/rubies/ruby-1.9.3-p362/bin/irb:16:in `<main>'
# アイテムaが1列目のビット列に、アイテムbが1行目のビット列に対応してアイテム集合が表現されている。
# セルの値は重みを表す。左上のセルはaが0、bが0、すなわち定数項が4であることが示されている。
# 4アイテムでは以下の通り。
> g=a*b + 2*b*c + 3*d + 4
> g.show
a b + 2 b c + 3 d + 4
> g.map
NoMethodError: undefined method `map' for a b + 2 b c + 3 d + 4 :Module
from (irb):15
from /Users/hamuro/.rvm/rubies/ruby-1.9.3-p362/bin/irb:16:in `<main>'
> require 'zdd'
# 4つのアイテムa,b,c,dを宣言
> ZDD::symbol("a")
> ZDD::symbol("b")
> ZDD::symbol("c")
> ZDD::symbol("d")
> f=ZDD::itemset("a b") + 2*ZDD::itemset("b c") + 4
> f.show
a b + 2 b c + 4
# mapで表示させると以下の通り。
> f.map
NoMethodError: undefined method `map' for a b + 2 b c + 4 :Module
from (irb):12
from /Users/hamuro/.rvm/rubies/ruby-1.9.3-p362/bin/irb:16:in `<main>'
# rmapで表示させるとdが省かれて表示される。
> f.rmap
NoMethodError: undefined method `rmap' for a b + 2 b c + 4 :Module
from (irb):15
from /Users/hamuro/.rvm/rubies/ruby-1.9.3-p362/bin/irb:16:in `<main>'
> require 'zdd'
> a=ZDD::itemset("a")
> b=ZDD::itemset("b")
> c=ZDD::itemset("c")
> f=5*a*b*c - 3*a*b + 2*b*c + 5*c
> f.show
5 a b c - 3 a b + 2 b c + 5 c
> f.case
NoMethodError: undefined method `case' for 5 a b c + - 3 a b + 2 b c + 5 c:Module
from (irb):8
from /Users/hamuro/.rvm/rubies/ruby-1.9.3-p362/bin/irb:16:in `<main>'
> require 'zdd'
> a=ZDD::itemset("a")
> b=ZDD::itemset("b")
> c=ZDD::itemset("c")
> f1=(a*b*c)
> f1.show
a b c
> f1.decomp
NoMethodError: undefined method `decomp' for a b c:Module
from (irb):8
from /Users/hamuro/.rvm/rubies/ruby-1.9.3-p362/bin/irb:16:in `<main>'
# a,b,cのANDということでa*b*c=a b c
> f2=((a*b*c)+(a*b))
> f2.show
a b c + a b
> f2.decomp
NoMethodError: undefined method `decomp' for a b c + a b:Module
from (irb):13
from /Users/hamuro/.rvm/rubies/ruby-1.9.3-p362/bin/irb:16:in `<main>'
# c,1のORにて(c+1)、それとa bとのANDで(a b)*(c+1)=a b c + a b
> f3=((a*b*c)+(a*b)+(b*c))
> f3.show
a b c + a b + b c
> f3.decomp
NoMethodError: undefined method `decomp' for a b c + a b + b c:Module
from (irb):18
from /Users/hamuro/.rvm/rubies/ruby-1.9.3-p362/bin/irb:16:in `<main>'
# [ a c ]はaとcによる全組合せ集合、すなわち(a c + a + c)。
# それとbとのANDで b*(a c + a + c) = a b c + a b + b c
> f4=((a*b*c)+(a*b)+(b*c)+(c*a))
> f4.show
a b c + a b + a c + b c
> f4.decomp
NoMethodError: undefined method `decomp' for a b c + a b + a c + b c:Module
from (irb):24
from /Users/hamuro/.rvm/rubies/ruby-1.9.3-p362/bin/irb:16:in `<main>'
# [ a b c ]はa,b,cによる全組合せ集合、すなわち(a b c + a b + b c + c a)
export : ZDDの構造をそのままフィアイルに出力する。