![day110 陈启峰size balanced tree_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-8/28/abf61f88-b265-4c6d-bd5d-527217e9d7b1/abf61f88-b265-4c6d-bd5d-527217e9d7b11.gif)
![day110 陈启峰size balanced tree_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-8/28/abf61f88-b265-4c6d-bd5d-527217e9d7b1/abf61f88-b265-4c6d-bd5d-527217e9d7b12.gif)
![day110 陈启峰size balanced tree_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-8/28/abf61f88-b265-4c6d-bd5d-527217e9d7b1/abf61f88-b265-4c6d-bd5d-527217e9d7b13.gif)
![day110 陈启峰size balanced tree_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-8/28/abf61f88-b265-4c6d-bd5d-527217e9d7b1/abf61f88-b265-4c6d-bd5d-527217e9d7b14.gif)
![day110 陈启峰size balanced tree_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-8/28/abf61f88-b265-4c6d-bd5d-527217e9d7b1/abf61f88-b265-4c6d-bd5d-527217e9d7b15.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Size Balanced TreeChen Qifeng (Farmer John)Zhongshan Memorial Middle School, Guangdong, ChinaEmail:344368722QQ.comDecember 29, 2006AbstractThis paper presents a unique strategy for maintaining balance in dynamically changing Binary Search Trees that has optimal expected behavior at worst. Size Balan
2、ced Tree is, as the name suggests, a Binary Search Tree (abbr. BST) kept balanced by size. It is simple, efficient and versatile in every aspect. It is very easy to implement and has a straightforward description and a surprisingly simple proof of correctness and runtime. Its runtime matches that of
3、 the fastest BST known so far. Furthermore, it works much faster than many other famous BSTs due to the tendency of a perfect BST in practice. It supports not only typical primary operations but also Select and Rank.Key Words And PhrasesSize Balanced Tree SBTMaintainThis paper is dedicated to the me
4、mory of Heavens.1 IntroductionBefore presenting Size Balanced Trees it is necessary to explicate Binary Search Trees and rotations on BSTs, Left-Rotate and Right-Rotate.1.1 Binary Search TreeBinary Search Tree is a significant kind of advanced data structures. It supports many dynamic-set operations
5、, including Search, Minimum, Maximum, Predecessor, Successor, Insert and Delete. It can be used both as a dictionary and as a priority queue.A BST is an organized binary tree. Every node in a BST contains two children at most. The keys for compare in a BST are always stored in such a way as to satis
6、fy the binary-search-tree property:Let x be a node in a binary search tree. Then the key of x is not less than that in left subtree and not larger than that in right subtree.For every node t we use the fields of leftt and rightt to store two pointers to its children. And we define keyt to mean the v
7、alue of the node t for compare. In addition we add st, the size of subtree rooted at t, to keep the number of the nodes in that tree. Particularly we call 0 the pointer to an empty tree and s0=0.1.2 RotationsIn order to keep a BST balanced (not degenerated to be a chain) we usually change the pointe
8、r structure through rotations to change the configuration, which is a local operation in a search tree that preserves the binary-search-tree property.Figure1.1: The operation Left-Rotate(x) transforms the configuration of the two nodes on the right into the configuration on the left by changing a co
9、nstant number of pointers. The configuration on the left can be transformed into the configuration on the right by the inverse operation, Right-Rotate(y).1.2.1 Pseudocode Of Right-RotateThe Right-Rotate assumes that the left child exists.Right-Rotate (t)123456klefttleftt rightk rightk tsk stst sleft
10、t+srightt+1 tk1.2.2 Pseudocode Of Left-RotateThe Left-Rotate assumes that the right child exists.Left-Rotate (t)123456krightt rightt leftk leftk tsk stst sleftt+srightt+1 tk2 Size Balanced TreeSize Balanced Tree (abbr. SBT) is a kind of Binary Search Trees kept balanced by size. It supports many dyn
11、amic primary operations in the runtime of O(logn):Insert(t,v)Inserts a node whose key is v into the SBT rooted at t.Delete(t,v)Deletes a node whose key is v from the SBT rooted at t. In the case that no such a node in the tree, deletes the node searched at last.Find(t,v)Finds the node whose key is v
12、 and returns it.Rank(t,v)Returns the rank of v in the tree rooted at t. In another word, it is one plus the number of the keys which are less than v in that tree.Select(t,k)Returns the node which is ranked at the kth position. Apparently it includes operations of Get-max and Get-min because Get-min
13、is equivalent to Select(t,1) and Get-max is equivalent to Select(t,st)Pred(t,v)Returns the node with maximum key which is less than v.Su)Returns the node with minimum key which is larger than v.Commonly every node of a SBT contains key, left, right and extra but useful updated field: its size, which
14、 has been defined in the former introduction. The kernel of a SBT is divided into two restrictions on size:For every node pointed by t in a SBT, we guarantee that Property(a):srightt sleftleftt, srightlefttProperty(b):sleftt srightrightt , sleftrighttCorrespond to properties (a) and (b), s A, sB sR
15、& sC, sD sL3 MaintainAssume that we need to insert a node whose key is v into a BST. Generally we use the following procedure to accomplish the mission.Simple-Insert (t,v)12345678If t=0 then tNEW-NODE(v)Else st st+1 If vsrighttIn this case that sAsR correspond to Figure 2.1 after Insert(leftt,v), we
16、 can execute the following instructions to repair the SBT:(1) First perform Right-Rotate(T). This operation transforms Figure 2.1 into Figure 3.1;(2) And then sometimes it occurs that the tree is still not a SBT because sCsB or sDsB by any possibility. So it is necessary to implement Maintain(T).(3)
17、 In succession the configuration of the right subtree of the node L might be changed. Because of the possibility of violating the properties it is needful to run Maintain(L) again.Case 2: srightlefttsrighttIn this case that sBsR correspond to Figure 3.2 after Insert(leftt,v), the maintaining is kind
18、 of complicated than that in case 1. We can carry out the following operations for repair.Figure 3.1: All the nodes are defined the same as in Figure 2.1.(1) First perform Left-Rotate(L). After that Figure 3.2 was transformed to Figure3.3 shown below;(2) AndthenperformRight-Rotate(T).Thisperformance
19、resultsinthetransformation from Figure 3.3 to following Figure 3.4.Figure 3.3: All the nodes are defined the same as in Figure 3.2.Figure 3.2: All the nodes are defined the same as in Figure 2.1 except E, F and B. E and F are the subtrees of the node B.(3) After (1) and (2), the tree becomes to be v
20、ery unpredictable. But luckily, in Figure 3.4 subtrees A, E, F and R are still SBTs. So we can perform Maintain(L) and Maintain(T) to repair the subtrees of the node B.(4) After step (3), those subtrees are already SBTs. But properties (a) and (b) may be still violated on the node B. Thus we need pe
21、rform Maintain(B) again.Case 3: srightrighttslefttThis case is symmetrical with case 1.Case 4: sleftrighttslefttThis case is symmetrical with case 2.3.1 Pseudocode Of Standard MaintainAccording to the previous analysis it is easy to implement a normal Maintain.Maintain (t) 1234567If sleftlefttsright
22、t then Right-Rotate(t) Maintain(rightt) Maintain(t) ExitIf srightlefttsrightt then Left-Rotate(leftt)Figure 3.4: All the nodes are defined the same as in Figure 3.2.891011121314151617181920212223 Right-Rotate(t) Maintain(leftt) Maintain(rightt) Maintain(t) ExitIf srightrighttsleftt then Left-Rotate(
23、t) Maintain(leftt) Maintain(t) ExitIf sleftrighttsleftt then Right-Rotate(rightt) Left-Rotate(t) Maintain(leftt) Maintain(rightt) Maintain(t)3.2 Pseudocode Of Faster And Simpler MaintainThe standard pseudocode is a little complicated and slow. Generallywe canensure that property (a) or (b) has been
24、satisfied. Therefore we only need to check cases 1 and 2 or case 3 and 4 to speed up. In that case we can add a boolean variant, flag, to avoid meaningless checking. If flag is false cases 1 and 2 will be checked, otherwise cases 3 and 4 will be checked.Maintain (t,flag)1234567891011121314151617If f
25、lag=false then If sleftlefttsrightt then Elseif srightlefttsrightt thenElseif srightrighttsleftt then Elseif sleftrighttsleftt thenMaintain(leftt,false) Maintain(rightt,true) Maintain(t,false) Maintain(t,true)Right-Rotate(rightt)Left-Rotate(t)Else exitLeft-Rotate(t)Left-Rotate(leftt)Right-Rotate(t)E
26、lse exitRight-Rotate(t)Why Maintain(leftt,true) and Maintain(rightt,false) are expelled? What is the runtime of Maintain? You can find the answers in part 6, analysis.4 InsertionThe insertion on a SBT is very simple. Heres the pseudocode of Insert on a SBT.4.1 Pseudocode Of InsertInsert (t,v)1234567
27、89If t=0 then tNEW-NODE(v)Else st st+1 If vkeyt then Simple-Insert(leftt,v) Else Simple-Insert(rightt,v) Maintain(t,v keyt)5 DeletionI augment the deletion for convenience. If no such a value to delete in a SBT we delete the node searched at last and record it. Heres the standard pseudocode of Delet
28、e on a SBT.5.1 Pseudocode Of Standard DeleteDelete (t,v)12345678910If st2 then recordkeyt tleftt+rightt Exitst st1If v=keyt then Delete(leftt,vt+1) Keyt record Maintain(t,true)Else1112131415 If vkeyt then Delete(leftt,v) Else Maintain(t,vkeyt)5.2 Pseudocode Of Faster And Simpler DeleteActually this
29、is the simplest deletion without other functions. Delete(t,v) here is a function that returns the value deleted. It can result in a destroyed SBT. But with the insertion above, a BST is still kept at the height of O(logn*) where n* is the total number of insertions, not the current size!Delete (t,v)
30、123456789101112st st1If (v=keyt)or(vkeyt)and(rightt=0) then Delete keyt If (leftt=0)or(rightt=0) then Else keyt Delete(leftt,vt+1)Else If v 1)f h = 2 f h -1 + f h - 2 + 1t leftt+righttDelete(rightt,v)6.1.1 Proof(1) It is easy to work out that f 0 = 1 and f 1 = 2 .(2) First of all, f h f h - 1 + f h
31、- 2 + 1(h 1) . For each h1, lets assume thatt points to a SBT whose height is h. And then this SBT contains a subtree at the height of h-1. It doesnt matter to suppose it as the left subtree. Accordingto the previous definition of f h, we have that sleftt f h - 1. And thereis an h-2-tall subtree of
32、the left subtree. In another word there is a subtree whose size is at least f h - 2 of the left subtree. Owing to the property (b)we have that srightt f h - 2 . Therefore we draw the conclusion thatst f h - 1 + f h - 2 + 1 .On the other hand, f h f h - 1 + f h - 2 + 1(h 1) . We can construct aSBT wi
33、th exact f h node(s) and its height is h. We call thistreeh.kind of SBT(h = 0)(h = 1)(h 1)a BST with one nodetreeh = BST with two nodesanya BST containing treeh -1 and treeh - 2 as two subtreesHence thatf h = f h - 1 + f h - 2 + 1(h 1) is obtained by summing uptwo upper aspects.6.1.2 The Worst Heigh
34、tIn fact f h is exponential function. Its precise value can be calculated from therecursion.a h+3 - b h+3a h+3h-1 = Fibonaccih + 2 -1 = Fibonacciii=0f h =-1 =551 +51 -5where a =and b =22Some usual values of fhLemmaThe worst height of an n-node SBT is the maximum h subjected to f h n .Assume that max
35、h is the worst height of a SBT at the size of n. According to the lemma above, we havef maxh =-1 n a maxh+3 n + 1.5 5maxh loga 5 ( n+1.5) - 3 maxh 1.44logn +1.5 - 1.332Now it is clear that the height of a SBT is O(logn).6.2 Analysis Of MaintainWe can easily prove that Maintain works quite efficientl
36、y using the previous conclusions.There is a very important value to estimate how well a BST is, the average of all nodes depths. It is the quotient obtained by SD, the sum of the depths of all nodes, dividing n. Generally the less it is, the better a BST is. Because of the constant n, SD is expected
37、 to be as small as possible.Now we need to concentrate on SD. Its significance is the ability to restrict the times of Maintain. Recalling the conditions to perform rotations in Maintain it is surprising that SD always decreases after rotations.In case 1, for example, comparing Figure 2.1 with Figur
38、e 3.1, SD increases a negative value, srightt-sleftleftt.And for instance comparing Figure 3.2 to Figure 3.4, SD increases a value less than -1, srightt-srightleftt-1.Due to the height of O(logn) SD is always kept O(nlogn). And SD just increases O(logn) after an insertion on a SBT. ThereforeSD = n O
39、(log n) - T = O(log n) T = O(n log n)where T is the number of Maintains running rotations. The total number of Maintains is T plus the number of Maintains without rotations. Since the latter is O(nlogn)+O(T), the amortized runtime for Maintain isa maxh+35H13151719212325272931Fh9862583676417710463671
40、2139231781083203921783085702886O(T ) + O(n log n) + O(T ) = O(1)n log n6.3 Analysis Of Each OperationNow that the height of SBT is O(logn) and Maintain is O(1), the runtime for all primary operations are O(logn).6.4 Analysis Of Faster And Simpler DeleteWe call the statement P(n*) that a BST with the
41、 faster and simpler Delete and n* standard Inserts is at the height of O(logn*). We prove P(n*) is true for arbitrary positive integer n* by mathematical induction.6.4.1 ProofHere I just give a rough proof.Assume that a node t is checked by Maintain(t,false), we havesleftt - 1 srightt 2sleftt 2st -
42、13Therefore if all nodes on the path from a node to the root are checked by Maintain the depth of this node is O(logn).(1) For n*=1, P(n*) is true apparently;(2) Assume that P(n*) is true for n*k. For n*=k, after the last consecutive insertions, the nodes checked by Maintain must be connected togeth
43、er to form a tree. For every leaf of this tree, the subtree pointed by it does not be changed by Maintain. So the depths of the nodes in this subtree is not larger than O(logn*)+O(logn)=O(logn*)(3) Therefore P(n*) is true for n*=1,2,3In this way the amortized runtime of Maintain is still O(1).6.5 An
44、alysis Of Faster And Simpler MaintainHeres the discussion about why Maintain(leftt,true) and Maintain(rightt,false) can be expelled.In case 1 in Figure 3.2 we havesL 2sR + 1 sB 2sL - 1 4sR + 1 33sE, sF 2sB - 1 8sR + 3 39sE, sF 8sR + 3 s R9Thus Maintain(rightt,false),correspond to Maintain(T,false) i
45、n Figure 3.1, can be expelled. And Maintain(leftt,true) is unnecessary apparently.In case 2 in Figure 3.2 we haves A sEsF sRThese inequations also mean that the size of subtrees of E is less than sA and thesize of subtrees of F is less than sR. Thus Maintain(rightt,false) Maintain(leftt,true) can be
46、 expelled.and7 Advantage7.1 How Fast A SBT Runs7.1.1 Typical ProblemWrite a program to perform n operations given from the input. They are1)2)3)4)5)6)7)Insert a given number into the set; Delete a given number from the set; Return if a given number is in the set;Return the rank of a given number in
47、the set; Return the kth number in the set;Return the previous number of a given number in the set; Return the succeeding number of a given number in the set.7.1.2 StatisticsecondsecondPerform 2,000,000 operations of 66% insertion and 33% deletion with random values121086RandomziedTreapBST 10.474AVL
48、7.428.86SBT 5.5920Insert 2,000,000 nodes with random values161412108Randomized6TreapBST 13.6111.364SBT 7.13AVL 8.3420In practice SBTs work excellently. From the upper charts we see that SBTs run much faster than other balanced BSTs while the data are random. Moreover the more ordered the data are, t
49、he unexpectedly faster SBTs run. It takes only 2 seconds to insert 2,000,000 ordered nodes into a SBT.7.2 How Efficiently A SBT WorksThe average of all nodes depths nonincreases while Maintain is running. For this reason a SBT always tends to be a perfect balanced BST.Insert 2,000,000 nodes with ran
50、dom valuesInsert 2,000,000 nodes with ordered valuessecondTypeSBTAVLTreapRandomized BSTSplayPerfect BSTAverage Depth18.951418.951425.652826.2860999999.518.9514Height20205153199999920Times of Rotation19999791999979199998519999910?TypeSBTAVLTreapRandomized BSTSplayPerfect BSTAverage Depth19.241519.328526.506225.530337.195318.9514Heig
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水资源管理服务行业智能化水资源开发利用方案
- 2025年重庆货运从业资格证试题
- 2024年领军高考物理一轮复习专题11.3机械能提高训练含解析
- 2024年新教材高中生物单元素养评价二含解析新人教版必修2
- 2024-2025学年高中历史课下能力提升二十五工业革命时代的浪漫情怀含解析人民版必修3
- 湘师大版道德与法治九年级上册5.2.2《公平正义促和谐》听课评课记录
- 多人合伙经营合同范本
- 电子商务半年工作总结
- 委托出租铺面协议
- 特种设备委托检验检测协议书范本
- 青岛版科学(2017)六三制六年级下册第2单元《生物与环境》全单元课件
- 2022-2023年人教版九年级物理上册期末考试(真题)
- 关汉卿的生平与创作
- 一年级语文教材解读分析ppt
- 编本八年级下全册古诗词原文及翻译
- 公共政策学政策分析的理论方法和技术课件
- 装载机教材课件
- 万人计划蓝色简约万人计划青年拔尖人才答辩PPT模板
- 统编高中《思想政治》教材编写理念和内容介绍
- 2022年普通高等学校招生全国统一考试数学试卷 新高考Ⅰ卷(含解析)
- (完整版)中心医院心血管学科的专科建设与发展规划
评论
0/150
提交评论