看板 EE_DSnP 關於我們 聯絡資訊
不好意思借用一下標題 想請問兩個問題 第一個就是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
keyboardle:一應該是有重複visited的就不會再跑下去了 06/22 21:05
keyboardle:二應該是不會改到a或b.即不應動到它們的_left,_right 06/22 21:09
WSzc:1:可是有visited不是就在後面加個(*)再印出來? 06/22 21:16
WSzc:2.那這樣在print f=a&b 的時候我該怎麼知道a的_left是b呢? 06/22 21:17
keyboardle:2.f的BddNode並非指到a.應該會是某個多出來的NodeInt 06/22 21:29
keyboardle:這些事應該在ite裡都被處理完善了(?) 06/22 21:30
keyboardle:1.印完(*)後有個return!? 06/22 21:40
WSzc:喔喔 第一個懂了感謝 第二個我再研究看看 謝謝!! 06/22 21:42
ric2k1:a & b 會產生一個新的 BddNode (ite 中產生), 這個 node 也 06/23 00:33
ric2k1:是 level 2, 但它不是 a 這個 node 哦! a 這個 node 是不會 06/23 00:33
ric2k1:被改變的!! 06/23 00:34
muxiv: 2.f的BddNode https://moxox.com 07/12 00:19