作者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