Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e...
Transcript of Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e...
![Page 1: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/1.jpg)
Balanced Search TreeBalanced Search Tree
Luciano BononiDip. di Scienze dell'InformazioneUniversità di Bologna
![Page 2: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/2.jpg)
Algoritmi e Strutture Dati 2
Original work Copyright © 2009, 2010, Moreno Marzolla, Università di Bologna( http://www.moreno.marzolla.name/teaching/ASD2010/)Modifications Copyright © 2012, Luciano Bononi, Università di Bologna(http://www.cs.unibo.it/~bononi/)
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
![Page 3: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/3.jpg)
Algoritmi e Strutture Dati 3
Introduction
● We have seen that in BST we can search, delet and insert nodes with given key k in O(h) where h=heigth of the tree– A complete binary tree with n nodes has heigth h=Θ(log n)
● However, insertion and deletion of nodes could unbalance the tree– question: identify a sequence of n insertions in a BST
(initially empty) such that the resulting BST has heigth Θ(n)● Our aim: keep balanced a BST despite insertions and
deletions
![Page 4: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/4.jpg)
Algoritmi e Strutture Dati 4
AVL tree● an AVL tree is a search tree (almost) balanced
– AVL tree with n nodes supports insert(), delete(), lookup() operations with cost O(log n) in the worst case
– Adelson-Velskii, G.; E. M. Landis (1962). "An algorithm for the organization of information". Proceedings of the USSR Academy of Sciences 146: 263–266
Evgenii Mikhailovich Landis (1921—1997)http://en.wikipedia.org/wiki/Yevgeniy_Landis
Georgy Maximovich Adelson-Velsky (1922—)http://chessprogramming.wikispaces.com/Georgy+Adelson-Velsky
![Page 5: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/5.jpg)
Algoritmi e Strutture Dati 5
definitions
● Balancing factor– The balancing factor β(v) of node v is the difference of heigth
of left and right subtrees of v (in order):β(v) = heigth(left(v)) – heigth(right(v))
● Heigth balancing– A tree is said to be balanced in heigth if the heigth of
subtrees left and right of each node v is at most 1– In other words a tree is balanced in heigth is for any node v,
|β(v)|≤1● Definition: an AVL tree is a BST balanced in heigth.
![Page 6: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/6.jpg)
Algoritmi e Strutture Dati 6
Example
v v
β(v)=0 β(v)=-3
![Page 7: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/7.jpg)
Algoritmi e Strutture Dati 7
Example
t
v
β(v)=0
β(t)=2
![Page 8: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/8.jpg)
Algoritmi e Strutture Dati 8
Heigth of an AVL tree● To evaluate the heigth of AVL trees, we start
considering the most “unbalanced” trees we can realize.
● Fibonacci treesT
0T
1T
2T
3T
n
Tn-1
Tn-2
![Page 9: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/9.jpg)
Algoritmi e Strutture Dati 9
Heigth of a Fibonacci tree
● Given a Fibonacci tree of heigth h, let nh be the
number of nodes.● We get (by construction) that
● We proof that
where Fn is the n-th Fibonacci number.
nh=nh−1nh−21
nh=Fh3−1
![Page 10: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/10.jpg)
Algoritmi e Strutture Dati 10
Heigth of a Fibonacci tree
● Base step: h=0– n
0 = 1
– F3 = 2
● Inductive step
T0
nh=Fh3−1
nh = nh−1nh−21= Fh2−1Fh1−11= Fh2Fh1−1= Fh3−1
![Page 11: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/11.jpg)
Algoritmi e Strutture Dati 11
● hence: a Fibonacci tree with heigth h has Fh+3
– 1
nodes● We note that
hence
and we conclude that
Fh=h,≈1.618
nh=Fh3−1=h
h=lognh
Heigth of a Fibonacci tree
![Page 12: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/12.jpg)
Algoritmi e Strutture Dati 12
Conclusion
● Given that...– A Fibonacci tree with n nodes is the AVL tree with maximum
heigth (and n nodes)– Heigth of a Fibonacci tree with n nodes is proportional to (log
n)● ...we conclude:
– The heigth of a AVL tree with n nodes is O(log n)
![Page 13: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/13.jpg)
Algoritmi e Strutture Dati 13
How to keep the AVL balanced?
● The search() operation in a AVL tree is made as in a generic BST (no modifications)
● Unfortunately, Insert() and delete() require to be modified to maintain the balancing of the AVL tree
● Example
9
8 13
7
9
8 13
7
6
Insertion of value 6
|β(v)| > 1
v
![Page 14: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/14.jpg)
Algoritmi e Strutture Dati 14
Rotation operation
● A new fundamental operation to be implemented for balancing the AVL tree is the simple rotation– question: proof that the simple rotation preserves the order
relationship of a BST
v
u
T1 T2
T3
v
u
T1
T2 T3
Use v as a pivot
Use u as a pivot
![Page 15: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/15.jpg)
Algoritmi e Strutture Dati 15
Rotations
● Let's assume that after a insert() or delete() the AVL tree is unbalanced.
● We have 4 cases (symmetry between 1-2 and 3-4)
SS (Sinistro-Sinistro) SD (Sinistro-Destro) DD (Destro-Destro) DS (Destro-Sinistro)
![Page 16: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/16.jpg)
Algoritmi e Strutture Dati 16
Rebalancing: rotation SS
v
u
T1 T2
T3
h+2
h
+2
v
u
T1
T2 T3h+
1
h+1
0
● A clockwise simple rotation of u on v● Has cost O(1)
![Page 17: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/17.jpg)
Algoritmi e Strutture Dati 17
Rebalancing: rotation SD(does not work!)
v
u
T1 T2
T3
h+2
h
+2
v
u
T1
T2 T3
h
h+2
-2
Still not balanced!
![Page 18: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/18.jpg)
Algoritmi e Strutture Dati 18
Rebalancing: rotation SDfirst step
v
z
T1T2
T4w
T3
v
z
T1T2
T4
w
T3
![Page 19: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/19.jpg)
Algoritmi e Strutture Dati 19
v
z
T1T2
T4
w
T3
vz
T1T2
T4
w
T3
Rebalancing: rotation SDsecond step
![Page 20: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/20.jpg)
Algoritmi e Strutture Dati 20
v
z
T1T2
T4
h
h
+2
w
T3
-1h-
1
w
z
T1T2
T4
h h
0
v
T3
0
h-1
-1
Double rotation: first one to the left on z as pivot, and second one to the right with v as
pivot
Rebalancing: rotation SDcase 1
![Page 21: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/21.jpg)
Algoritmi e Strutture Dati 21
v
z
T1 T2
T4
h
h
+2
w
T3
-1h
-1
w
z
T1T2
T4
h h
0
v
T3
1
h-1
0
Double rotation: first one to the left with z as pivot and second
one to the right with v as pivot
Rebalancing: rotation SDcase 2
![Page 22: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/22.jpg)
Algoritmi e Strutture Dati 22
AVL tree: Insertion
● Insert a new value like in traditional BSTs● Recalculate all the balancing factors changed:
– At most, the recalculation is done for nodes on the path from the leaf inserted up to the root, hence cost is O(log n)
● If at least a node has balancing factor ±2 (critical node), we need to rebalance the tree by using the rotations– Note: in caso of insertion, there is only one critical node.
● Overall cost: O( log n )
![Page 23: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/23.jpg)
Algoritmi e Strutture Dati 23
AVL tree: deletion
● Remove a node like in traditional BSTs● Recalculate all the balancing factors changed:
– At most, the recalculation is done for nodes on the path from the leaf deleted up to the root, hence cost is O(log n)
● For each node with balancing factor ±2 (critical node), we need to rebalance the tree by using the rotations– Note: in case of deletion, more than one nodes could result
with a balancing index ±2● Overall cose: O( log n )
![Page 24: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/24.jpg)
Algoritmi e Strutture Dati 24
1
Example: deletion with cascade rotations
8
13
11 16
14
15
19
17 20
18
9 12
10
3
2 5
4 6
7
![Page 25: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/25.jpg)
Algoritmi e Strutture Dati 25
Apply left rotation on 3
8
13
11 16
14
15
19
17 20
18
9 12
10
3
2 5
4 6
7
![Page 26: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/26.jpg)
Algoritmi e Strutture Dati 26
Apply left rotation on 8
8
13
11 16
14
15
19
17 20
18
9 12
10
3
2
5
4
6
7
![Page 27: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/27.jpg)
Algoritmi e Strutture Dati 27
New balanced AVL
8
13
11
16
14
15
19
17 20
18
9 12
10
3
2
5
4
6
7
![Page 28: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/28.jpg)
Algoritmi e Strutture Dati 28
AVL trees: summary
● search( Key k )– O( log n ) in the worst case
● insert( Key k, Item t )– O( log n ) in the worst case
● delete( Key k )– O( log n ) in the worst case
![Page 29: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/29.jpg)
Algoritmi e Strutture Dati 29
2-3 trees
● Definition: a 2-3 tree is a tree where:– Every internal node has 2 or 3 children and all the paths
root/leaf have the same length– The leaves contain the keys and associated values, and
they are sorted from left to rigth in ascending order of key– Every internal node v mantains two information:
● S[v] is the max key in the subtree whose root is the left child● M[v] is the max key in the subtree whose root is the central child (if v
has only 2 children, it will contain S[v] only)
![Page 30: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/30.jpg)
Algoritmi e Strutture Dati 30
Values between 3 and 5
Example
2 3 54 8 1110
2 4 8 10
3 5
Values ≤ 3 Values > 5
![Page 31: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/31.jpg)
Algoritmi e Strutture Dati 31
Heigth of 2-3 trees
● let T be a 2-3 tree with n nodes, f leaves and heigth h. Then the following inequalities hold:
● In particular, we can conclude that the heigth of a 2-3 tree is Θ(log n)
2h1−1≤n≤3h1−1/22h≤ f ≤3h
![Page 32: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/32.jpg)
Algoritmi e Strutture Dati 32
Heigth of 2-3 treesproof
● By induction on h: if h=0, the tree has only one node (leaf) and the relations are satisfied.
● if h>0, let's consider the 2-3 tree T' without the lower level (leaves). Let n' and f' be the number of nodes and leaves in T'– Inductive assumption– Every leaf in T' can have 2 or 3 children, so we obtain
2h−1≤ f '≤3h−1
2×2h−1≤ f ≤3×3h−1
2h≤ f ≤3h
![Page 33: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/33.jpg)
Algoritmi e Strutture Dati 33
● for the number of nodes, the inductive assumption is
● We observe that n = n' + f, hence
and we obtain
2h−1≤n '≤3h−1/2
2h−1≤n '≤3h−1/22h≤ f ≤3h
2h2h−1≤n≤3h−1/23h
2h1−1≤n≤3h1−1/2
Heigth of 2-3 treesproof
![Page 34: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/34.jpg)
Algoritmi e Strutture Dati 34
searchAlgorithm 23search( T, k )
if ( T == null ) thenreturn null;
endifnode v := T.root;if ( v is a leaf ) then
if ( key of v == k ) thenreturn v;
elsereturn null;
endifelse // v is not a leaf
if ( k ≤ S[v] ) thenreturn 23search( v.left, k );
elseif ( v.right != null && k > M[v] ) thenreturn 23search( v.right, k );
elsereturn 23search( v.mid, k );
endifendif
S[v] M[v]S[v] M[v]
v.leftv.left v.midv.mid v.rightv.right
![Page 35: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/35.jpg)
Algoritmi e Strutture Dati 35
Insertion
● Create a leaf v with key k● By using the search operation, we find a node u in the
penultimate level, who will become the father of v● We add v as a child of u, if possible
– if u already has 3 children, we need to make an operation of splitting (split), which could also propagate back up to the root.
![Page 36: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/36.jpg)
Algoritmi e Strutture Dati 36
Example
2 3 54 8 1110
2 4 8 10
3 5
12
![Page 37: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/37.jpg)
Algoritmi e Strutture Dati 37
Example
2 3 54 8 1110
2 4 8 10
3 5
12
![Page 38: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/38.jpg)
Algoritmi e Strutture Dati 38
Example
2 3 54 8 1110
2 4 8
3 5
12
11
![Page 39: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/39.jpg)
Algoritmi e Strutture Dati 39
Example
2 3 54 8 1110
2 4 8
3
12
11
10
5
![Page 40: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/40.jpg)
Algoritmi e Strutture Dati 40
Insertion: cost
● O(log n) to identify the father of the new node● O(log n) split in the worst case, each one with cost
O(1)● Overall, the cost of the insertion is O(log n)
![Page 41: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/41.jpg)
Algoritmi e Strutture Dati 41
Deletion
● We find a leaf v with the key to delete● We remove v, detaching the node from the father u
– If u had 2 children, it remains with only 1 child (violating the property of 2-3 trees). So we need to merge the node U with a neighbor.
– The merging operation could propagate up to the root.
![Page 42: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/42.jpg)
Algoritmi e Strutture Dati 42
a b c
a b
a b
a
c d
c
a b
a
c da
a c
c ea b
a c d
d d e
d
a c
a
![Page 43: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/43.jpg)
Algoritmi e Strutture Dati 43
Example
2 3 54 8 1110
2 4 8
3
12
11
10
5
![Page 44: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/44.jpg)
Algoritmi e Strutture Dati 44
Example
2 3 5 8 1110
2 4 8
3
12
11
10
5
![Page 45: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/45.jpg)
Algoritmi e Strutture Dati 45
Example
2 3 5 8 1110
2 3 8
3
12
11
10
5
![Page 46: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/46.jpg)
Algoritmi e Strutture Dati 46
Example
2 3 5 8 1110
2 3 8
5 10
12
11
5
![Page 47: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/47.jpg)
Algoritmi e Strutture Dati 47
Example
2 3 5 8 1110
2 3 8
5 10
12
11
![Page 48: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/48.jpg)
Algoritmi e Strutture Dati 48
2-3 trees: summary
● search( Key k )– O( log n ) in the worst case
● insert( Key k, Item t )– O( log n ) in the worst case
● delete( Key k )– O( log n ) in the worst case
![Page 49: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/49.jpg)
Algoritmi e Strutture Dati 49
B-Tree
● Data structure used in applications needing to manage sets of ordered keys
● a variation (B+-Tree) is used in:– Filesystem: btrfs, NTFS, ReiserFS,
NSS, XFS, JFS to index metadata– Relational Database: IBM DB2,
Informix, Microsoft SQL Server, Oracle 8, Sybase ASI, PostgreSQL, Firebird, MySQL to index tables
Prof. Rudolf Bayer
![Page 50: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/50.jpg)
Algoritmi e Strutture Dati 50
B-Tree
● Since every node can have a high number of children, B-trees can efficiently index big amounts of data on external memory (discs), reducing I/O operations.
1000 chiavi
1000 chiavi 1000 chiavi
1000 chiavi 1000 chiavi
1001 figli
1001 figli
1 node1000 keys
1001 nodes1.001.000 keys
1.002.001 nodes1.002.001.000 keys
![Page 51: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/51.jpg)
Algoritmi e Strutture Dati 51
B-Tree
● a B-Tree with grade t (≥2) has the following properties:– All the leaves have the same depth– Every node v different than the root maintains k(v) ordered
keys:key
1(v) ≤ key
2(v) ≤ … ≤ key
k(v)(v)
such that t-1 ≤ k(v) ≤ 2t-1– The root has at least 1 and at most 2t-1 ordered keys– Every internal node v has k(v)+1 children– The keys key(v) split the intervals of keys stored in every
subtree. If ci is a key of the i-th subtree of a node v, then
c1 ≤ key
1(v) ≤ c
2 ≤ key
2(v) ≤ … ≤ c
k(v) ≤ key
k(v)(v) ≤ c
k(v)+1
![Page 52: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/52.jpg)
Algoritmi e Strutture Dati 52
Example: B-Tree with t=2
42 65 80
6 34 44 51 60 68 73 87
1 7 8 37 41 43 48 57 59 63 66 67 70 71 72 75 81 83 90
k1
k2
k3
k≤k1 k 1≤k≤k 2 k 2≤k≤k 3 k≥k 3
![Page 53: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/53.jpg)
Algoritmi e Strutture Dati 53
Heigth of a B-Tree
● a B-Tree with n keys has heigth
● proof– Given all B-trees of grade t, the higest one is the one with
the lower number of children per node (that is, with t children)
– 1 node has depth zero (the root)– 2 nodes have depth 1– 2t nodes have depth 2– 2t2 nodes have depth 3– …– 2ti-1 nodes have depth i
h≤logtn1
2
![Page 54: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/54.jpg)
Algoritmi e Strutture Dati 54
Heigth of a B-Tree
● Total number of nodes in a B-Tree with heigth h
● Since every node but the root contains exactly t-1 keys, the number of keys n satisfies:
1∑i=1
h
2t i−1
n≥1 t−1∑i=1
h
2t i−1
=12 t−1 th−1t−1
=2th−1
∑i=1
h
t i−1=∑i=0
h−1
t i= th−1t−1
![Page 55: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/55.jpg)
Algoritmi e Strutture Dati 55
Heigth of a B-tree
● given
we get
and applying the log base t we get:
n≥2th−1
t h≤ n12
h≤logtn1
2
![Page 56: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/56.jpg)
Algoritmi e Strutture Dati 56
Search operation on B-tree
● Is a generalization of the search on BST– In each step we search the key in the current node– If the key is found we stop– If the key is not found we search it in the subtree who may
contain it
algorithm search(root v of a B-Tree, key x) → elemi ← 1while (i≤k(v) && x>key
i(v)) do
i ← i+1;endwhileif (i≤k(v) && x==key
i(v)) then
return elemi(v);
elseif (v is a leaf) then
return nullelse
return search(i-th child of v, x);endif
endif
![Page 57: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/57.jpg)
Algoritmi e Strutture Dati 57
Search opepration on B-tree
● Computational cost– Number of visited nodes is O(log
t n)
– Every visit costs O(t) doing a linear scan of the keys.
– Total O(t logt n)
● However, since the keys are sorted in each node, we can exploit a binary search in time O(log t) instead of O(t). In this case, the total cost becomes O(log t log
t n) = O(log n) (using the rule for changing
the base of log)
![Page 58: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/58.jpg)
Algoritmi e Strutture Dati 58
Insert a key in a B-tree
● We search() the leaf f in which to insert key k● If the leaf is not full (it has less than 2t-1 keys) we
insert k in the correct position and we stop.● If the leaf is full (has 2t-1 keys) then
– Node f is split into two (split operation) and the t-th key is moved in the father of f
– If the father of f already had 2t-1 keys (full) we need to split it in the same way, (this may continue up to the root).
– In the worst case (when all the path from the leaf f to the root is made of full nodes) the consecutive splits will create a new root.
![Page 59: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/59.jpg)
Algoritmi e Strutture Dati 59
Insert a key in a B-tree
● Computational cost– Visited nodes are O(log
t n)
– Each visit costs O(t) in the worst case (due to split operations)
– Total O(t logt n)
A DA D F I K
G
G I K
FSplit operation
![Page 60: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/60.jpg)
Algoritmi e Strutture Dati 60
Insert a key in a B-tree
● Example (t=2)
42 65 80
6 34 44 51 60 68 73 87
1 7 8 37 41 43 48 57 58 59 63 66 67 70 71 72 75 81 83 90
![Page 61: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/61.jpg)
Algoritmi e Strutture Dati 61
● Insert 56
42 65 80
6 34 44 51 60 68 73 87
1 7 8 37 41 43 48 56 57 58 59 63 66 67 70 71 72 75 81 83 90
Insert a key in a B-tree
![Page 62: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/62.jpg)
Algoritmi e Strutture Dati 62
42 65 80
6 34 44 51 57 60 68 73 87
1 7 8 37 41 43 48 58 59 63 66 67 70 71 72 75 81 83 9056
Insert a key in a B-tree
![Page 63: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/63.jpg)
Algoritmi e Strutture Dati 63
42 51 65 80
6 34 57 60 68 73 87
1 7 8 37 41 43 48 58 59 63 66 67 70 71 72 75 81 83 9056
44
Insert a key in a B-tree
![Page 64: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/64.jpg)
Algoritmi e Strutture Dati 64
65 80
6 34 57 60 68 73 87
1 7 8 37 41 43 48 58 59 63 66 67 70 71 72 75 81 83 9056
44
42
51
Insert a key in a B-tree
![Page 65: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/65.jpg)
Algoritmi e Strutture Dati 65
Delete a key from a B-tree
● If the key k to delete is in a node v which is not a leaf● We find the node containing the predecessor value of k● We move the max key in w in the place of the deleted key k● We exploit the next case by removing the max key in w
● If the key k to delete is in a leaf v● If the leaf has more than t-1 keys, just remove k and stop● If the leaf contains k-1 keys, by removing k we go below the
minimum threshold. So we have to cases based on adjacent brothers:
– If at least uno of the brothers has >t-1 keys we redistribute the keys
– If none of the adjacent brothers has >t-1 keys we make a fusion operation.
![Page 66: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/66.jpg)
Algoritmi e Strutture Dati 66
B-Tree operations:deletion from internal node
7 20 56 92
21 27 39 43
44 46 47 4940 41 42
Predecessor of k
Key K to delete
w
v 7 20 92
21 27 39 43
44 46 47 4940 41 42 w
v 49
![Page 67: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/67.jpg)
Algoritmi e Strutture Dati 67
B-tree operationsdeletion from a leaf
● First case: leaf contains > t-1 keys– We remove the key from the leaf (now leaf contains ≥t-1
keys)● Second case: the leaf contains exactly t-1 keys. We
have two possibilities:– Redistribute keys with one adjacent brother – Merge the leaf with an adjacent brother
![Page 68: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/68.jpg)
Algoritmi e Strutture Dati 68
B-tree operationsdelete from almost empyt leaf—case 1
21 27 39 43
44 46 47 4940 41 42
● Given a B-tree fragment with t=4
29 30 33 3428
21 27
39
43
44 46 47 4940 4229 30 33
34
28
Contained >t-1 keys
Contained t-1 keys
Contains≥t-1 keys Contains t-1 keys
![Page 69: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/69.jpg)
Algoritmi e Strutture Dati 69
21 27 39 43
44 46 4740 41 42
● Given a B-tree fragment with t=4 (fusion)
30 33 34
21 27
39
43
44 46 47 4940 4230 33 34
t-1 keys t-1 keys
Contains2t-2 keys
t-1 keys
Contains one key
less
B-tree operationsdelete from almost empyt leaf—case 2
![Page 70: Balanced Search Tree - cs.unibo.itsacerdot/bioinformatics1718/L06-AlberiBil_eng.pdf · Algoritmi e Strutture Dati 4 AVL tree an AVL tree is a search tree (almost) balanced – AVL](https://reader035.fdocuments.in/reader035/viewer/2022070615/5c657e2a09d3f28c6e8cd6d5/html5/thumbnails/70.jpg)
Algoritmi e Strutture Dati 70
summary
search insert delete
Sorted array O(log n) O(n) O(n)
Unsorted list O(n) O(1) O(n)
BST O(h) O(h) O(h)
AVL tree O(log n) O(log n) O(log n)
2-3 tree O(log n) O(log n) O(log n)
B-Tree O(log t logt n) =
O(log n)
O(t logt n) O(t log
t n)
Note all the costs refer to worst cases.