[問題] 關於ite中的 T==E 和 uniquify

看板EE_DSnP作者 (好多事要做.....)時間17年前 (2007/01/14 18:22), 編輯推噓3(304)
留言7則, 2人參與, 最新討論串1/2 (看更多)
我昨天才剛寫到(v) 可是目前一直卡在這個地方 問題就是建出來的bdd架構會有問題 test.cpp我建出來的 e = a&(b|c)是對的 有四個node d = a&b |a&c 卻一直有六個 node 我跑出來的結果如下 [3] (+)(1) [2] (+) (1) [1] (+)(1) [0] (+)(13) [0] (-)(13) (*) [1] (+) (5) [0] (+)(13) (*) [0] (-)(13) (*) [2] (+)(1) [1] (+)(5) (*) [0] (-)(13) (*) # total nodes = 6 [3] (+) (1) [1] (+) (6) [0] (+) (14) [0] (-) (14) (*) [2] (+) (2) [1] (+) (6) (*) [0] (-) (14) (*) # total nodes = 4 我發現當他在上面的level [2] 那邊 看到兩個一樣的child卻沒有 刪掉自己回傳child 我在想會不會是 BddManager::ite裡面當t==e時 我只有做return t 或是uniquify沒有找到相同的東西 (我uniquify都沒有去動) 不曉得問題是出在哪呢 會不會是當t==e時 除了return t 還有要 check isNegEdge() 或是哪裡還需要用到uniquify去檢驗 我目前code有寫的部份是 check terminal, move bubble, check isNegEdge, operator overloading 還有 _bddMap的三個function 謝謝大家 <(_._)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.7.59 ※ 編輯: vinlinch 來自: 140.112.7.59 (01/14 18:34)

01/14 20:06, , 1F
可能的原因很多, 建議使用 debugger (ddd or gdb),
01/14 20:06, 1F

01/14 20:07, , 2F
gdb> b "BddManager::ite"
01/14 20:07, 2F

01/14 20:07, , 3F
and then next or step in to see what is going on.
01/14 20:07, 3F

01/14 20:08, , 4F
It should be more efficient than trial-and-error...
01/14 20:08, 4F

01/15 02:12, , 5F
嘗試了ddd還是一頭霧水 先準備期末考好了 orz..
01/15 02:12, 5F

01/18 16:25, , 6F
找到問題了 謝謝老師 謝謝firstpeople 謝謝samuelduan
01/18 16:25, 6F

01/18 16:28, , 7F
原來是call錯bddManager
01/18 16:28, 7F
文章代碼(AID): #15gWI2Oq (EE_DSnP)
文章代碼(AID): #15gWI2Oq (EE_DSnP)