作者WSzc (WSzc)
看板EE_DSnP
標題Re: [問題] 想請問一個笨問題 operators...
時間Mon Jun 22 20:49:40 2009
不好意思借用一下標題
想請問兩個問題
第一個就是testBdd.cpp在印 i = f ^ (c | d)的時候:
[4](+) 0x518f90 (1)
[2](+) 0x518ea0 (4)
[1](+) 0x517620 (3)
[0](+) 0x516010 (15)
[0](-) 0x516010 (15) (*)
[0](-) 0x516010 (15) (*)
[3](+) 0x518f40 (1)
[2](+) 0x518ea0 (4) (*)
[2](-) 0x518ea0 (4) (*)
請問最後兩行的BddNode:_supports[2]
為什麼不會再接下去印他的left/right child 印成像3~6行那樣 而就停下來了呢
另外一個問題就是像是 a & b的話 a的level是2 b的level是1
這樣a的left child會從接constant 1改成接b
可是我該在哪裡判斷是否要將它的child改變呢?
我想到的做法是就直接在&中改
不過這樣的話 or xor也都要分別去改 感覺有點redundant
而且好像執行出來也還是沒有改變耶
難道ite function有自動幫忙做這件事了嗎 不過我沒看到有任何影響_left,_right的動作
還請各位提點一下 謝謝!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.161.60.74
1F:→ keyboardle:一應該是有重複visited的就不會再跑下去了 06/22 21:05
2F:→ keyboardle:二應該是不會改到a或b.即不應動到它們的_left,_right 06/22 21:09
3F:→ WSzc:1:可是有visited不是就在後面加個(*)再印出來? 06/22 21:16
4F:→ WSzc:2.那這樣在print f=a&b 的時候我該怎麼知道a的_left是b呢? 06/22 21:17
5F:→ keyboardle:2.f的BddNode並非指到a.應該會是某個多出來的NodeInt 06/22 21:29
6F:→ keyboardle:這些事應該在ite裡都被處理完善了(?) 06/22 21:30
7F:→ keyboardle:1.印完(*)後有個return!? 06/22 21:40
8F:→ WSzc:喔喔 第一個懂了感謝 第二個我再研究看看 謝謝!! 06/22 21:42
9F:推 ric2k1:a & b 會產生一個新的 BddNode (ite 中產生), 這個 node 也 06/23 00:33
10F:→ ric2k1:是 level 2, 但它不是 a 這個 node 哦! a 這個 node 是不會 06/23 00:33
11F:→ ric2k1:被改變的!! 06/23 00:34