板上各位先進們晚安XD
小弟想請問一下ite的recursive code
(請看黃色部份)
ite(F, G, H){
Standardize parameters (F, G, H);
if(terminal case)
return result;
if(ite(F, G, H) in computed table)
return result;
let v be the top variable;
T = ite(Fv, Gv, Hv);
E = ite(Fv', Gv', Hv');
Process complement edge info for T & E
if(T == E)
return T;
if((v, T, E) in the unique table)
return result;
let R = BddNode(v, T, E);
insert R into unique table;
return R;
}
我想問什麼情況下 會在computed table裡面找不到
但是unique table裡面卻有存呢?
我的理解是
因為computed table是存{ite(F, G, H), result}的cache
result就是一個ite(F, G, H)對應到的BddNode
unique table是Hash一個(v, T, E)到一個unique BddNode
所以computed table,畢竟是個cache 會被洗掉…
而unique table不會
所以其實unique table裡存的BddNode其實都「曾經」被放在computed table過…
然而隨著時代的巨輪不停地轉動 computed table裡的BddNode有些被
"不同的ite,卻cache到相同bucket的ite"
給擠下台了
所以有時候computed table找不到 但unique table卻找到同一個BddNode…?
不知道這樣講有沒有bug... XD
請板大多指教QQ 謝謝!!