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 ,x 5,x
8 Ejemplo
9 Computando la Height
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 = (2 h ). 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 Rotacion CB A y x C BA y x
13 Single Rotacion Raiz de Single Rotacion debe ser el nodo 3. Nodo 3 es el nodo con diferencia height = CB A y x C BA y x x y x y 9
14 Single Rotacion que no trabaja CB A y x C BA y x
15 Double Rotacion C D B A z x y CDBA z x y
16 Double Rotacion C D B A z x y CDBA z x y
17 Double Rotacion Ejemplo x y z Tree luego de insert 7: y C D B A z x y CDBA z x y z x A B C D DC BA 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: Trees
20 12,1520,2325,26,2832,41,4348,52,5356,6172,88 25:48 16:2032:--56:72 16,18 Insert 12,1520,2325,26,2832,41,4348,52,50, 5356,6172,88 25:48 16:2032:--56:72 16,18 Insert 50 12,1520,2325,26,2832,41,4348,50,5253, 56,6172,88 25:48 16:2032:--53:72 16,18 Insert 50 (cont) 53 es movido a los vecinos del nodo hermano Original
21 Insert 49 12,1520,2325,26,2832,41,4348,49, 50,5253, 56,6172,88 25:48 16:2032:--53:72 16,18 Split el nodo Envia un hijo a los vecinos del hermano 12,1520,2325,26,2832,41,4348,4953, 56,6172,88 25:48 16:2032:--50:53:72 16,1850,52 12,1520,2325,26,2832,41,4348,4953, 56,6172,88 25:50 16:2032:4853:72 16,1850,52
22 Insert 27 Split el nodo Split otra vez. 12,1520,2325,26,27,2832,41,4348,4953, 56,6172,88 25:50 16:2032:4853:72 16,1850,52 12,1520,2325,2632,41,4348,4953, 56,6172,88 25:50 16:2027:32:4853:72 16,1850,5227,28 48,-- 12,1520,2325,2632,41,4348,4953, 56,6172,88 25:32:50 16:2027:--53:72 16,1850,5227,28
23 48,-- 12,1520,2325,2632,41,4348,4953, 56,6172,88 25:-- 16:2027:--53:72 16,1850,5227,28 50:-- Split la root 32:-- Insert 27 (cont’)
24 27,2832,41,4350,5253,56,6172,88 25:-- 27:--53:72 48,4912,1520,23 16:20 16,1825,26 48:-- 50:-- 32:-- 27,2832,41,4350,5256,6172,88 25:-- 27:--56:72 48,4912,1520,23 16:20 16,1825,26 48:-- 50:-- 32:-- Delete
25 27,2832,4150,5256,6172,88 25:-- 27:--56:72 43,4912,1520,23 16:20 16,1825,26 43:-- 50:-- 32:-- 27,2832,41,4950,5256,6172,88 25:-- 27:--56:72 12,1520,23 16:20 16,1825,26 43:-- 50:-- 32:--
26 27,2832,41,4950,5256,6172,88 25:-- 27:--72:-- 12,1520,23 16:20 16,1825,26 50:-- 56:-- 32:-- 27,2832,41,4950,5256,72,88 25:-- 27:--72:-- 12,1520,23 16:20 16,1825,26 50:-- 56:-- 32:--
27 27,2832,41,4950,5256,72,88 25:-- 27:-- 12,1520,23 16:20 16,1825,26 50:56 56:-- 32:-- 27,2832,41,4950,5256,72,88 25:32 27:-- 12,1520,23 16:20 16,1825,26 50:56 32:--
28 27,2832,41,4950,5256,72,88 25:32 27:-- 12,1520,23 16:20 16,1825,26 50:56 32,41,4950,5256,72,88 25:32 27:-- 12,1520,23 16:20 16,1825,26,28 50:56 32,41,4950,5256,72,88 20:32 25:-- 12,1520,23 16:-- 16,1825,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,4350, 5354,56,6172,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,1827,28 25:-- 27:-- 25,2632,4150,5272,88 72:-- 48,49 48:-- 50:-- 32:--
32 27,2832,41,4350,5253,56,6172,88 25:-- 27:--53:72 48,4912,1520,23 16:20 16,1825,26 48:-- 50:-- 32:-- 12:34:38:42:55:64:69:75:--:--:-- O(M) O(log M) O(log M N) Find
33 27,2832,41,4350,5253,56 25:-- 27:--53:72 48,4920,23 20:-- 16,1825,26 48:-- 50:-- 32:-- 12:34:38:42:55:64:69:75:--:--:-- O(M): inserta un elemento en la lista O(log M N) Insert y Delete O(log N)
34 Running Time Find Cada nodo, O(log M) para determinar la rama a considerar (binary search) O(log M N) nodos para visitar Total O(log N) Insert y Delete require O(M) para fijar lo que se desea. O(M log M N) = 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)
36 12:34:38:42:55:64:69:--:-- O( t 2 + t 1 log M) 27,2832,41,4350,5253,56,6172,88 25:-- 27:--53:72 48,4912,1520,23 16:20 16,1825,26 48:-- 50:-- 32:-- O(log M N) Find t 1 : main memory tiempo de aceso para todo byte. t 2 : todo disco acceso de un block
37 27,2832,41,4350,5253,56 25:-- 27:--53:72 48,4920,23 20:-- 16,1825,26 48:-- 50:-- 32:-- O(log M N) Insert y Delete O( t 2 + t 1 M) 12:34:38:42:55:64:69:--:--