作者BBSealion (海獅)
看板EE_DSnP
標題[問題] strash & hash
時間Tue Jan 11 18:55:25 2011
好像還是不能完全懂這裡的概念orz
雖然大概能理解hash function如何做,但還有些問題
我講一下我理解的部份好了
請大家幫我看看有沒有錯誤,還有一些實作上的問題,感謝!
---
既然目標是要找到fanin in完全一樣的gate(包括fanin的 id和invert)
開始流程大概是
1.對每個gate: g_n,先用他造出一個HashKey: g_nk
2.一起丟進Hash裡面 h.insert(g_nk,g_n)
理論上HashKey不同,代表他的fanin一定不同
但HashKey相同,不代表fanin就一定相同
不過同一個bucket也可能有不同的HashKey被丟進來
所以我只要check同bucket中各個slot是否有可以merge的gate就好了
在不同bucket中的一定不可能被merge
---
我的問題是:
這個過程中,
是每次insert時就要去檢查是否有一樣,然後當場完成merge的動作嗎?
感覺這樣是比較好的,但又覺得把merge的動作寫在insert裡面
好像有點讓Hash不乾淨,變成不是一個獨立的資料結構
而是一定要配合我電路graph使用
但全部都insert進去之後,再去處理merge問題
就無法確定是dfs的順序去merge,那有些能merge的東西就會漏掉了
想問問看大家是怎麼做的?
---
ps:有需要merge fanin一樣的 output嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.168.217.146
※ 編輯: BBSealion 來自: 218.168.217.146 (01/11 18:57)
1F:推 TommyKSHS:記得老師好像有說過 output 還有 input不能被simplified 01/11 19:02
2F:推 puerpuella:先check,有就merge,沒有就forceInsert? 01/11 19:08
3F:→ BBSealion:嗯... 樓上這樣講不錯 (樓樓上謝啦XD) 01/11 19:38
4F:→ BBSealion:但這樣變成每個都用check和forceinsert來完成 insert 01/11 19:40
5F:→ BBSealion:本身反而變成沒有用了? 01/11 19:40
6F:→ BBSealion:有點像把insert該做的兩件事拆成兩個function分別完成 01/11 19:44
7F:推 ric2k1:推 3000!! 01/11 21:14
8F:→ BBSealion:噗... XDD 01/11 21:34
9F:→ BBSealion:話說 bucket的數量...開個十萬會很過分嗎= =? 01/11 21:35
10F:推 tomap41017:3000PO被你搶到了..數量就開3000吧!(誤 01/12 14:21