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

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

of 37

  • date post

    02-Feb-2016
  • Category

    Documents

  • view

    214
  • download

    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)