Binomial heaps,Fibonacci heaps,and applications.ppt
《Binomial heaps,Fibonacci heaps,and applications.ppt》由会员分享,可在线阅读,更多相关《Binomial heaps,Fibonacci heaps,and applications.ppt(71页珍藏版)》请在麦多课文档分享上搜索。
1、1,Binomial heaps, Fibonacci heaps, and applications,2,Binomial trees,B0,B1,B(i-1),B(i-1),Bi,3,Binomial trees,B0,B1,B(i-2),B(i-1),. . . . . .,Bi,4,Properties of binomial trees,1) | Bk | = 2k,2) degree(root(Bk) = k,3) depth(Bk) = k,= The degree and depth of a binomial tree with at most n nodes is at m
2、ost log(n).,Define the rank of Bk to be k,5,Binomial heaps (def),A collection of binomial trees at most one of every rank. Items at the nodes, heap ordered.,Possible rep: Doubly link roots and children of every nodes. Parent pointers needed for delete.,6,Binomial heaps (operations),Operations are de
3、fined via a basic operation, called linking, of binomial trees: Produce a Bk from two Bk-1, keep heap order.,7,Binomial heaps (ops cont.),Basic operation is meld(h1,h2):,Like addition of binary numbers.,B0,B1,B3,B4,B0,B3,h1:,h2:,+,B1,B4,B2,B2,B4,B4,B5,B5,8,Binomial heaps (ops cont.),Findmin(h): obvi
4、ous Insert(x,h) : meld a new heap with a single B0 containing x, with h,deletemin(h) : Chop off the minimal root. Meld the subtrees with h. Update minimum pointer if needed. delete(x,h) : Bubble up and continue like delete-min decrease-key(x,h,) : Bubble up, update min ptr if needed,All operations t
5、ake O(log n) time on the worst case, except find-min(h) that takes O(1) time.,9,Amortized analysis,We are interested in the worst case running time of a sequence of operations.,Example: binary counter single operation - increment,00000,00001,00010,00011,00100,00101,10,Amortized analysis (Cont.),On t
6、he worst case increment takes O(k). k = #digits,What is the complexity of a sequence of increments (on the worst case) ?,Define a potential of the counter:,Amortized(increment) = actual(increment) + , (c) = ?,11,Amortized analysis (Cont.),Amortized(increment1) = actual(increment1) + 1- 0,Amortized(i
7、ncrement2) = actual(increment2) + 2- 1,Amortized(incrementn) = actual(incrementn) + n- (n-1), ,iAmortized(incrementi) = iactual(incrementi) + n- 0,iAmortized(incrementi) iactual(incrementi) if n- 0 0,12,Amortized analysis (Cont.),Define a potential of the counter:, (c) = #(ones),Amortized(increment)
8、 = actual(increment) + ,Amortized(increment) = 1+ #(1 = 0) + 1 - #(1 = 0) = O(1),= Sequence of n increments takes O(n) time,13,Binomial heaps - amortized ana., (collection of heaps) = #(trees),Amortized cost of insert O(1) Amortized cost of other operations still O(log n),14,Binomial heaps + lazy me
9、ld,Allow more than one tree of each rank.,Meld (h1,h2) : Concatenate the lists of binomial trees. Update the minimum pointer to be the smaller of the minimums,O(1) worst case and amortized.,15,Binomial heaps + lazy meld,As long as we do not do a delete-min our heaps are just doubly linked lists:,4,1
10、1,6,9,5,9,Delete-min : Chop off the minimum root, add its children to the list of trees. Successive linking: Traverse the forest keep linking trees of the same rank, maintain a pointer to the minimum root.,16,Binomial heaps + lazy meld,Possible implementation of delete-min is using an array indexed
11、by rank to keep at most one binomial tree of each rank that we already traversed. Once we encounter a second tree of some rank we link them and keep linking until we do not have two trees of the same rank. We record the resulting tree in the array,Amortized(delete-min) = = (#(trees at the end) + #li
12、nks + max-rank) - #links (2log(n) + #links) - #links = O(log(n),17,Binomial heaps + lazy delete,Allow more than one tree of each rank.,Meld (h1,h2), Insert(x,h) - as before Delete(x,h) : simply mark x as deleted. Deletemin(h) : y = findmin(h) ; delete(y,h),How do we do findmin ?,18,Binomial heaps +
13、lazy delete,Traverse the trees top down purging deleted nodes and stopping at each non-deleted node,Do successive linking on the forest you obtain.,19,Binomial heaps + lazy delete,20,Binomial heaps + lazy delete,21,Binomial heaps + lazy delete (ana.),What is the amortized cost of find-min ?,Modify t
14、he potential a little: (collection of heaps) = #(trees) + #(deleted nodes),Insert, meld, delete : O(1) delete-min : like find-min,22,Binomial heaps + lazy delete (ana.),What is the amortized cost of find-min ?,Actual(purge) = #(nodes purged) + #(new trees),(purge) = #(new trees) - #(nodes purged),am
15、ortized(find-min) = amortized(purging) + amortized(successive linking + scan of undeleted nodes),We saw that: amortized(successive linking) = O(log(n),Amortized(purge) = actual(purge) + (purge),So, amortized(find-min) = O(log(n) + #(new trees) ),23,Binomial heaps + lazy delete (ana.),How many new tr
16、ees are created by the purging step ?,Proof.,Suppose the i-th purged node, 1 i p, had ki undeleted children. One of them has degree at least ki-1. Therefore in its subtree there are at least 2(ki-1) nodes.,Let p = #(nodes purged), n = total #(nodes),Then #(new trees) = O( p*(log(n/p)+ 1) ),So, amort
17、ized(find-min) = O( p*(log(n/p)+ 1) ),24,Binomial heaps + lazy delete (ana.),Proof (cont).,How large can k1+k2+ . . . +kp be such that i=1 2(ki-1) n ?Make all ki equal log(n/p) + 1, then i ki = p*(log(n/p)+ 1),p,25,Application: The round robin algorithm of Cheriton and Tarjan (76) for MST,We shall u
18、se a Union-Find data structure. The union find problem is where we want to maintain a collection of disjoint sets under the operations 1) S=Union(S1,S2) 2) S=find(x) Can do it in O(1) amortized time for union and O(k,n) amortized time for find, where k is the # of finds, and n is the number of items
19、 (assuming k n).,26,A greedy algorithm for MST,Start with a forest where each tree is a singleton. Repeat the following step until there is only one tree in the forest: Pick T F, pick a minimum cost edge e connecting a vertex of T to a vertex in T, add e to the forest (merge T and T to one tree),Pri
20、ms algorithm: picks always the same T,Kruskals algorithm: picks the lightest edge out of F,27,Cheriton & Tarjans ideas,Keep the trees in a queue, pick the first tree, T, in the queue, pick the lightest edge e connecting it to another tree T. Remove T from the queue, connect T and T with e. Add the r
21、esulting tree to the end of the queue.,28,Cheriton & Tarjan (cont.),T,e,T,T,T,e,29,Cheriton & Tarjan (implementation),The vertices of each tree T will be a set in a Union-Find data structure. Denote it also by T,Edges with one endpoint in T are stored in a heap data structure. Denoted by h(T). We us
22、e binomial queues with lazy meld and deletion.,Find e by doing find-min on h(T). Let e=(v,w). Find T by doing find(w). Then create the new tree by T= union(T,T) and h(T) = meld(h(T),h(T),30,Cheriton & Tarjan (implementation),Note: The meld implicitly delete edges. Every edge in h(T) with both endpoi
23、nts in T is considered as “marked deleted”. We never explicitly delete edges! We can determine whether an edge is deleted or not by two find operations.,31,Cheriton & Tarjan (analysis),Assume for the moment that find costs O(1) time. Then we can determine whether a node is marked deleted in O(1) tim
24、e, and our analysis is still valid. So, we have at most 2m implicit delete operations that cost O(m).at most n find operations that cost O(n).at most n meld and union operations that cost O(n).at most n find-min operations. The complexity of these find-min operations dominates the complexity of the
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BINOMIALHEAPS FIBONACCIHEAPS ANDAPPLICATIONSPPT
