La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

1 B-Trees y AVL Trees. 2 AVL Trees: Topicos Balance en los Trees Chequear el Balance Insertar Single y Doble Rotaciones.

Presentaciones similares


Presentación del tema: "1 B-Trees y AVL Trees. 2 AVL Trees: Topicos Balance en los Trees Chequear el Balance Insertar Single y Doble Rotaciones."— Transcripción de la presentación:

1 1 B-Trees y AVL Trees

2 2 AVL Trees: Topicos Balance en los Trees Chequear el Balance Insertar Single y Doble Rotaciones

3 3 Evitar malos Trees?

4 4 Idea #1 Los subarboles tienen la misma altura.

5 5 Idea #2 Para todo nodo en el tree, los subarboles izq. y der. Tienen la misma altura. Rigidez

6 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 7 Chequear Balance 0 00 00 0 000 01 11 1 1 1 2 22 3 3 4,x 5,x

8 8 Ejemplo 4 6 58 79 3 2 7 9 8 46 5 3 3 2 68 7 5 4 8 6 1623 18 12 945

9 9 Computando la Height 0 00 00 0 000 01 11 1 1 1 2 22 3 3 4 5

10 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 11 Operaciones Find, FindMin, FindMax O(log N) Insertar Necesita mantener el balance O(log N) Delete Complicado

12 12 Single Rotacion 3 5 47 69 2 1 8 3 5 4 7 6 9 2 1 8 CB A y x C BA y x

13 13 Single Rotacion Raiz de Single Rotacion debe ser el nodo 3. Nodo 3 es el nodo con diferencia height = 2 3 6 4 710 2 1 9 CB A y x C BA y x 8 5 6 3 7 8 2 1 4 5 x y x y 9

14 14 Single Rotacion que no trabaja 3 5 48 69 2 1 7 3 5 4 8 6 9 2 1 7 CB A y x C BA y x

15 15 Double Rotacion 3 5 48 69 2 1 73 5 4 6 8 9 2 1 7 C D B A z x y CDBA z x y

16 16 Double Rotacion 3 6 58 4 1 3 5 6 814 C D B A z x y CDBA z x y

17 17 Double Rotacion Ejemplo 2 4 9 6 1011 3 2 8 x y z Tree luego de insert 7: 5 7 6 9 1011 4 y C D B A z x y CDBA z x y z x 4 35 8 7 A B C D DC BA La root de rotacion es x(4), donde la diferencia de height es 2

18 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 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 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 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 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 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 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 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 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 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 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 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 30 Topicos Depth de un B-Trees Tiempo de Find, Insert, Delete

31 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 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 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 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 35 B-Trees en Memoria Nodo Interior M punteros y M-1 keys Nodo Leaf M’ datos (o M’ punteros a datos) 12 15 1718 2325 26 2832 41 4348 5356 6172 88 18 32 56 72 25 48

36 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 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:--:--


Descargar ppt "1 B-Trees y AVL Trees. 2 AVL Trees: Topicos Balance en los Trees Chequear el Balance Insertar Single y Doble Rotaciones."

Presentaciones similares


Anuncios Google