集訓隊2006集維護森林連通性_第1頁
集訓隊2006集維護森林連通性_第2頁
集訓隊2006集維護森林連通性_第3頁
集訓隊2006集維護森林連通性_第4頁
集訓隊2006集維護森林連通性_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、維護森林連通性動態(tài)樹華東師大二附中陳首元動態(tài)樹維護一個森林支持邊的插入與刪除支持樹的合并與分離支持尋找路徑上費用最小的邊所有操作的均攤復雜度為O(logN)234567811020-20030-5-5Root(1,2,3,4,5,6,7,8)=1MinCost(6)=10Update(7,10)540Evert(6)新樹根Cut(4)Root(7,8)=4Link(3,4,10)動態(tài)樹的基本操作 Root(v) 返回包含節(jié)點v的樹的根MinCost(v) 返回v到根路徑上費用最小的邊Update(v,x)使v到樹根路徑上的邊的費用+x Link(v,w,x)將以v為根的樹連接到節(jié)點root(w

2、)上,(v,w)的費用為x Cut(v)刪除v與其父節(jié)點連接的邊Evert(v)使v成為新的根,并將v到原樹根上的邊反向操作的實現(xiàn)將樹中的邊分為實邊、虛邊兩種,每個節(jié)點最多向其子節(jié)點連出一條實邊將樹劃分為一些完全由實邊組成的路徑,只對這些路徑進行操作一條路徑頭尾路徑的基本操作Path(v):返回包含v的路徑 (每個路徑有一個標志)Head(p),Tail(p):返回首節(jié)點、尾節(jié)點Pmincost(p):返回p中費用最小的邊Pupdate(p,x:real):將p中每條邊的費用+xReverse(p):將p中的每條邊反向Concatenate(p,q,x) :添加邊(tail(p),head(q

3、))費用為x,將路徑p,q合并 Split(v):將v從路徑中刪除并把路徑分為兩部分SpliceSplice(p) :將路徑p向更靠近根的方向增長實現(xiàn)方法:把虛邊(tail(P),Parent(p) 變?yōu)閷嵾叄瑸榱司S護實邊的性質,將原來從Parent(P)中連出的邊設為虛邊ExposeExpose(v):將從v到樹根路徑上的所有邊設為實邊 實現(xiàn)方法:不斷調用splice直到根為止有了Expose(v),就可以實現(xiàn)所有動態(tài)樹操作了Link操作Procedure Link(v,w:vertex;x:real);Begin Concatenate(path(v),expose(w),x);End;C

4、ut操作Function Cut(v:vertex);Var p,q:path; x,y:real;Begin Expose(v); p,q,x,y:=split(v); Dparent(v):=nil; Return y;End;路徑結構用伸展樹保存路徑所有路徑操作都能用Splay實現(xiàn)對于Reverse與PUpdate操作,可以采用先存放修改標志,在訪問時修改的辦法在每次Split和Concatenate操作之后,Splay最左子孫,使它成為根復雜度分析(Expose分析)對于邊v-w(動態(tài)樹中,不是伸展樹中)如果v的子孫w的子孫一半,稱為A類邊,否則成為B類邊。顯然每個點最多連出一條類邊,

5、樹中每條路徑上最多有O(logN)條B類邊。令p為B類邊中的虛邊數。復雜度分析(Expose分析)一次Expose操作,將執(zhí)行數次Splice對于每次Splice:添加一條B類虛邊進入路徑:p+1這種情況最多發(fā)生O(logN)次添加一條A類虛邊進入路徑:p-1可能發(fā)生許多次,但代價是p,p是保持非負的。由上面分析可以看出平均每次expose操作要執(zhí)行O(logN)次路徑操作復雜度分析(Splay分析)勢函數定義r(x):x在動態(tài)樹中的子節(jié)點數的對數伸展樹的性質:每一次splay操作的均攤復雜度不超過:3(r(t)-r(x)+1 此性質在勢函數定義改變后依然成立復雜度分析Expose的均攤復雜度

6、3(r(root)-r(v)+(v到樹根路徑上的節(jié)點數)由Expose分析得到路徑上的節(jié)點數平均為O(logN)復雜度為O(logN)實現(xiàn)不保存整棵樹,而保存“虛擬樹”。虛擬樹中的頂點與動態(tài)樹中的是一一對應的。虛擬樹中的每個頂點最多連出兩條實邊,其余為虛邊,分別成為左兒子和右兒子,其他頂點稱為中間頂點。完全由實邊組成的子樹稱為實樹。 實現(xiàn)實現(xiàn)expose需要兩種操作:一種是splay,將一棵實樹(也是二叉樹),從某個節(jié)點伸展使這個節(jié)點成為這個實樹的根。第二種是splice,將某個節(jié)點的一個中間節(jié)點變?yōu)樽髢鹤?,左兒子變?yōu)橹虚g節(jié)點。執(zhí)行expose(v)操作需要分為三步。首先沿v往上到虛擬樹的樹根,對沿路的各實樹進行splay,執(zhí)行完這個步后從v到

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論