看板 EE_DSnP 關於我們 聯絡資訊
我不知道為什麼我沒辦法一次把所有的dead nodes清完 我的寫法是利用_uniqeTable的iteraor一個個檢查 如果遇到dead node就去做必要的處理,而且還要去檢查他的子孫(利用recurrence) 我覺得我的recurrence應該沒有寫錯 而且我也有考慮到如果有把目前這個iterator所在的籃子裡的nodes清掉的話, iterator可能要往回移幾個的情形 (我的iterator是以"籃子的index"以及"籃子裡的index"來specify) 我想了很久還是不知道哪邊有問題,不知道是我有寫錯還是漏掉考慮某些情形 目前的解決方法是多清幾次直到乾淨為止... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.137.69.81
ric2k1:有沒有人有寫的, 分享一下, 我自己也沒有寫... XD 06/23 16:49
yangjiunru:可以參考一下Project網頁上的paper 06/23 20:09
yangjiunru:Efficient implementation of a BDD package 06/23 20:09
yangjiunru:他的refCount算法根reference code有一點不一樣 06/23 20:09
yangjiunru:incRefCount和decRefCount會變慢一點 06/23 20:10
yangjiunru:但是Garbage collectoin比較好做 06/23 20:10
yangjiunru:在那篇第四頁左下角那一段 06/23 20:12
我找到問題根源了,問題出在我在recurrence裡會產生BddNode的local variable 如果在recurrence的下層很不幸的遇到上層曾經出現的node 那_refCount就不對了,所以有些就沒有被清掉 另外那篇paper提醒了我還要注意_computedTable,感謝! ※ 編輯: eorlthexiv 來自: 220.137.69.81 (06/24 15:14)