1 B-Trees y AVL Trees. 2 AVL Trees: Topicos Balance en los Trees Chequear el Balance Insertar Single...
date post
02-Feb-2016Category
Documents
view
214download
0
Embed Size (px)
Transcript of 1 B-Trees y AVL Trees. 2 AVL Trees: Topicos Balance en los Trees Chequear el Balance Insertar Single...
B-Trees y AVL Trees
AVL Trees: TopicosBalance en los TreesChequear el BalanceInsertarSingle y Doble Rotaciones
Evitar malos Trees?
Idea #1Los subarboles tienen la misma altura.
Idea #2Para todo nodo en el tree, los subarboles izq. y der. Tienen la misma altura.Rigidez
AVL TreesBinary 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 ms en 1 de altura.
Chequear Balance
Ejemplo
Computando la Height
El AVL tree mas pequeo de height 7N(h) = # nodos en el ms pequeo AVL tree de altura h.N(h) = N(h-1) + N(h-2) + 1N(0) = 1, N(1) = 2 N = (2h). Equivalentemente, h = O(log N).
OperacionesFind, FindMin, FindMaxO(log N) InsertarNecesita mantener el balanceO(log N) DeleteComplicado
Single Rotacion
Single RotacionRaiz de Single Rotacion debe ser el nodo 3. Nodo 3 es el nodo con diferencia height = 236471021856371082145xyxy
Single Rotacion que no trabaja
Double Rotacion354689217
Double Rotacion36581356814
Double Rotacion Ejemplo 2496101132118xyzTree luego de insert 7:57691011411yzx43587ABCDDCBALa root de rotacion es x(4), donde la diferencia de height es 2
AVL Tree Insert, Delete2 tipos de rotacion- single, dobleRotacion es necesaria a lo menos una vez!La root de rotacion es donde la diferencia de height es 2
B-Trees de orden MUn M-ary tree. Todo nodo tiene a lo ms M hijos.HojasTodos los datos est lamacenados en las leaves.Todas las leaves estan a la misma depth.Leaves (except root) tiene entre M/2 y M recordsNodo InteriorM punteros a M children.M-1 claves: la ms pequea 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 TreesM=4: 2-3-4 Trees
Insert12,1520,2325,26,2832,41,4348,52,50, 5356,6172,8825:4816:2032:--56:7216,18Insert 5012,1520,2325,26,2832,41,4348,50,5253, 56,6172,8825:4816:2032:--53:7216,18Insert 50 (cont)53 es movido a los vecinos del nodo hermanoOriginal
Insert 49Split el nodoEnvia un hijo a los vecinos del hermano
Insert 27Split el nodoSplit otra vez.12,1520,2325,26,27,2832,41,4348,4953, 56,6172,8825:5016:2032:4853:7216,1850,5212,1520,2325,2632,41,4348,4953, 56,6172,8825:5016:2027:32:4853:7216,1850,5227,2848,--12,1520,2325,2632,41,4348,4953, 56,6172,8825:32:5016:2027:--53:7216,1850,5227,28
48,--12,1520,2325,2632,41,4348,4953, 56,6172,8825:--16:2027:--53:7216,1850,5227,2850:--Split la root32:--Insert 27(cont)
Delete
Operaciones sobre un B-TreesFind:Atravesar el treeInsertHallar e insertarDar un camino o SplitDeleteHallar y borrarCombinar
TopicosDepth de un B-TreesTiempo de Find, Insert, Delete
Depth de B-Trees20,2320:--16,1827,2825:--27:--25,2632,4150,5272,8872:--48,4948:--50:--32:--
27,2832,41,4350,5253,56,6172,8825:--27:--53:7248,4912,1520,2316:2016,1825,2648:--50:--32:--O(M)O(log M)O(logMN)Find
27,2832,41,4350,5253,5625:--27:--53:7248,4920,2320:--16,1825,2648:--50:--32:--O(M): inserta un elemento en la listaO(logMN)Insert y DeleteO(log N)
Running TimeFindCada nodo, O(log M) para determinar la rama a considerar (binary search)O(logMN) nodos para visitarTotal O(log N)Insert y Deleterequire O(M) para fijar lo que se desea.O(M logMN) = O((M/log M) log N)
B-Trees en MemoriaNodo InteriorM punteros y M-1 keysNodo LeafM datos (o M punteros a datos)
O(t2 + t1 log M)Findt1: main memory tiempo de aceso para todo byte. t2: todo disco acceso de un block
O(logMN)Insert y DeleteO(t2 + t1 M)
Recommended