作者ric2k1 (Ric)
看板EE_DSnP
標題Re: [問題] hw6 cirp -n 的順序
時間Sat May 31 20:54:20 2008
※ 引述《hoghcmkcm (HOG)》之銘言:
: 問一下
: 我在存 _piList的時候
: 都是用 _piList.insert( _piList.begin(), ptr );
: 沒有排序
_piList 目前是定義成 vector<CirGate *>,
你用 insert(iterator, T) 並不時很好的使用 dynamic array 的方法...
Dynamic array 在使用上最好能知道 or 估計 size 是多少,
可以使用 index access 盡量使用 index, 避免 O(n) 的動作.
: 所以在跑cirp -n 不是從最小的input開始@@
這樣的畫印出來的順序的確會不一樣
: 然後
: 我有點分不清
: 是先跑完AND 再去跑 PO嗎?
: 不過有時候又看到AND沒跑完就 從AND連到PO
: PI(1)
: PI(2)
: AND(6) = PI(1) && PI(2)
: AND(7) = !PI(1) && !PI(2)
: AND(3) = !AND(6) && !AND(7)
: PO(3) = AND(3)
: PO(6) = AND(6)
: 像這個是先跑AND
: PI(1)
: PI(4)
: AND(6) = PI(1) && PI(4)
: PO(6) = AND(6)
: AND(7) = !PI(1) && !PI(4)
: AND(3) = !AND(6) && !AND(7)
: PO(3) = AND(3)
: 這個又變成AND完跑到PO@@
建議看一下 lecture note #10, p27 post-order traversal 的講義.
題目的規定是 "一個 gate 的 fanin(s) 必須要比這個 gate 先被印 (traverse),
簡單的說, 就是從 PO 開始做 recursive 的 post-order traversal...
上面的第二個例子, 由於 PO(6) 只 depend on AND(6), 而不 depend on AND(7)
以及 AND(3), 所以只有 AND(6) 會先被印出來.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.132.98
1F:推 hoghcmkcm:喔喔@@ 我一直以為是從PI往下看@@ 06/01 00:52