[請益] 有關ITE~~

作者: dream1203 (小叮噹)   2012-04-25 22:30:01
板上各位先進們晚安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 謝謝!!

Links booklink

Contact Us: admin [ a t ] ucptt.com