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