1
B-Trees y AVL Trees
2
AVL Trees: Topicos
• Balance en los Trees
• Chequear el Balance
• Insertar• Single y Doble Rotaciones
3
Evitar malos Trees?
4
Idea #1
• Los subarboles tienen la misma altura.
5
Idea #2
• Para todo nodo en el tree, los subarboles izq. y der. Tienen la misma altura.• Rigidez
6
AVL Trees• Binary search trees ABB, con una propiedad
adicional.• Para todo nodo en el tree, la altura de los
subarboles izq. y der. difieren en a lo más en 1 de altura.
7
Chequear Balance
0
0 0
00
0000
0 1 1 1
1
1
12
22
3
3
4,x
5,x
8
Ejemplo4
6
5 8
7 9
3
2
7
9
8
4 6
5
3
3
2
6 8
7
5
4
8
6
16 23
18
12
94 5
9
Computando la Height
0
0 0
00
0000
0 1 1 1
1
1
12
22
3
3
4
5
10
El AVL tree mas pequeño de height 7
• N(h) = # nodos en el más pequeño AVL tree de altura h.• N(h) = N(h-1) + N(h-2) + 1• N(0) = 1, N(1) = 2 • N = (2h). Equivalentemente, h = O(log N).
11
Operaciones
• Find, FindMin, FindMax• O(log N)
• Insertar• Necesita mantener el balance• O(log N)
• Delete• Complicado
12
Single Rotacion3
5
4 7
6 9
2
1
8
3
5
4
7
6
92
1
8
CB
A
y
x
C
BA
y
x
13
Single RotacionRaiz de Single Rotacion debe ser el nodo 3. Nodo 3 es el nodo con diferencia height = 2
3
6
4
7 10
2
1
9
CB
A
y
x
C
BA
y
x
8
5
6
3
7 10
8
2
1 4
5
x
y x
y
9
14
Single Rotacion que no trabaja3
5
4 8
6 9
2
1
7
3
5
4
8
6
92
1
7
CB
A
y
x
C
BA
y
x
15
Double Rotacion3
5
4 8
6 9
2
1
7
3
5
4
6
8
9
2
1
7
C
D
B
A z
x
y
C DBA
z
x y
16
Double Rotacion3
6
5 8
4
1 3
5
6
81 4
C
D
B
A z
x
y
C DBA
z
x y
17
Double Rotacion Ejemplo 2
4
9
6
10 11
3
2
11
8
x
y
zTree luego de insert 7:
5
7
6
9
10 11
4
11
y
C
D
B
A z
x
y
C DBA
z
x y
z
x
4
3 5 8
7
A
B
C
DDCBA
La root de rotacion es x(4), donde la diferencia de height es 2
18
AVL Tree Insert, Delete
• 2 tipos de rotacion
- single, doble
• Rotacion es necesaria a lo menos una vez!
• La root de rotacion es donde la diferencia de height es 2
19
B-Trees de orden M• Un M-ary tree. Todo nodo tiene a lo más M hijos.• Hojas
• Todos los datos está lamacenados en las leaves.• Todas las leaves estan a la misma depth.• Leaves (except root) tiene entre M/2 y M records
• Nodo Interior• M punteros a M children.• M-1 claves: la más pequeña keys se encuentra en M-1
subarbol derecho.• La root tiene entre 1 y M children.• Los nodos interiores tiene entre M/2 y M children.
• M=3: 2-3 Trees• M=4: 2-3-4 Trees
20
12,15 20,23 25,26,28 32,41,43 48,52,53 56,61 72,88
25:48
16:20 32:-- 56:72
16,18
Insert
12,15 20,23 25,26,28 32,41,43 48,52,50, 53 56,61 72,88
25:48
16:20 32:-- 56:72
16,18
Insert 50
12,15 20,23 25,26,28 32,41,43 48,50,52 53, 56,61 72,88
25:48
16:20 32:-- 53:72
16,18
Insert 50 (cont)53 es movido a los vecinos del nodo hermano
Original
21
Insert 49
12,15 20,23 25,26,28 32,41,43 48,49, 50,52 53, 56,61 72,88
25:48
16:20 32:-- 53:72
16,18
Split el nodo
Envia un hijo a los vecinos del hermano
12,15 20,23 25,26,28 32,41,43 48,49 53, 56,61 72,88
25:48
16:20 32:-- 50:53:72
16,18 50,52
12,15 20,23 25,26,28 32,41,43 48,49 53, 56,61 72,88
25:50
16:20 32:48 53:72
16,18 50,52
22
Insert 27
Split el nodo
Split otra vez.
12,15 20,23 25,26,27,28 32,41,43 48,49 53, 56,61 72,88
25:50
16:20 32:48 53:72
16,18 50,52
12,15 20,23 25,26 32,41,43 48,49 53, 56,61 72,88
25:50
16:20 27:32:48 53:72
16,18 50,5227,28
48,--
12,15 20,23 25,26 32,41,43 48,49 53, 56,61 72,88
25:32:50
16:20 27:-- 53:72
16,18 50,5227,28
23
48,--
12,15 20,23 25,26 32,41,43 48,49 53, 56,61 72,88
25:--
16:20 27:-- 53:72
16,18 50,5227,28
50:--
Split la root
32:--
Insert 27(cont’)
24
27,28 32,41,43 50,52 53,56,61 72,88
25:--
27:-- 53:72
48,4912,15 20,23
16:20
16,18 25,26
48:--
50:--
32:--
27,28 32,41,43 50,52 56,61 72,88
25:--
27:-- 56:72
48,4912,15 20,23
16:20
16,18 25,26
48:--
50:--
32:--
Delete
25
27,28 32,41 50,52 56,61 72,88
25:--
27:-- 56:72
43,4912,15 20,23
16:20
16,18 25,26
43:--
50:--
32:--
27,28 32,41,49 50,52 56,61 72,88
25:--
27:-- 56:72
12,15 20,23
16:20
16,18 25,26
43:--
50:--
32:--
26
27,28 32,41,49 50,52 56,61 72,88
25:--
27:-- 72:--
12,15 20,23
16:20
16,18 25,26
50:--
56:--
32:--
27,28 32,41,49 50,52 56,72,88
25:--
27:-- 72:--
12,15 20,23
16:20
16,18 25,26
50:--
56:--
32:--
27
27,28 32,41,49 50,52 56,72,88
25:--
27:--
12,15 20,23
16:20
16,18 25,26
50:56
56:--
32:--
27,28 32,41,49 50,52 56,72,88
25:32
27:--
12,15 20,23
16:20
16,18 25,26
50:56
32:--
28
27,28 32,41,49 50,52 56,72,88
25:32
27:--
12,15 20,23
16:20
16,18 25,26
50:56
32,41,49 50,52 56,72,88
25:32
27:--
12,15 20,23
16:20
16,18 25,26,28
50:56
32,41,49 50,52 56,72,88
20:32
25:--
12,15 20,23
16:--
16,18 25,26,28
50:56
29
Operaciones sobre un B-Trees
• Find:• Atravesar el tree
• Insert• Hallar e insertar• Dar un camino o Split
• Delete• Hallar y borrar• Combinar
32,41,43 50, 53 54,56,61 72,88
54:72
48,49
48:--
50:--
30
Topicos
• Depth de un B-Trees
• Tiempo de Find, Insert, Delete
31
Depth de B-Trees
20,23
20:--
16,18 27,28
25:--
27:--
25,26 32,41 50,52 72,88
72:--
48,49
48:--
50:--
32:--
)(log
)log100(
loglog
log
1log
log
2/log
log
log
2
10099
2/
NOd
Nd
MM
N
M
N
M
N
Nd
NM
M
M
M
d
32
27,28 32,41,43 50,52 53,56,61 72,88
25:--
27:-- 53:72
48,4912,15 20,23
16:20
16,18 25,26
48:--
50:--
32:--
12:34:38:42:55:64:69:75:--:--:--
O(M)O(log M)
O(logMN)
)(log
log
loglog
)))(log((log
NO
M
NMO
NMO M
Find
33
27,28 32,41,43 50,52 53,56
25:--
27:-- 53:72
48,4920,23
20:--
16,18 25,26
48:--
50:--
32:--
12:34:38:42:55:64:69:75:--:--:--
O(M): inserta un elemento en la lista
O(logMN)
NM
MO
M
NMO
NMO M
loglog
log
log
)log(
Insert y Delete
O(log N)
34
Running Time
• Find• Cada nodo, O(log M) para determinar la rama a
considerar (binary search)
• O(logMN) nodos para visitar
• Total O(log N)
• Insert y Delete• require O(M) para fijar lo que se desea.
• O(M logMN) = O((M/log M) log N)
35
B-Trees en Memoria
• Nodo Interior• M punteros y M-1 keys
• Nodo Leaf• M’ datos (o M’ punteros a datos)
12 15 17 18 23 25 26 28 32 41 43 48 53 56 61 72 88
18 32 56 72
25 48
36
12:34:38:42:55:64:69:--:--
O(t2 + t1 log M)
27,28 32,41,43 50,52 53,56,61 72,88
25:--
27:-- 53:72
48,4912,15 20,23
16:20
16,18 25,26
48:--
50:--
32:--O(logMN)
)(log
)loglog(
)logloglog(
)))(loglog((
12
12
12
NO
NtNtO
NMtNtO
NMttO
M
M
MM
M
Find
t1: main memory tiempo de aceso para todo
byte.t2: todo disco acceso de un block
37
27,28 32,41,43 50,52 53,56
25:--
27:-- 53:72
48,4920,23
20:--
16,18 25,26
48:--
50:--
32:--
O(logMN)
Insert y Delete
O(t2 + t1 M)
)(log
)loglog
log(
)loglog(
)))(log((
12
12
12
NO
NM
MtNtO
NMtNtO
NMttO
M
M
MM
M
12:34:38:42:55:64:69:--:--
Top Related