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