3.45 show : Display ZDD

Format

$obj$.show([$switch$])

  $switch$ : string

Description

Display various format of ZDD object$obj$ through standard output. Output format converts the given value (character string) as shown in Table 3.1. If $switch$ is not specified, items will be displayed in sum-of-products format.

Table 3.1: List of switches for ZDD object display format

Value and function of $switch$

(No switch)

Display item’s sum-of-products

bit

Display the weight in (-2) base for each digit by itemset

hex

Display integer value sum-of-products in hexadecimal digits

map

Display in Karnaugh map. The map displays up to 6 item variables

rmap

Display in Karnaugh map. Redundant item variables are removed

case

Display case analysis of sum of products for each integer value

decomp

Display simple disjoint decomposition format

Example

Example 1: Basic Example

> 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

Example 2: bit

> 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/stephane/.rvm/rubies/ruby-1.9.3-p448/bin/irb:16:in `<main>'

# "a b c" has weight of -5, expressed in (-2) base is 101. 
# 1*(-2)^2+0*(-2)^1+1*(-2)^0 = 5
# Therefore 0 digit and 2nd digit of itemset "a b c" is display. 
# "a b" has weight of -3 expressed in (-2) base is 1101. 
# 1*(-2)^3+1*(-2)^2+0*(-2)^1+1*(-2)^0 = -3
# Therefore 0,2nd,3rd digit of itemset "a b" is displayed. 

Example 3: hex

> 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/stephane/.rvm/rubies/ruby-1.9.3-p448/bin/irb:16:in `<main>'

Example 4: map

> 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/stephane/.rvm/rubies/ruby-1.9.3-p448/bin/irb:16:in `<main>'
# Itemset is displayed with item a as the first sequence in the bit string,
# and item b corresponds to the first row of the bit string.
# Weight is displayed as the cell value. Upper left cell contains 0 in a, and 0 in b,
# and constant term 4 is shown.

# The 4 items are as follows. 
> 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):17
	from /Users/stephane/.rvm/rubies/ruby-1.9.3-p448/bin/irb:16:in `<main>'

Example 5: rmap

> require 'zdd'
# Declare 4 items 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

# The following displays as map.
> f.map
NoMethodError: undefined method `map' for a b + 2 b c + 4 :Module
	from (irb):12
	from /Users/stephane/.rvm/rubies/ruby-1.9.3-p448/bin/irb:16:in `<main>'

# d is omitted when displayed as rmap. 
> f.rmap
NoMethodError: undefined method `rmap' for a b + 2 b c + 4 :Module
	from (irb):15
	from /Users/stephane/.rvm/rubies/ruby-1.9.3-p448/bin/irb:16:in `<main>'

Example 6: case

> 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/stephane/.rvm/rubies/ruby-1.9.3-p448/bin/irb:16:in `<main>'

Example 7: decomp

> 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/stephane/.rvm/rubies/ruby-1.9.3-p448/bin/irb:16:in `<main>'
# AND of a,b,c is expressed as 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/stephane/.rvm/rubies/ruby-1.9.3-p448/bin/irb:16:in `<main>'
# OR of c,1 is expressed as (c+1), in addition, AND of a b is expressed as (a b),
# the complete expression becomes (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):19
	from /Users/stephane/.rvm/rubies/ruby-1.9.3-p448/bin/irb:16:in `<main>'
# [ a c ] enumerates all combinations from a and c as (a c + a + c).
# AND of b and the above expression becomes 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):25
	from /Users/stephane/.rvm/rubies/ruby-1.9.3-p448/bin/irb:16:in `<main>'
# [ a b c ] enumerates all combinations from a,b,c as (a b c + a b + b c + c a)

See Also

export : Save the structure of ZDD in a file.