專利名稱:4-幾何結(jié)構(gòu)下O(nlogn)的斯坦納樹方法
技術(shù)領(lǐng)域:
4-幾何結(jié)構(gòu)下O(nlogn)的斯坦納樹方法屬于集成電路計算機輔助設(shè)計即IC CAD技術(shù)領(lǐng)域,尤其涉及標準單元(SC)總體布線設(shè)計領(lǐng)域。
背景技術(shù):
在集成電路(IC)設(shè)計中,物理設(shè)計是IC設(shè)計過程中主要的一環(huán),也是其中最耗時的一步。與物理設(shè)計相關(guān)的計算機輔助設(shè)計技術(shù)稱為布圖設(shè)計。在布圖設(shè)計中,總體布線是一個極為重要的環(huán)節(jié),它地結(jié)果對最后詳細布線的成功與否和芯片的性能影響極大。
集成電路的制造工藝目前正從超深亞微米(VDSM)進入到納米(nanometer)階段;集成電路的設(shè)計規(guī)模也正由超大規(guī)模(VLSI)、甚大規(guī)模(ULSI)向G規(guī)模(GSI)方向發(fā)展。在這種條件下,集成電路設(shè)計中互連線延遲已經(jīng)大大超過了門延遲,成為影響芯片性能的主要因素。因此,優(yōu)化互連線長,提高總體布線效率的重要性更加凸現(xiàn)出來。
由于工藝上的限制,以往的方法大多局限于直角互連結(jié)構(gòu)(2-幾何結(jié)構(gòu),2-geometry)的領(lǐng)域。在這種基于直角互連結(jié)構(gòu)的基礎(chǔ)模型中,線網(wǎng)只能沿著水平和垂直方向走線,在進行互連線性能的優(yōu)化時,其能力受到限制。研究人員開始尋找突破途徑,加之工藝的發(fā)展,使得非直角互連結(jié)構(gòu)成為嘗試的方向。在非直角互連的研究當中,60度互連結(jié)構(gòu)(3-幾何結(jié)構(gòu))和45度互連結(jié)構(gòu)(4-幾何結(jié)構(gòu))最早得到了關(guān)注。從90年代初在這方面就開始有零散的研究。其中,4-幾何結(jié)構(gòu)更成為研究的重點。這是由于一方面,4-幾何結(jié)構(gòu)能夠比較容易地從直角互連結(jié)構(gòu)進行擴展并能顯著地縮短線長,較短的互連長度又能夠帶來較少的總電容,較低的擁擠度,并且占用較少的空間。另一方面,45度互聯(lián)結(jié)構(gòu)在最近幾年得到了工藝上的支持。
另外,斯坦納(Steiner)樹構(gòu)造是一個NP-困難(NP-Hard)問題,所以任何精確方法都會有一個指數(shù)級的最差運行時間。特別是對于大規(guī)模線網(wǎng),精確方法的運行時間比較長。于是,更多的已有工作集中于啟發(fā)式方法上。本發(fā)明的主要工作就集中在對4-幾何結(jié)構(gòu)的研究上,并從線長驅(qū)動入手,提出了兩個構(gòu)造4-幾何結(jié)構(gòu)下Steiner樹的啟發(fā)式方法。
在已報導和所能查閱到的國內(nèi)外相關(guān)研究中,下面我們將分析已有的相關(guān)技術(shù)
在歐幾里德(Euclidean)空間中,Steiner樹各頂點之間連線的角度是沒有限制的。許多文獻從純數(shù)學的角度對這種情況進行了研究,這些工作為研究特定角度的Steiner樹構(gòu)造奠定了基礎(chǔ),但與本發(fā)明的工作無關(guān)。
在集成電路布線的應(yīng)用中,由于工藝原因,連線的角度受到一定的限制。直角互連結(jié)構(gòu)最早得到研究并長期被采用。從基礎(chǔ)的線長驅(qū)動Steiner樹構(gòu)造到性能驅(qū)動Steiner樹構(gòu)造、超大線網(wǎng)Steiner樹構(gòu)造,各類基于直角互連的布線問題都得到了比較深入的研究。在線長驅(qū)動方面,如DW方法[參見文獻Dreyfus S E,Wagner R A.The Steiner problem in graphs.Networks,1972,1195-207],GeoSteiner方法[參見文獻Warme D M,Winter P,ZacharisenM.Exact algorithms for plane Steiner tree problem:A computational study.TechnicalReport DIKU-TR-98/11,Department of Computer Science,University of Copenhagen,1998],1-Steiner方法[參見文獻Kahng A B,Robins G.A new class of iterative Steinertree heuristics with good performance.IEEE Transactions on Computer-Aided Design.1992,11(7)893-902],GTC(greedy triple construction)方法,參見文獻[Andrew B.Kahng,Ion I.Mandoiu,Alexander Z.Zelikovsky.Highly Scalable Algorithms for Rectilinearand Octilinear Steiner Trees.InProc Asia-Pacific Design Automation Conference(ASP-DAC),2003],基于生成圖技術(shù)的方法[參見文獻H.Zhou,N.Shenoy,and W.Nicholls.Efficient spanning tree construction without Delaney triangulation.InformationProcessing Letter,81(5),2002.和文獻H.Zhou.Efficient Steiner Tree ConstructionBased on Spanning Graph.ACM International Symposium on Physical Design,Monterey,CA,2003],直角邊替換方法[參見文獻Borah M,Owens R M,Irwin M J.An edge-basedheuristic for Steiner routing.IEEE Trans on CAD,1994,13(12)1563],直角三點組方法[參見文獻Zelikovsky A.An 11/6-approximation algorithm for the network Steinerproblem.Algorithmica,1993,9463]是其中比較典型的工作,對于非直角布線有很好的啟發(fā)作用。
在非直角布線已有關(guān)于60度互連結(jié)構(gòu)的研究文獻[Li Y Y,Cheung S K,Leung K S,etal.Steiner tree construction in λ3-metric.IEEE Trans on CAS-IIAnalog and DigitalSignal Processing.1998,45(5)563]較深入地考察了60度互連結(jié)構(gòu)下Steiner樹具有的一些特性,并使用模擬退火方法進行Steiner樹的構(gòu)造,獲得的SMT(Steiner Minimal Tree,即最小Stiner樹)比MST(Minimal Spanning Tree,即最小生成樹)平均線長縮短了3.43。而文獻[Lin G H,Thurber A P,Xue G L.The 1-Steiner tree problem in λ3-geometry plane.InProc IEEE ISCAS,Orlando,USA,1999VI 125]將傳統(tǒng)的90度1-Steiner方法應(yīng)用到60度互連結(jié)構(gòu)中,效果比前述的模擬退火法稍好,時間效率也有一定提高,不過尚不能令人滿意。這些方法與本發(fā)明的工作無關(guān)。
4-幾何結(jié)構(gòu)的Steiner樹構(gòu)造方法的研究情況為文獻[Koh C K.Steiner Problem inoctilinear routing model.Master’s thesis,National University of Singapore,1995]的方法是從2-幾何結(jié)構(gòu)下的1-Steiner方法推廣而來。對4個點以下的子集利用枚舉得到Steiner子樹,再通過不斷添加Steiner點來完成構(gòu)造;并且考慮到Steiner點存在的范圍可以通過不斷對現(xiàn)有子集進行擴展得到,因此Steiner點候選范圍的擴大是和每一步選取Steiner點同時進行的。該方法得到的SMT比MST線長僅縮短4%左右,時間效率也不高,需要O(n4logn)(O(f(n))的定義見附錄)的運行時間。文獻[Lee D T,Shen C F,Ding C L.OnSteiner tree problem with 45°routing.InProc IEEE ISCAS,Seattle,WA,USA,19951680]中,也對3或4個點的最小Steiner樹構(gòu)造進行了研究,并提出了一種基于DelaunayTriangualtion(Delaunay三角化)的啟發(fā)式方法,僅需要O(nlogn)的運行時間。不過這種方法僅對最小生成樹的局部進行改進,并不改變最小生成樹的整體結(jié)構(gòu)。近期的研究是將2-幾何結(jié)構(gòu)中的SMT轉(zhuǎn)化為4-幾何結(jié)構(gòu)中的SMT[參見文獻Chiang C,Chiang C S.OctilinearSteiner tree construction.InProc IEEE MWSCAS,Tulsa,USA,2002TAM11-216],利用4-幾何結(jié)構(gòu)中Steiner點度數(shù)為3或4的性質(zhì),對2-幾何結(jié)構(gòu)下的SMT進行調(diào)整,結(jié)果可將90度下的平均線長縮短6.63%。然而,一方面2-幾何結(jié)構(gòu)可能需要較大的改動才能得到在4-幾何結(jié)構(gòu)下較好的結(jié)果;另一方面,這里也沒有考慮Steiner點相互之間影響的情況。因此,這個方法最終的效率很一般。在文獻[Koh C K,Madden P H.Manhattan or non-manhattan?a study of alternative VLSI routing architectures.InProc Great Lakes Symposiumon VLSI,San Diego,CA,USA,200047]中,提出了一種基于圖形的優(yōu)化方法——GRATS-tree方法。這種方法需要O(n2)的運行時間,與2-幾何結(jié)構(gòu)下的最小生成樹相比,平均可以縮短17%的線長。文獻[Andrew B.Kahng,Ion I.Mandoiu,Alexander Z.Zelikovsky.HighlyScalable Algorithms for Rectilinear and Octilinear Steiner Trees.InProcAsia-Pacific Design Automation Conference(ASP-DAC),2003]的方法能夠從2-幾何結(jié)構(gòu)推廣到4-幾何結(jié)構(gòu),方法的時間復雜度為O(nlog2n),并且能夠得到不錯的線長結(jié)果。在后面,本發(fā)明將把該方法作為比較的對象之一,以顯示本發(fā)明方法性能更加優(yōu)越。
其他兩篇文獻[Teig S L.The X architecturenot your father’s diagonal writing.InInternational Workshop on System Level Interconnect Prediction(SLIP),San Diego,CA,USA,200233],[Igarashi M,Mitsuhashi T,Le A,et al.A diagonal interconnectarchitecture and its application to RISC core design.InProc IEEE SSC,2002460],對該問題進行了綜述,沒有給出具體的方法。此外,文獻[Chris S.Coulston.ConstructingExact Octagonal Steiner Minimal Tree.GLSVLSI′03,Washington DC,USA.April 28-29,2003]針對4-幾何結(jié)構(gòu)的精確Steiner方法進行了研究,不過需要指數(shù)級的復雜度,在很多情況下無法進行實際應(yīng)用。
從以上的分析中可以看出,雖然目前這方面的研究已經(jīng)取得了一定成果,但無論在布線過程的時間效率上,還是線長縮短的結(jié)果上,都還有很大的研究空間。與已有的典型4-幾何結(jié)構(gòu)的Steiner樹構(gòu)造方法相比,本發(fā)明方法在時間復雜度上具有較大的優(yōu)勢,同時保證了較好的線長性能。請具體參見后面的“本發(fā)明方法效果的實驗數(shù)據(jù)”中給出的實驗數(shù)據(jù)對比及其說明。
已進行過“新穎性檢索”,檢索報告見附件1。
發(fā)明內(nèi)容
本發(fā)明兩種方法的工作為首先在4-幾何結(jié)構(gòu)下構(gòu)造出4-幾何結(jié)構(gòu)生成圖(spanninggraph),即該圖就是在給定平面的一組點上包含了最小生成樹(minimal spanning tree,MST)的圖。然后基于該生成圖構(gòu)造出所求點集對應(yīng)的最小生成樹,這種方法就會有比O(n2)低的復雜度。然后利用生成圖的性質(zhì),分別設(shè)計4-幾何結(jié)構(gòu)邊替換方法和三點組方法,分別結(jié)合最小生成樹和邊替換方法或三點組方法而得到Steiner樹,以提高Steiner樹構(gòu)造的效率。
方法一基于4-幾何結(jié)構(gòu)生成圖和邊替換的Steiner樹方法(后簡稱OST-E);
方法二基于4-幾何結(jié)構(gòu)生成圖和三點組的Steiner樹方法(后簡稱OST-T)。
這兩個方法的共同點在于前面都利用了4-幾何結(jié)構(gòu)生成圖的性質(zhì)。我們就首先介紹4-幾何結(jié)構(gòu)生成圖的構(gòu)造方法。
本發(fā)明的特征在于它以計算機為工具,首先在4-幾何結(jié)構(gòu)下構(gòu)造出最小生成樹,再結(jié)合最小生成樹和邊替換方法構(gòu)造出Steiner即斯坦納樹;該4-幾何結(jié)構(gòu)下的斯坦納樹方法依次具體由以下步驟組成
(1).4-幾何結(jié)構(gòu)生成圖的構(gòu)造,它是一種在給定平面的一組點上包含了最小生成樹的圖對于我們所考慮的圖中的每一點即頂點,都可以以該頂點s為中心,把平面劃分為8個區(qū)域,即R1-R8,所有與該頂點s的4-幾何結(jié)構(gòu)距離相等的點集所構(gòu)成的外輪廓,即內(nèi)含所述8個區(qū)域的八邊形的周邊;再對每一個頂點進行如下操作在每個區(qū)域Ri中,只需把該頂點和距離它最近的頂點連接起來,所得到的邊的集合就包含著最小生成樹,它依次含有以下步驟
(1.1).構(gòu)造頂點集排列,以便為每一個頂點找到在以該頂點為中心的區(qū)域Ri中距離該頂點最近的其他頂點即把區(qū)域Ri中所有頂點按照到某個假想點的距離非減排列,即排列中的每一項總是小于或等于其后面的項,所述假想點的設(shè)置按區(qū)域Ri而任定;
(1.2).掃描頂點集,更新頂點集和邊的互連在以各頂點為中心劃分的區(qū)域Ri中,依次從區(qū)域R1→R4掃描上述按非減序列排列好的頂點集中的所有頂點,當某個頂點p已被掃描到后,在接下來的掃描過程中,第一個出現(xiàn)在所述頂點p的Ri區(qū)域中的頂點就是在所述p點的Ri區(qū)域中距離已被掃描的頂點p最近的頂點,即最近相鄰點;對于那些已經(jīng)被掃描到但還未找到最近相鄰點的頂點,即所謂的等待點,則被保存在動態(tài)集合Ai中;每掃描一個頂點,就在等待點集合Ai中尋找所有和該剛掃描的那個頂點處于同一個Ri區(qū)域中的等待點,若有,便把所述那個頂點和所有這些滿足條件的等待點相連,再把所有這些滿足條件的等待點從等待點集合Ai中刪去,然后把所述那個頂點加入到等待點集合Ai中;
(1.3).當所有頂點都按自己的R1→R4區(qū)域被掃描過后,對各頂點的各Ri區(qū)域的掃描就此結(jié)束,由此得到的4-幾何結(jié)構(gòu)生成圖中所有的邊的集合就包含著我們所需要的最小生成樹;
(2).在上述生成圖的基礎(chǔ)上用Kruskal方法構(gòu)造最小生成樹,并同時構(gòu)造相應(yīng)的二叉樹,把合適的頂點-邊對加入到查詢隊列中以備進行優(yōu)化之用
(2.1).把生成圖中的邊按照邊長的長短非減排列;
(2.2).按下述Kruskal方法從中選出一些邊構(gòu)成最小生成樹先假設(shè)生成樹T一開始的邊數(shù)是零,再按照非減排列,依次考慮每條邊,若所考慮的邊的兩個端點在生成樹T中尚未連通,則該邊將被包含于生成樹T中,否則,將被排除,當生成圖中所有的邊都被考慮后,就得到生成樹T的最小生成樹;
(2.3).建立與上述最小生成樹對應(yīng)的二叉樹
最小生成樹中的一條邊ab,它對應(yīng)于二叉樹中用該邊的二個頂點即端點(a,b)表示的一個內(nèi)結(jié)點;
最小生成樹中的一個頂點對應(yīng)于二叉樹中的一個葉子結(jié)點;
(3).利用Tarjan的離線最小共同祖先方法產(chǎn)生頂點對所對應(yīng)的最長邊,即頂點-邊對所述最長邊即最小生成樹中通過一對頂點的所有邊中最長的一條,它也是二叉樹中內(nèi)結(jié)點所對應(yīng)的最小生成樹中該內(nèi)結(jié)點所對應(yīng)的一條邊,它也可以是相鄰兩個內(nèi)結(jié)點所對應(yīng)的最小生成樹中兩條邊中最長的一條;
(4).用4-幾何結(jié)構(gòu)邊替換方法并結(jié)合上述最小生成樹得到OST-E方法構(gòu)造的斯坦納樹即解決連接頂點-邊對后刪除回路中最長邊的問題,其步驟如下
(4.1).先尋找最小生成樹或二叉樹中合適的頂點-邊對后,再優(yōu)化最小生成樹中的每條邊,只考慮那些最小生成樹中和其相連的頂點;
(4.2).對于每一個頂點-邊對,根據(jù)對應(yīng)的二叉樹,找到所述邊的兩個端點中第一個與(4.1)中所述頂點相連的端點,然后再找到已找出的這個端點和所述頂點在二叉樹中對應(yīng)結(jié)點的最小共同祖先結(jié)點所對應(yīng)的邊,把這條邊作為“預(yù)刪除的邊”準備從所述頂點到所述邊的回路中刪除;
(4.3).再在此基礎(chǔ)上,準備把所述頂點和所述邊進行“最短路徑連接”;
(4.4).計算所有合適的頂點-邊對中把頂點連接到邊所能縮短的線長值,即采用公式所能縮短的線長值=預(yù)刪除的邊-最短路徑連接,再按照這個“所能縮短的線長值”進行非減順序排列作為優(yōu)化操作(即刪除“預(yù)刪除的邊”并進行“最短路徑連接”)的順序,一個頂點-邊對只有當其中的邊和“預(yù)刪除的邊”都還存在時才能刪除“預(yù)刪除的邊”并進行“最短路徑連接”以實現(xiàn)結(jié)果的改進;
(5).上述(1)→(4)的步驟可多次執(zhí)行,不斷優(yōu)化所得結(jié)果;
在非減排列所述的頂點集時,是按照
的值的大小來排列的,x,y分別為每個頂點的橫坐標和縱坐標。
本發(fā)明的特征還在于它以計算機為工具,首先在4-幾何結(jié)構(gòu)下構(gòu)造出最小生成樹,再結(jié)合最小生成樹和三點組方法構(gòu)造出Steiner即斯坦納樹;該4-幾何結(jié)構(gòu)下的斯坦納樹方法依次具體由以下步驟組成
(1).4-幾何結(jié)構(gòu)生成圖的構(gòu)造,它是一種在給定平面的一組點上包含了最小生成樹的圖對于我們所考慮的圖中的每一點即頂點,都可以以該頂點s為中心,把平面劃分為8個區(qū)域,即R1-R8,所有與該頂點s的4-幾何結(jié)構(gòu)距離相等的點集所構(gòu)成的外輪廓,即內(nèi)含所述8個區(qū)域的八邊形的周邊;再對每一個頂點進行如下操作在每個區(qū)域Ri中,只需把該頂點和距離它最近的頂點連接起來,所得到的邊的集合就包含著最小生成樹,它依次含有以下步驟
(1.1).構(gòu)造頂點集排列,以便為每一個頂點找到在以該頂點為中心的區(qū)域Ri中距離該頂點最近的其他頂點即把區(qū)域Ri中所有頂點按照到某個假想點的距離非減排列,即排列中的每一項總是小于或等于其后面的項,所述假想點的設(shè)置按區(qū)域Ri而任定;
(1.2).掃描頂點集,更新頂點集和邊的互連在以各頂點為中心劃分的區(qū)域Ri中,依次從區(qū)域R1→R4掃描上述按非減序列排列好的頂點集中的所有頂點,當某個頂點p已被掃描到后,在接下來的掃描過程中,第一個出現(xiàn)在所述頂點p的Ri區(qū)域中的頂點就是在所述p點的Ri區(qū)域中距離已被掃描的頂點p最近的頂點,即最近相鄰點;對于那些已經(jīng)被掃描到但還未找到最近相鄰點的頂點,即所謂的等待點,則被保存在動態(tài)集合Ai中;每掃描一個頂點,就在等待點集合Ai中尋找所有和該剛掃描的那個頂點處于同一個Ri區(qū)域中的等待點,若有,便把所述那個頂點和所有這些滿足條件的等待點相連,再把所有這些滿足條件的等待點從等待點集合Ai中刪去,然后把所述那個頂點加入到等待點集合Ai中;
(1.3).當所有頂點都按自己的R1→R4區(qū)域被掃描過后,對各頂點的各Ri區(qū)域的掃描就此結(jié)束,由此得到的4-幾何結(jié)構(gòu)生成圖中所有的邊的集合就包含著我們所需要的最小生成樹;
(2).在上述生成圖的基礎(chǔ)上用Kruskal方法構(gòu)造最小生成樹,并同時構(gòu)造相應(yīng)的二叉樹,把合適的三點組加入到查詢隊列中以備進行優(yōu)化之用
(2.1).把生成圖中的邊按照邊長的長短非減排列;
(2.2).按下述Kruskal方法從中選出一些邊構(gòu)成最小生成樹先假設(shè)生成樹T一開始的邊數(shù)是零,再按照非減排列,依次考慮每條邊,若所考慮的邊的兩個端點在生成樹T中尚未連通,則該邊將被包含于生成樹T中,否則,將被排除,當生成圖中所有的邊都被考慮后,就得到生成樹T的最小生成樹;
(2.3).建立與上述最小生成樹對應(yīng)的二叉樹
最小生成樹中的一條邊ab,它對應(yīng)于二叉樹中用該邊的二個頂點即端點(a,b)表示的一個內(nèi)結(jié)點;
最小生成樹中的一個頂點對應(yīng)于二叉樹中的一個葉子結(jié)點;
(3).利用Tarjan的離線最小共同祖先方法產(chǎn)生頂點對所對應(yīng)的最長邊,即頂點-邊對所述最長邊即最小生成樹中通過一對頂點的所有邊中最長的一條,它也是二叉樹中內(nèi)結(jié)點所對應(yīng)的最小生成樹中該內(nèi)結(jié)點所對應(yīng)的一條邊,它也可以是相鄰兩個內(nèi)結(jié)點所對應(yīng)的最小生成樹中兩條邊中最長的一條;
(4).用4-幾何結(jié)構(gòu)的三點組并結(jié)合上述最小生成樹得到OST-T方法構(gòu)造的斯坦納樹對生成圖中的每一條邊,考慮和它任一端點相連的頂點,此頂點和這條邊的兩個端點即構(gòu)成了一個三點組,按此方法找出最小生成樹中排除了重復的就是我們用于優(yōu)化的對象;把三點組的三個頂點進行連接(可能需要添加斯坦納點)時,一般來說將產(chǎn)生兩個回路,這樣就需要找到兩個最長邊,他們分別對應(yīng)于兩個頂點,也即對應(yīng)于二叉樹中的兩個最小共同祖先結(jié)點;我們采用以下兩種方法中的任何一種找到兩個最長邊
(4.1).第一種方法
找到該三點組的三個頂點中位于對應(yīng)二叉樹中層數(shù)最高的那個點,這個層數(shù)最高的點與其他兩個點分別對應(yīng)的兩個最小共同祖先結(jié)點就是我們進行優(yōu)化所需要的兩個最長邊;
(4.2).第二種方法
先對該三點組中的三個頂點進行兩兩組合,可得到三個兩兩頂點組合,然后在對應(yīng)二叉樹中分別找到這三個兩兩頂點組合的三個最小共同祖先結(jié)點,會發(fā)現(xiàn)其中必然有兩個最小共同祖先結(jié)點是重復的,最后還是得到兩個最小共同祖先結(jié)點所對應(yīng)的兩條需要刪除的最長邊;
(5).上述(1)→(4)的步驟可多次執(zhí)行,不斷優(yōu)化所得結(jié)果;
在非減排列所述的頂點集時,是按照
的值的大小來排列的,x,y分別為每個頂點的橫坐標和縱坐標。
在表1中,我們將兩個方法的線長結(jié)果與2-幾何結(jié)構(gòu)下的最小生成樹的線長進行比較。在表2中,我們將方法的線長結(jié)果和運行時間與Kahng等人的4-幾何結(jié)構(gòu)Steiner樹構(gòu)造方法——Batched Greedy[參見文獻Andrew B.Kahng,Ion I.Mandoiu,Alexander Z.Zelikovsky.Highly Scalable Algorithms for Rectilinear and Octilinear Steiner Trees.InProc Asia-Pacific Design Automation Conference(ASP-DAC),2003]比較,他們的方法理論上有O(nlog2n)的運行時間和不錯的線長結(jié)果。為了公平地進行比較,所有的程序都在相同的機器上運行——一個運行了UNIX操作系統(tǒng)的Sun V880工作站。我們的測試例子包括兩種類型,一種是隨機生成的例子,大小從10個頂點到100000個頂點;另一種是從實際工業(yè)設(shè)計中提取的例子,大小從330個頂點到23000個頂點。對每個大小的輸入,我們都進行10次測試,給出對于最小生成樹的平均線長縮短值(百分比),和平均運行時間(秒)。
表1 相對2-幾何結(jié)構(gòu)最小生成樹的線長縮短
表2 相對4-幾何結(jié)構(gòu)下最小生成樹的縮短比率和平均運行時間
表1的結(jié)果顯示我們的兩個方法對于不同的輸入都能夠大幅度地減少線長,對于隨機生成的例子,減少的程度在18%-20%,而以往的絕大部分方法能夠減少的程度都不超過17%。對VLSI設(shè)計中的實例,減少的程度要小一些,這與測試例子本身的特性有關(guān)。另外,OST-T由于考慮的情況更全面,結(jié)果也稍好一些。
表2的結(jié)果顯示OST-E比Kahng等人的方法Batched Greedy[參見文獻Andrew B.Kahng,Ion I.Mandoiu,Alexander Z.Zelikovsky.Highly Scalable Algorithms for Rectilinearand Octilinear Steiner Trees.InProc Asia-Pacific Design Automation Conference(ASP-DAC),2003]速度有明顯改善并且有接近的線長縮短水平。當頂點數(shù)目為5000時,OST-E的運行時間為Batched Greedy的57%;當頂點數(shù)目為50000時,OST-E的運行時間為BatchedGreedy的20%。在線長結(jié)果上,OST-E也僅比Batched Greedy多不到0.1個百分點。而OST-T在某些例子上比Kahng等人的方法結(jié)果還要好。不過目前OST-T的運行時間還比較多,這是可以通過對代碼的完善來降低的。
一般而言,當點集規(guī)模較小時,OST-T方法和OST-E方法得到的結(jié)果非常相似。
圖14-幾何結(jié)構(gòu)下到某個頂點距離相等點集所構(gòu)成的外輪廓。
圖2構(gòu)造生成圖的流程圖。
圖3一棵最小生成樹和其對應(yīng)的二叉樹示意圖。
(a)一棵最小生成樹;
(b)對應(yīng)的二叉樹。
圖4優(yōu)化頂點-邊對的示意圖。
(a)優(yōu)化操作之前;
(b)優(yōu)化操作之后。
圖5一般情況下的一條邊的可見頂點與該邊某個端點相連的示意圖。
圖6單個空三點組在生成圖中通常有至少兩條相連的邊的示意圖。
圖7方法舉例說明的示意圖。
(a)一個待連的5頂點線網(wǎng);
(b)方法第一步,對線網(wǎng)進行掃描,首先按照區(qū)域R1方向進行掃描后的結(jié)果;
(c)方法第一步,對線網(wǎng)進行掃描,對其他各個區(qū)域方向進行掃描的結(jié)果;
(d)方法第二步,在生成圖的基礎(chǔ)上用Kruskal方法構(gòu)造出的最小生成樹;
(e)方法第二步,構(gòu)造出相應(yīng)的二叉樹;
(f)OST-E方法第四步,進行變化后的結(jié)果;
(g)OST-T方法第四步,進行變化后的結(jié)果。
具體實施例方式
為了實現(xiàn),或者說是具體實施本項發(fā)明,我們給出以下關(guān)于發(fā)明實施的描述。
實施本發(fā)明的計算機系統(tǒng)本發(fā)明所設(shè)計的總體布線軟件要在一個具體的計算機系統(tǒng)上得以實施,該計算機系統(tǒng)具體描述如下。
一臺Sun公司的V880型工作站;
Unix操作系統(tǒng);
標準C編程語言;
Vi編輯器、gcc編譯器、gdb調(diào)試工具等。
在下面的介紹中,名詞“點”是泛指一個點;“頂點”是指我們考慮的圖中的一個點;“端點”特指我們考慮的圖中某條邊兩端的兩個頂點;“結(jié)點”指后面介紹到的二叉樹中的點。
1.4-幾何結(jié)構(gòu)生成圖的構(gòu)造
首先,需要考慮如何劃分平面以利于連線。對任何一個頂點s,我們考慮到s距離(是指4-幾何結(jié)構(gòu)定義下的距離)相等的點集所構(gòu)成的外輪廓,如圖1所示,即那個八邊形的周邊。在這個外輪廓的基礎(chǔ)上我們可以將平面以s為中心劃分成8個區(qū)域,即R1-R8。
可以證明圖1中的每個區(qū)域Ri(i=1,2...8)具有唯一性(uniqueness property)。即對任何兩點p,q∈R,‖pq‖4≤max(‖sp‖4,‖sq‖4),這里符號‖pq‖4表示在4-幾何結(jié)構(gòu)下兩點的距離。
上面的性質(zhì)對每個頂點都是成立的,即以每個頂點為中心,都能夠?qū)⑵矫鎰澐譃?個區(qū)域,在每個區(qū)域中,僅需要將這個頂點和距離它最近的頂點連接起來。對每個頂點這樣操作后得到的邊的集合就能夠包含最小生成樹。這是我們得以構(gòu)造一個勢(圖的邊的數(shù)目稱為圖的勢)為O(n)的生成圖的理論基礎(chǔ)。這樣的劃分能夠大大減少搜索最小生成樹的空間,從而提高效率。
具體地,我們用一個掃描方法來構(gòu)造生成圖,其對應(yīng)的流程圖如圖2所示。
在這個方法中,我們按照前面描述的區(qū)域Ri(i=1,2...8)方向來分別進行掃描。這里,“按區(qū)域Ri方向進行掃描”是指在對頂點集掃描的過程中,對于任一頂點s,僅僅將它與滿足這樣條件的頂點相連該頂點處于以所述任一頂點s為中心劃分的區(qū)域Ri中,且距離s最近。下面是按照某區(qū)域Ri(參見圖1)方向進行掃描的方法
(1)頂點集排列為了對每個頂點找到在以它為中心的區(qū)域Ri中距離它最近的頂點,首先將所有頂點按照到某個假想點的距離進行非減排列(即排列中的每一項總是小于或等于其后面的項)。這個假想點的設(shè)置根據(jù)各個區(qū)域Ri不同而不同,目的是為了使所有頂點都處于以假想點為中心劃分的區(qū)域Ri中。例如,在考慮區(qū)域R1時,我們將假想點設(shè)置在(-∞,-∞)的位置,這樣所有頂點都在以假想點為中心劃分的區(qū)域R1中。然后我們可以按照各頂點到此假想點的距離來排列這些頂點(實際計算中,可以按照
值的大小來排列頂點;x,y為每個頂點的橫、縱坐標)。
(2)掃描頂點集,更新頂點集和邊的互連依次掃描在(1)中排列好的頂點集中的頂點,當某個頂點p已經(jīng)被掃描到后,在接下來的掃描過程中第一個出現(xiàn)在頂點p的Ri區(qū)域中(即以其為中心劃分的區(qū)域Ri中)的頂點就是在p的Ri區(qū)域中距離頂點p最近的頂點(稱為最近相鄰點)。
我們用動態(tài)集合Ai來保存那些已經(jīng)被掃描到但還未找到最近相鄰點的頂點,我們稱這種頂點為等待點。每當一個新的頂點被掃描到后,我們在集合Ai中尋找所有滿足如下條件的等待點新頂點處于等待點的Ri區(qū)域。在將新頂點和這些滿足條件的等待點連接后,就將這些滿足條件的等待點從集合Ai中刪除。然后,將這個新頂點加入到集合Ai之中。
當所有頂點都被掃描過后,對區(qū)域Ri的掃描結(jié)束。
當然,我們需要對其他區(qū)域方向進行類似的掃描。需要注意的是,我們只需要考慮區(qū)域R1到R4方向,因為其他4個區(qū)域方向的連接情況已經(jīng)在這4個區(qū)域方向的連接中表現(xiàn)出來了(例如,頂點A在頂點B的R5區(qū)域,等價于頂點B在頂點A的R1區(qū)域。即頂點A、B之間如果有連線,一定已經(jīng)在掃描區(qū)域R1方向中時被發(fā)現(xiàn)了,所以不需要再掃描R5區(qū)域方向)。
2.OST-E方法的Steiner樹構(gòu)造
在有了上面的4-幾何結(jié)構(gòu)生成圖后,采用公知的Kruskal方法[參見文獻T.H.Cormen,C.E.Leiserson,and R.H.Rivest,“Introduction to Algorithm”,MIT Press,1989]構(gòu)造出最小生成樹,并對構(gòu)造Steiner樹提供有用信息。具體地,Kruskal方法將生成圖中的所有邊按照長度進行非減排列(即排列中的每一項總是小于或等于其后面的項),并依次考慮每條邊。我們另外假設(shè)某生成樹T一開始包括0條邊。如果在考慮生成圖中的某條邊時,這條邊的兩個端點在生成樹T中尚未連通,那么這條邊將被包含于生成樹T中,否則就將被排除。在生成圖中所有邊都被考慮后,得到的生成樹T就是一棵最小生成樹。
最小生成樹的構(gòu)造過程可以用一棵二叉樹來代表,其中的葉子結(jié)點代表最小生成樹的頂點而內(nèi)結(jié)點代表最小生成樹的邊。如圖3所示,其中圖3(a)表示了一棵最小生成樹,圖3(b)表示了其對應(yīng)的二叉樹(為了更明確的體現(xiàn)最小生成樹與其對應(yīng)二叉樹的關(guān)系,我們用符號(a,b)這樣一個整體來表示二叉樹中的一個內(nèi)結(jié)點,對應(yīng)于最小生成樹中的一條邊;而直接用符號a等來表示二叉樹中的一個葉子結(jié)點,對應(yīng)于最小生成樹中的一個頂點)。當生成圖中的一條邊被包含于最小生成樹中,則同時在二叉樹中創(chuàng)建一個結(jié)點用于代表這條邊,它的兩個子結(jié)點代表這條邊所連接的兩個部分。
我們還可以看出,最小生成樹中兩頂點間的最長邊即對應(yīng)于二叉樹中兩結(jié)點(這兩個結(jié)點對應(yīng)于最小生成樹中的那兩個頂點)間的最小共同祖先結(jié)點(共同祖先結(jié)點指同時是兩個結(jié)點的祖先結(jié)點的結(jié)點,最小共同祖先結(jié)點即層數(shù)最低的共同祖先結(jié)點,祖先結(jié)點的定義見附錄)。舉例而言,圖3(a)中頂點p和b之間的最長邊(b,c)就是圖3(b)中結(jié)點p和b在二叉樹中的最小共同祖先結(jié)點(b,c)。
最后,設(shè)計4-幾何結(jié)構(gòu)邊替換方法,并結(jié)合上面構(gòu)造出的最小生成樹得到OST-E方法構(gòu)造的Steiner樹。利用上述二叉樹可以容易解決連接頂點-邊對后刪除回路中最長邊的問題在連接一個頂點到一條邊形成回路后,我們只需要根據(jù)對應(yīng)的二叉樹,找到所述邊的兩個端點中第一個與所述頂點相連的端點,然后再找到已找出的這個端點和所述頂點在二叉樹中對應(yīng)結(jié)點的最小共同祖先結(jié)點所對應(yīng)的邊,將這條邊從回路中刪除即可。例如,在圖4(a)中,頂點p和邊(a,b)形成的頂點-邊對可以被連接,根據(jù)圖3(b)中的二叉樹,邊(a,b)的兩個端點a和b中,b和p是首先連接的,所以需要刪除的是結(jié)點p和b之間的最小共同結(jié)點所對應(yīng)的最長邊(b,c),從回路中刪除(b,c)即得到圖4(b)中的新連接。
另一個關(guān)鍵的問題就是如何尋找合適的頂點-邊對進行優(yōu)化??紤]最小生成樹中所有的O(n2)個頂點-邊對顯然會大大降低效率。我們可以直接從生成圖中獲得所需的信息如果一個頂點對某條邊是“可見”的(“可見”比較直觀的解釋是在這個頂點和邊之間沒有其他的頂點或邊),那么在生成圖中這個頂點通常會至少與這條邊的一個端點相連。如圖5所示,如果頂點p對于邊(a,b)是可見的,通常p會至少與(a,b)的一個端點相連。這樣,對于最小生成樹中的每條邊,我們只需要考慮那些在生成圖中和其相連的頂點。由于整個生成圖的勢為O(n),因此需要考慮的頂點-邊對的數(shù)目也是O(n)的,這大大少于所有O(n2)個頂點-對,有效的提高了效率。
3.OST-T方法的Steiner樹構(gòu)造
OST-T方法中涉及的生成圖的內(nèi)容和上述OST-E方法中的相同,這里不再重復。
這里只介紹如何找到需要優(yōu)化的三點組我們發(fā)現(xiàn)通常一個空三點組(指的是在包含這個三點組的最小矩形內(nèi)沒有其他頂點),在生成圖中至少含有兩條相連的邊。如圖6所示,一個三點組(p,a,b),通常會有兩條相連的邊(p,a),(p,b)。另一個三點組(p,b,c),通常會有兩條相連的邊(p,b),(c,b)。這樣,我們就可以利用生成圖來獲得三點組。
對生成圖中的每一條邊,考慮和它任一端點相連的頂點,此頂點和這條邊的兩個端點即構(gòu)成了一個三點組,按此方法找出最小生成樹中排除了重復的就是我們用于優(yōu)化的對象;把三點組的三個頂點進行連接(可能需要添加斯坦納點)時,一般來說將產(chǎn)生兩個回路,這樣就需要找到兩個最長邊,他們分別對應(yīng)于兩個頂點,也即對應(yīng)于二叉樹中的兩個最小共同祖先結(jié)點;我們采用以下兩種方法中的任何一種找到兩個最長邊
(1)第一種方法找到該三點組的三個頂點中位于對應(yīng)二叉樹中層數(shù)最高的那個點,這個層數(shù)最高的點與其他兩個點分別對應(yīng)的兩個最小共同祖先結(jié)點就是我們進行優(yōu)化所需要的兩個最長邊。
(2)第二種方法先對該三點組中的三個頂點進行兩兩組合,可得到三個兩兩頂點組合,然后在對應(yīng)二叉樹中分別找到這三個兩兩頂點組合的三個最小共同祖先結(jié)點,會發(fā)現(xiàn)其中必然有兩個最小共同祖先結(jié)點是重復的,最后還是得到兩個最小共同祖先結(jié)點所對應(yīng)的兩條需要刪除的最長邊。
由于生成圖的勢為O(n),因此我們將得到O(n)個三點組,這些三點組幾乎包括了所有的空三點組。如果和OST-E比較,這些三點組包括了所有的頂點-邊對,因此將能有更好的優(yōu)化結(jié)果,當然相應(yīng)地需要較長的運行時間。
4.方法的性能分析
這兩個方法的運行時間由構(gòu)造生成圖和邊排序所需要的時間來決定。其中,構(gòu)造生成圖的時間根據(jù)文獻[H.Zhou,N.Shenoy,and W.Nicholls.Efficient spanning treeconstruction without Delaney triangulation.Information Processing Letter,81(5),2002.]和[H.Zhou.Efficient Steiner Tree Construction Based on Spanning Graph.ACMInternational Symposium on Physical Design,Monterey,CA,2003]可知,需要O(nlogn);邊排序的時間一般采用快速排序方法只需要O(nlogn)。另外,由于生成圖的邊數(shù)為O(n),Kruskal方法和Tarjan的離線最小共同祖先方法[參見文獻T.H.Cormen,C.e.Leiserson,and R.H.Rivest.Introduction to Algorithm.MIT Press,1989](另參見附錄中的算法偽代碼)都需要O(nα(n))時間,其中α(n)是Ackermann函數(shù)的反函數(shù),增長非常慢[參見文獻T.H.Cormen,C.E.Leiserson,and R.H.Rivest,“Introduction to Algorithm”,MIT Press,1989]。因此,這兩個方法的時間效率都是很高的,其中OST-E有著更小的常數(shù)因子,會更快一些;而OST-T考慮的情況更多,能夠得到更好的布線結(jié)果。
方法過程的具體描述
OST-E方法
(1)利用4-幾何結(jié)構(gòu)下的生成圖方法對給定線網(wǎng)頂點集合構(gòu)造生成圖G。
(2)利用Kruskal方法產(chǎn)生最小生成樹,同時也產(chǎn)生了相應(yīng)的二叉樹。把合適的頂點-邊對加入到查詢隊列中以備進行優(yōu)化之用。
(3)利用Tarjan的離線最小共同祖先方法,產(chǎn)生所有頂點對所對應(yīng)的最長邊。
(4)計算所有合適的頂點-邊對中把頂點連接到邊所能縮短的線長值,即采用公式所能縮短的線長值=預(yù)刪除的邊-最短路徑連接,再按照這個“所能縮短的線長值”進行非減順序排列作為優(yōu)化操作的順序,一個頂點-邊對只有當其中的邊和為優(yōu)化而需要刪除的邊都還存在時才能實現(xiàn)結(jié)果的改進。
OST-T方法
(1)利用4-幾何結(jié)構(gòu)下的生成圖方法對給定線網(wǎng)頂點集合構(gòu)造生成圖G。
(2)利用Kruskal方法產(chǎn)生最小生成樹,同時也產(chǎn)生了相應(yīng)的二叉樹。把合適的三點組加入到查詢隊列中以備進行優(yōu)化之用。
(3)利用Tarjan的離線最小共同祖先方法,產(chǎn)生所有頂點對所對應(yīng)的最長邊。
(4)計算在步驟(2)中產(chǎn)生的每個三點組所能縮短的線長值,按照這個值的非減順序依次來重新連接三點組。一個三點組只有當需要刪除的邊都還沒有被刪除時才能實現(xiàn)改進。
以下選取了一個5頂點的線網(wǎng)對本方法進行具體說明,示意圖參見圖7(a)-7(g)。圖7(a)為該線網(wǎng)。
第一步對線網(wǎng)按照不同區(qū)域方向依次進行掃描,圖7(b)是首先按照區(qū)域R1方向進行掃描后的結(jié)果。具體的說,此時假想點設(shè)置在(-∞,-∞)的位置,并且按照
的大小來非減排列各個頂點(x,y為每個頂點的橫、縱坐標),則各頂點被掃描到的順序是B→A→E→C→D。下面列出了對區(qū)域R1按B→A→E→C→D順序掃描到每個頂點時進行的操作
頂點B是第一個被掃描到的頂點,因此此時集合A1中的元素為{B};
頂點A頂點A不在頂點B的R1區(qū)域中,于是集合A1中的元素變?yōu)閧B,A};
頂點E頂點E既不在頂點B也不在頂點A的R1區(qū)域中,此時集合A1中的元素變?yōu)閧B,A,E};
頂點C頂點C在頂點B的R1區(qū)域中,于是連接頂點B和頂點C,并在集合A1中刪除頂點B,然后添加新頂點C,此時集合A1中的元素變?yōu)閧A,E,C};
頂點D頂點D在頂點E的R1區(qū)域中,于是連接頂點D和頂點E,并在集合A1中刪除頂點E,然后添加新頂點D,此時集合A1中的元素變?yōu)閧A,C,D}。
至此,本次對區(qū)域R1的掃描結(jié)束。
接著,用同樣的方法對R2→R4區(qū)域方向進行掃描(由于前面所述的對稱性,只需要掃描R1→R4),結(jié)果如圖7(c)所示。圖7(c)就是構(gòu)造出的生成圖,這是進一步進行最小生成樹構(gòu)造的基礎(chǔ),并能夠提供信息給基于頂點-邊對或基于三點組的Steiner樹構(gòu)造方法。
第二步在生成圖的基礎(chǔ)上用Kruskal方法構(gòu)造最小生成樹,并同時構(gòu)造相應(yīng)的二叉樹。生成圖中的邊按照長短非減排列如下DE,AB,CD,CB,AC,BE;我們將按該照順序考察它們,并基于Kruskal方法從中選出一些邊構(gòu)成最小生成樹。圖7(d)就是獲得的最小生成樹,各條邊被加入的順序如下DE,AB,CD,CB。相應(yīng)的二叉樹也是按照這個順序構(gòu)造起來的,如圖7(e)所示。
第三步利用Tarjan的離線最小共同祖先方法產(chǎn)生頂點對所對應(yīng)的最長邊。如圖7(e)中的二叉樹所示,我們可以容易地得到各個頂點對對應(yīng)的最長邊,如頂點對D,E對應(yīng)的最長邊就是邊(D,E);頂點對C,E對應(yīng)的最長邊是(C,D);頂點對A,C對應(yīng)的最長邊是(B,C)等等。
OST-E方法和OST-T方法的主要區(qū)別在于最后一步,分別介紹如下
OST-E方法的第四步計算將頂點連接到邊所能縮短的線長值,按照這個值的非減順序重新來連接頂點到邊,一個頂點-邊對只有當需要連接的邊和需要刪除的邊都還沒有被刪除時才能被改進?;谏蓤D的性質(zhì),我們選取的頂點-邊對滿足如下性質(zhì)此頂點至少與這條邊的一個端點相連。下面是在這個例子中我們考察的頂點-邊對以及每對能得到的收益(如果沒有收益,則標為0)
(DE,C)0;
(DE,B)0;
(AB,C)
(AB,E)0;
(CD,E)0;
(CD,A)0;
(CD,B)
(BC,A)
(BC,D)
(BC,E)
我們不妨首先選取(BC,E)進行變化,在這次變換之后,其他收益大于0的頂點-邊對由于對應(yīng)的要刪除的邊已經(jīng)被刪除將無法進行變換。結(jié)果如圖7(f)所示。至此,OST-E方法的一個優(yōu)化過程結(jié)束。
OST-T方法的第四步計算每個三點組所能縮短的線長值,按照這個值的非減順序依次來重新連接三點組。一個三點組只有當需要連接的邊和需要刪除的邊都還沒有被刪除時才能被改進。這里,三點組的選擇滿足如下性質(zhì)三點組中至少有兩點間的連線屬于生成圖。由此我們得到如下的三點組
(CDE),(BDE),(BCD),(ACD),(ABC),(ABE),(BCE)
上面的三點組中已經(jīng)排除了重復計算的三點組。對這些三點組進行優(yōu)化可以得到和圖7(f)一樣的結(jié)果。至此,OST-T方法的一個優(yōu)化過程結(jié)束。
然而,圖7(f)的結(jié)果還可以進一步地優(yōu)化,OST-E方法和OST-T方法的第一到第四步都可以進行多次執(zhí)行,不斷優(yōu)化結(jié)果,直到結(jié)果無法優(yōu)化(不再增加新的點)為止。這里以O(shè)ST-E方法為例,在圖7(f)中,我們考慮如下的頂點-邊對
(DE,C)0;
(DE,O)0;
(CO,D)
(CO,E)0;
(CO,A)0;
(CO,B)0;
(AB,C)0;
(AB,O)0;
(BO,C)0;
(BO,E)0;
(BO,A)0;
(OE,C)0;
(OE,D)0;
(OE,B)0;
對頂點-邊對(CO,D)進行優(yōu)化,能夠得到如圖7(g)的結(jié)果。
如果使用OST-T方法,能得到一樣的結(jié)果。
權(quán)利要求
1.4-幾何結(jié)構(gòu)下O(nlogn)的斯坦納樹方法,其特征在于它以計算機為工具,首先在4-幾何結(jié)構(gòu)下構(gòu)造出最小生成樹,再結(jié)合最小生成樹和邊替換方法構(gòu)造出Steiner即斯坦納樹;該4-幾何結(jié)構(gòu)下的斯坦納樹方法依次具體由以下步驟組成
(1).4-幾何結(jié)構(gòu)生成圖的構(gòu)造,它是一種在給定平面的一組點上包含了最小生成樹的圖對于我們所考慮的圖中的每一點即頂點,都可以以該頂點s為中心,把平面劃分為8個區(qū)域,即R1-R8,所有與該頂點s的4-幾何結(jié)構(gòu)距離相等的點集所構(gòu)成的外輪廓,即內(nèi)含所述8個區(qū)域的八邊形的周邊;再對每一個頂點進行如下操作在每個區(qū)域Ri中,只需把該頂點和距離它最近的頂點連接起來,所得到的邊的集合就包含著最小生成樹,它依次含有以下步驟
(1.1).構(gòu)造頂點集排列,以便為每一個頂點找到在以該頂點為中心的區(qū)域Ri中距離該頂點最近的其他頂點即把區(qū)域Ri中所有頂點按照到某個假想點的距離非減排列,即排列中的每一項總是小于或等于其后面的項,所述假想點的設(shè)置按區(qū)域Ri而任定;
(1.2).掃描頂點集,更新頂點集和邊的互連在以各頂點為中心劃分的區(qū)域Ri中,依次從區(qū)域R1→R4掃描上述按非減序列排列好的頂點集中的所有頂點,當某個頂點p已被掃描到后,在接下來的掃描過程中,第一個出現(xiàn)在所述頂點p的Ri區(qū)域中的頂點就是在所述p點的Ri區(qū)域中距離已被掃描的頂點p最近的頂點,即最近相鄰點;對于那些已經(jīng)被掃描到但還未找到最近相鄰點的頂點,即所謂的等待點,則被保存在動態(tài)集合Ai中;每掃描一個頂點,就在等待點集合Ai中尋找所有和該剛掃描的那個頂點處于同一個Ri區(qū)域中的等待點,若有,便把所述那個頂點和所有這些滿足條件的等待點相連,再把所有這些滿足條件的等待點從等待點集合Ai中刪去,然后把所述那個頂點加入到等待點集合Ai中;
(1.3).當所有頂點都按自己的R1→R4區(qū)域被掃描過后,對各頂點的各Ri區(qū)域的掃描就此結(jié)束,由此得到的4-幾何結(jié)構(gòu)生成圖中所有的邊的集合就包含著我們所需要的最小生成樹;
(2).在上述生成圖的基礎(chǔ)上用Kruskal方法構(gòu)造最小生成樹,并同時構(gòu)造相應(yīng)的二叉樹,把合適的頂點-邊對加入到查詢隊列中以備進行優(yōu)化之用
(2.1).把生成圖中的邊按照邊長的長短非減排列;
(2.2).按下述Kruskal方法從中選出一些邊構(gòu)成最小生成樹先假設(shè)生成樹T一開始的邊數(shù)是零,再按照非減排列,依次考慮每條邊,若所考慮的邊的兩個端點在生成樹T中尚未連通,則該邊將被包含于生成樹T中,否則,將被排除,當生成圖中所有的邊都被考慮后,就得到生成樹T的最小生成樹;
(2.3).建立與上述最小生成樹對應(yīng)的二叉樹
最小生成樹中的一條邊ab,它對應(yīng)于二叉樹中用該邊的二個頂點即端點(a,b)表示的一個內(nèi)結(jié)點;
最小生成樹中的一個頂點對應(yīng)于二叉樹中的一個葉子結(jié)點;
(3).利用Tarjan的離線最小共同祖先方法產(chǎn)生頂點對所對應(yīng)的最長邊,即頂點-邊對所述最長邊即最小生成樹中通過一對頂點的所有邊中最長的一條,它也是二叉樹中內(nèi)結(jié)點所對應(yīng)的最小生成樹中該內(nèi)結(jié)點所對應(yīng)的一條邊,它也可以是相鄰兩個內(nèi)結(jié)點所對應(yīng)的最小生成樹中兩條邊中最長的一條;
(4).用4-幾何結(jié)構(gòu)邊替換方法并結(jié)合上述最小生成樹得到OST-E方法構(gòu)造的斯坦納樹即解決連接頂點-邊對后刪除回路中最長邊的問題,其步驟如下
(4.1).先尋找最小生成樹或二叉樹中合適的頂點-邊對后,再優(yōu)化最小生成樹中的每條邊,只考慮那些最小生成樹中和其相連的頂點;
(4.2).對于每一個頂點-邊對,根據(jù)對應(yīng)的二叉樹,找到所述邊的兩個端點中第一個與(4.1)中所述頂點相連的端點,然后再找到已找出的這個端點和所述頂點在二叉樹中對應(yīng)結(jié)點的最小共同祖先結(jié)點所對應(yīng)的邊,把這條邊作為“預(yù)刪除的邊”準備從所述頂點到所述邊的回路中刪除;
(4.3).再在此基礎(chǔ)上,準備把所述頂點和所述邊進行“最短路徑連接”;
(4.4).計算所有合適的頂點-邊對中把頂點連接到邊所能縮短的線長值,即采用公式所能縮短的線長值=預(yù)刪除的邊-最短路徑連接,再按照這個“所能縮短的線長值”進行非減順序排列作為優(yōu)化操作(即刪除“預(yù)刪除的邊”并進行“最短路徑連接”)的順序,一個頂點-邊對只有當其中的邊和“預(yù)刪除的邊”都還存在時才能刪除“預(yù)刪除的邊”并進行“最短路徑連接”以實現(xiàn)結(jié)果的改進;
(5).上述(1)→(4)的步驟可多次執(zhí)行,不斷優(yōu)化所得結(jié)果;
2.4-幾何結(jié)構(gòu)下O(nlogn)的斯坦納樹方法,其特征在于它以計算機為工具,首先在4-幾何結(jié)構(gòu)下構(gòu)造出最小生成樹,再結(jié)合最小生成樹和三點組方法構(gòu)造出Steiner即斯坦納樹;該4-幾何結(jié)構(gòu)下的斯坦納樹方法依次具體由以下步驟組成
(1).4-幾何結(jié)構(gòu)生成圖的構(gòu)造,它是一種在給定平面的一組點上包含了最小生成樹的圖對于我們所考慮的圖中的每一點即頂點,都可以以該頂點s為中心,把平面劃分為8個區(qū)域,即R1-T8,所有與該頂點s的4-幾何結(jié)構(gòu)距離相等的點集所構(gòu)成的外輪廓,即內(nèi)含所述8個區(qū)域的八邊形的周邊;再對每一個頂點進行如下操作在每個區(qū)域Ri中,只需把該頂點和距離它最近的頂點連接起來,所得到的邊的集合就包含著最小生成樹,它依次含有以下步驟
(1.1).構(gòu)造頂點集排列,以便為每一個頂點找到在以該頂點為中心的區(qū)域Ri中距離該頂點最近的其他頂點即把區(qū)域Ri中所有頂點按照到某個假想點的距離非減排列,即排列中的每一項總是小于或等于其后面的項,所述假想點的設(shè)置按區(qū)域Ri而任定;
(1.2).掃描頂點集,更新頂點集和邊的互連在以各頂點為中心劃分的區(qū)域Ri中,依次從區(qū)域R1→R4掃描上述按非減序列排列好的頂點集中的所有頂點,當某個頂點p已被掃描到后,在接下來的掃描過程中,第一個出現(xiàn)在所述頂點p的Ri區(qū)域中的頂點就是在所述p點的Ri區(qū)域中距離已被掃描的頂點p最近的頂點,即最近相鄰點;對于那些已經(jīng)被掃描到但還未找到最近相鄰點的頂點,即所謂的等待點,則被保存在動態(tài)集合Ai中;每掃描一個頂點,就在等待點集合Ai中尋找所有和該剛掃描的那個頂點處于同一個Ri區(qū)域中的等待點,若有,便把所述那個頂點和所有這些滿足條件的等待點相連,再把所有這些滿足條件的等待點從等待點集合Ai中刪去,然后把所述那個頂點加入到等待點集合Ai中;
(1.3).當所有頂點都按自己的R1→R4區(qū)域被掃描過后,對各頂點的各Ri區(qū)域的掃描就此結(jié)束,由此得到的4-幾何結(jié)構(gòu)生成圖中所有的邊的集合就包含著我們所需要的最小生成樹;
(2).在上述生成圖的基礎(chǔ)上用Kruskal方法構(gòu)造最小生成樹,并同時構(gòu)造相應(yīng)的二叉樹,把合適的三點組加入到查詢隊列中以備進行優(yōu)化之用
(2.1).把生成圖中的邊按照邊長的長短非減排列;
(2.2).按下述Kruskal方法從中選出一些邊構(gòu)成最小生成樹先假設(shè)生成樹T一開始的邊數(shù)是零,再按照非減排列,依次考慮每條邊,若所考慮的邊的兩個端點在生成樹T中尚未連通,則該邊將被包含于生成樹T中,否則,將被排除,當生成圖中所有的邊都被考慮后,就得到生成樹T的最小生成樹;
(2.3).建立與上述最小生成樹對應(yīng)的二叉樹
最小生成樹中的一條邊ab,它對應(yīng)于二叉樹中用該邊的二個頂點即端點(a,b)表示的一個內(nèi)結(jié)點;
最小生成樹中的一個頂點對應(yīng)于二叉樹中的一個葉子結(jié)點;
(3).利用Tarjan的離線最小共同祖先方法產(chǎn)生頂點對所對應(yīng)的最長邊,即頂點-邊對所述最長邊即最小生成樹中通過一對頂點的所有邊中最長的一條,它也是二叉樹中內(nèi)結(jié)點所對應(yīng)的最小生成樹中該內(nèi)結(jié)點所對應(yīng)的一條邊,它也可以是相鄰兩個內(nèi)結(jié)點所對應(yīng)的最小生成樹中兩條邊中最長的一條;
(4).用4-幾何結(jié)構(gòu)的三點組并結(jié)合上述最小生成樹得到OST-T方法構(gòu)造的斯坦納樹對生成圖中的每一條邊,考慮和它任一端點相連的頂點,此頂點和這條邊的兩個端點即構(gòu)成了一個三點組,按此方法找出最小生成樹中排除了重復的就是我們用于優(yōu)化的對象;把三點組的三個頂點進行連接(可能需要添加斯坦納點)時,一般來說將產(chǎn)生兩個回路,這樣就需要找到兩個最長邊,他們分別對應(yīng)于兩個頂點,也即對應(yīng)于二叉樹中的兩個最小共同祖先結(jié)點;我們采用以下兩種方法中的任何一種找到兩個最長邊
(4.1).第一種方法
找到該三點組的三個頂點中位于對應(yīng)二叉樹中層數(shù)最高的那個點,這個層數(shù)最高的點與其他兩個點分別對應(yīng)的兩個最小共同祖先結(jié)點就是我們進行優(yōu)化所需要的兩個最長邊;
(4.2).第二種方法
先對該三點組中的三個頂點進行兩兩組合,可得到三個兩兩頂點組合,然后在對應(yīng)二叉樹中分別找到這三個兩兩頂點組合的三個最小共同祖先結(jié)點,會發(fā)現(xiàn)其中必然有兩個最小共同祖先結(jié)點是重復的,最后還是得到兩個最小共同祖先結(jié)點所對應(yīng)的兩條需要刪除的最長邊;
(5).上述(1)→(4)的步驟可多次執(zhí)行,不斷優(yōu)化所得結(jié)果;
3.根據(jù)權(quán)利要求1或2所述的4-幾何結(jié)構(gòu)下O(nlogn)的斯坦納樹方法,其特征在于在非減排列所述的頂點集時,是按照
的值的大小來排列的,x,y分別為每個頂點的橫坐標和縱坐標。
全文摘要
4-幾何結(jié)構(gòu)下O(nlogn)的斯坦納樹方法屬于ICCAD技術(shù)領(lǐng)域,其特征在于首先在4-幾何結(jié)構(gòu)下構(gòu)造出4-幾何結(jié)構(gòu)生成圖,然后基于該生成圖構(gòu)造出所求點集對應(yīng)的最小生成樹,再利用生成圖的性質(zhì),分別設(shè)計4-幾何結(jié)構(gòu)邊替換方法和三點組方法,分別結(jié)合最小生成樹和邊替換或三點組方法而得到斯坦納樹。它具有比O(n2)低的復雜度,在構(gòu)造斯坦納樹的效率也高。
文檔編號G06F17/50GK1558350SQ200410000098
公開日2004年12月29日 申請日期2004年1月14日 優(yōu)先權(quán)日2004年1月14日
發(fā)明者洪先龍, 經(jīng)彤, 楊旸, 朱祺 申請人:清華大學