作者ric2k1 (Ric)
看板EE_DSnP
標題Re: [問題] Cofactor的問題
時間Sun Jan 10 19:31:04 2010
首先, ite() 已經寫在 bddMgr.cpp 裏頭了, 你們不用自己寫一遍,
不過當然是歡迎你們去研究把他搞懂啦...
: ※ 引述《anfranion (南‧生命的意義是經歷)》之銘言:
: : 不好意思 又來問問題了@@"
: : 就是ite裡面會要三個BddNode 的LeftCofactor &RightCofactor
: : 可能是我還是沒有搞懂cofactor
: : 我想問萬一是terminal node的話他的cofactor該怎麼找囧>
大部分的 terminal node 不會在 ite() 裏頭的 cofactor 那步遇到,
因為它很可能先被 checkIteTerminal() handle 掉了...
就算它沒有被 handle 掉, 因為它的 level 最低,
所以他的 cofactor (with respect to other level) 都是它自己.
: : 先謝過好心人了<(_ _)>
: 我後來發現我的問題好像更大一點 真是抱歉QQ
: 就是像 a & b 啊
: 用ite表示的話就是 ite(F, G, 0)
: 畫成圖就是這樣:
: F G H
: a b 0
: / \ / \
: 1 0 1 0
: 現在我要把它展開
: 從a開始
: 我可以透過觀察得到
: ite(F, G, H) = (a, ite(1, G, H), ite(0, G, H)) // G & H不受a的影響
: = (a, G, 0)
: 但是我不知道在抓leftCofactor& RightCofactor的時候
: 直接判斷這件事情QQ
: 煩請知道的人指點了 非常感謝<(_ _)>
ite() 裏面的 code:
124 // check top varaible
125 unsigned v = f.getLevel();
126 if (g.getLevel() > v)
127 v = g.getLevel();
128 if (h.getLevel() > v)
129 v = h.getLevel();
130
131 // recursion
132 BddNode fl = f.getLeftCofactor(v),
133 gl = g.getLeftCofactor(v),
134 hl = h.getLeftCofactor(v);
135 BddNode t = ite(fl, gl, hl);
136
137 BddNode fr = f.getRightCofactor(v),
138 gr = g.getRightCofactor(v),
139 hr = h.getRightCofactor(v);
140 BddNode e = ite(fr, gr, hr);
lines 125 ~ 129 會先檢查 top variable 是誰,
假設 a 比 b 高,
132: fl <= BddNode::_one;
133: gl <= b;
134: hl <= BddNode::_zero;
135: t = ite(one, b, zero) ==> terminal case, return b;
137: fr <= BddNode::_zero;
138: gr <= b;
139: hr <= BddNode::_zero;
140: e = ite(zero, b, zero) ==> terminal case, return BddNode::_zero;
所以接下來的 code 會產生一個新的 BddNodeInt whose _left = b and _right = zero;
然後 return BddNode 回去.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.224.41.206
1F:推 anfranion:謝謝老師! 01/10 19:51
2F:推 herbert570:Right cofactor: 01/10 20:55
3F:→ herbert570:under v is false, what is the functionality of this 01/10 20:55
4F:→ herbert570:BddNode. 01/10 20:55
5F:→ herbert570:Left cofactor: 01/10 20:56
6F:→ herbert570:under v is true, what the functionality of this 01/10 20:56
7F:→ herbert570:BddNode is. 01/10 20:56
8F:推 anfranion:謝謝樓上~~ 01/10 21:09