作者whing1332 (我)
看板EE_DSnP
標題[問題] HashKey
時間Sun Jan 17 20:55:53 2010
我想問一下hash key的問題
我現在的情況是
改了hash key 跑出來的結果就會不一樣
雖然在一些比較小的情況
像是testBdd 以及 C17會相同
但到了C432 C499
要不然是跑不出來 要不然就是結果都不相同
我自己的猜想是hash key可能有發生collision
也就是有兩個不同的left,right,level經過hash function後得出相同的結果
如果key發生collision的話
在uniquify或在computed table就會把已經算過的直接傳回
但這個傳回來的不一定是我們要找的
所以跑出來的bdd 會不相同
所以請問該怎麼寫能避免發生collision呢
還是我有哪些其他地方寫錯了呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.244.229
1F:推 ric2k1:有沒有試過用 BDD commands (如 band, bor) 試過不同 logic 01/17 20:57
2F:→ ric2k1:functions? 尤其是像 xor, de-morgan's law 等等. 01/17 20:58
3F:→ whing1332:我還想問一下為什麼bddArr及bddMap clear之後 也就是 01/17 20:58
4F:→ whing1332:有耶 (為什麼xor比較容易出錯呀) 01/17 20:59
5F:推 ric2k1:也就是? 01/17 21:05
6F:推 ric2k1:那將 hash size 設的很小呢? 01/17 21:06
7F:推 a3785lexx:你的hashkey operator== 怎麼寫的呢?? 01/17 21:18
8F:→ a3785lexx:BddHashKey()相等沒關係,可是BddHashKey不能有相等啊XD 01/17 21:18
9F:→ whing1332:喔我剛才另一個問題是我先bsetv 1 a 再breset 4 100 200 01/17 21:21
10F:→ whing1332:然後在brep a就crash了 可是我有clear bddMap bddArr 01/17 21:22
11F:→ whing1332:感謝樓上 我已經改了 不過還有其他地方有bug 01/17 21:30
12F:推 peter00406:我可以問個奇怪的問題嘛? 我同樣使用breset 4 100 200 01/17 21:41
13F:→ peter00406:ref. 的usage變成-0.4531 M Bytes 怎麼會這樣? 01/17 21:42
14F:→ peter00406:我的就沒有變 這中間是不是有什麼誤會呢? 01/17 21:42
15F:推 ric2k1:memory usage 有時會有誤差... 不要介意 01/17 21:48
16F:推 yclanner:只是為什麼會變成負的啊... 01/17 22:01
17F:推 telgniw:感謝Alex我抓到bug了!!!!!!!!!!對不起我耍笨了Orz 01/17 22:05
18F:推 ric2k1:可以分享笨點嗎...? 也許對許多人有用 01/17 22:10
19F:推 ric2k1:我也遇過負的 memory usage... 但我也不知道是什麼原因 01/17 22:10
20F:推 telgniw:就是BddHashKey的==我是比key(我想說它是key啊當然比key.. 01/17 22:11
21F:→ telgniw:應該說我從一開始就只存了key 01/17 22:12
22F:→ telgniw:感謝大家Orz 01/17 22:12
23F:推 ric2k1:oh, 應該要比 (level, right, left) 吧? 01/17 22:13
24F:→ whing1332:對 我也是錯在這裡 現在ok了 01/17 22:37
25F:→ whing1332:不過我現在想問 bsetv 1 a breset 4 10 20 brep a 這樣 01/17 22:37
26F:推 ric2k1:_bddMap 沒有清乾淨? 01/17 22:52
27F:→ whing1332:_bddMap.clear() _bddArr.clear() 01/17 23:13