La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

FIUBAODD - Curso Servetto1 Organizaciones B, B+, B* y B# Árboles Balanceados Árboles en Archivos Primitivas.

Presentaciones similares


Presentación del tema: "FIUBAODD - Curso Servetto1 Organizaciones B, B+, B* y B# Árboles Balanceados Árboles en Archivos Primitivas."— Transcripción de la presentación:

1 FIUBAODD - Curso Servetto1 Organizaciones B, B+, B* y B# Árboles Balanceados Árboles en Archivos Primitivas

2 FIUBAODD - Curso Servetto2 Árboles Balanceados Rudolf Bayer y Ed McCreight describieron a los árboles B en un artículo en Se mantienen balanceados en altura, con todos los nodos hoja al mismo nivel. Las operaciones de búsqueda y actualización afectan a pocos nodos. Garantizan que más de determinada proporción de la capacidad de cada nodo esté ocupada.

3 FIUBAODD - Curso Servetto3 Árboles en Archivos Los nodos son bloques de organización de registros. Los registros pueden ser de longitud fija o de longitud variable. Los nodos sucesores se referencian por su posición relativa en el archivo, y las referencias son campos de control en los nodos. Las raíces se mantienen siempre en una posición fija del archivo (por ejemplo la 0). Los nodos requieren campos de control generales como contador de registros contenidos y nivel del nodo (las hojas tienen el nivel más bajo). Las hojas tienen más capacidad útil que el resto de los nodos por no requerir referencias a sucesores.

4 FIUBAODD - Curso Servetto4 Organización B El nodo raíz es una hoja o tiene al menos dos nodos sucesores. Cada nodo tiene un sucesor más que la cantidad de elementos que cargue, y a cada elemento se asocia un sucesor izquierdo y otro derecho. Cada nodo excepto el raíz tiene ocupada al menos la mitad de su capacidad. Los elementos de cada nodo están ordenados por un identificador. En cada nodo, todo elemento tiene identificador mayor que el último elemento del sucesor izquierdo y menor que el primer elemento del sucesor derecho.

5 FIUBAODD - Curso Servetto5 Capacidades de elementos en nodos internos y hojas respect.: 4, 7. Los dos primeros campos de cada nodo indican nivel y cantidad de elementos. Los elementos que se muestran son sólo identificadores, que pueden representar registros completos. NODO 0: 2, 1; 7( 611) 8 NODO 7: 1, 2; 1( 184) 5( 387) 3 NODO 1: 0, 7; ( 10)( 19)( 40)( 52)( 140)( 150)( 165) NODO 5: 0, 7; ( 199)( 200)( 238)( 266)( 278)( 300)( 320) NODO 3: 0, 4; ( 461)( 463)( 489)( 569) NODO 8: 1, 2; 2( 801) 6( 880) 4 NODO 2: 0, 4; ( 750)( 762)( 787)( 791) NODO 6: 0, 3; ( 838)( 847)( 858) NODO 4: 0, 3; ( 897)( 935)( 994)

6 FIUBAODD - Curso Servetto6 Primitivas B De Creación –Crear crea un arbol B vacío: inicializa una raíz vacía y la almacena en un archivo nuevo, creando tambien un archivo de referencias a nodos libres vacío. –Cargar inserta elementos ordenados por identificador los registros van a la última hoja, con restricciones de contenido especiales.

7 FIUBAODD - Curso Servetto7 Primitivas B De Recuperación de Registros –Buscar Consulta o recuperación unitaria de registro dado un identificador (falla si no se encuentra un registro con ese identificador) –Listar Reporte o recuperación comprensiva de todo el árbol o de registros entre dos identificadores tope, recorriendo el árbol in order (recorrido único) –Exportar Exportar el árbol en pre orden a un archivo de texto (pruebas de desarrollo)

8 FIUBAODD - Curso Servetto8 Primitivas B De Actualización de Registros El archivo se mantiene siempre organizado –Insertar Inserción de un registro con validación de unicidad Puede producir la división de nodos Todo nuevo registro se inserta ordenado por identificador en una hoja El árbol crece más rápido en ancho y más lento en alto –Modificar Modificación de un registro Se reescribe un único nodo (el identificador no se modifica) –Suprimir Eliminación de un registro Puede producir fusión de nodos

9 FIUBAODD - Curso Servetto9 1. Inserción de registro con identificador 202: NODO 0: 2, 1; 7( 611) 8 NODO 7: 1, 2; 1( 184) 5( 387) 3 NODO 1: 0, 7; ( 10)( 19)( 40)( 52)( 140)( 150)( 165) NODO 5: 0, 7; ( 199)( 200) ( 238)( 266)( 278)( 300)( 320) NODO 3: 0, 4; ( 461)( 463)( 489)( 569) NODO 8: 1, 2; 2( 801) 6( 880) 4 NODO 2: 0, 4; ( 750)( 762)( 787)( 791) NODO 6: 0, 3; ( 838)( 847)( 858) NODO 4: 0, 3; ( 897)( 935)( 994) Capacidades de elementos en nodos internos y hojas respect.: 4, 7 sobreflujo del nodo 5 Los nodos resaltados son los afectados (leídos).

10 FIUBAODD - Curso Servetto10 Se acomodan los registros en el nodo 5 y se devuelve al padre el registro del centro: NODO 0: 2, 1; 7( 611) 8 NODO 7: 1, 2; 1( 184) 5( 387) 3 ( 266) NODO 1: 0, 7; ( 10)( 19)( 40)( 52)( 140)( 150)( 165) NODO 5: 0, 7; ( 199)( 200)(202)( 238) ( 278)( 300)( 320) NODO 3: 0, 4; ( 461)( 463)( 489)( 569) NODO 8: 1, 2; 2( 801) 6( 880) 4 NODO 2: 0, 4; ( 750)( 762)( 787)( 791) NODO 6: 0, 3; ( 838)( 847)( 858) NODO 4: 0, 3; ( 897)( 935)( 994)

11 FIUBAODD - Curso Servetto11 Desde el nodo 7 se dispone un nuevo nodo (el 9) para dividir al 5, se graban los nodos 5 y 9 balanceados, y se inserta en el nodo 7 el registro que subió junto con la referencia al 9 como sucesor derecho: NODO 0: 2, 1; 7( 611) 8 NODO 7: 1, 3; 1( 184) 5( 266) 9( 387) 3 NODO 1: 0, 7; ( 10)( 19)( 40)( 52)( 140)( 150)( 165) NODO 5: 0, 4; ( 199)( 200)(202)( 238) NODO 9: 0, 3; ( 278)( 300)( 320) NODO 3: 0, 4; ( 461)( 463)( 489)( 569) NODO 8: 1, 2; 2( 801) 6( 880) 4 NODO 2: 0, 4; ( 750)( 762)( 787)( 791) NODO 6: 0, 3; ( 838)( 847)( 858) NODO 4: 0, 3; ( 897)( 935)( 994)

12 FIUBAODD - Curso Servetto12 Desde el nodo 0 se graba al nodo 7: NODO 0: 2, 1; 7( 611) 8 NODO 7: 1, 3; 1( 184) 5( 266) 9( 387) 3 NODO 1: 0, 7; ( 10)( 19)( 40)( 52)( 140)( 150)( 165) NODO 5: 0, 4; ( 199)( 200)(202)( 238) NODO 9: 0, 3; ( 278)( 300)( 320) NODO 3: 0, 4; ( 461)( 463)( 489)( 569) NODO 8: 1, 2; 2( 801) 6( 880) 4 NODO 2: 0, 4; ( 750)( 762)( 787)( 791) NODO 6: 0, 3; ( 838)( 847)( 858) NODO 4: 0, 3; ( 897)( 935)( 994)

13 FIUBAODD - Curso Servetto13 Finalmente se termina, sin grabar el nodo 0 dado que no resultó modificado: NODO 0: 2, 1; 7( 611) 8 NODO 7: 1, 3; 1( 184) 5( 266) 9( 387) 3 NODO 1: 0, 7; ( 10)( 19)( 40)( 52)( 140)( 150)( 165) NODO 5: 0, 4; ( 199)( 200)(202)( 238) NODO 9: 0, 3; ( 278)( 300)( 320) NODO 3: 0, 4; ( 461)( 463)( 489)( 569) NODO 8: 1, 2; 2( 801) 6( 880) 4 NODO 2: 0, 4; ( 750)( 762)( 787)( 791) NODO 6: 0, 3; ( 838)( 847)( 858) NODO 4: 0, 3; ( 897)( 935)( 994)

14 FIUBAODD - Curso Servetto14 2. Supresión del registro con identificador 935: NODO 0: 2, 1; 7( 611) 8 NODO 7: 1, 3; 1( 184) 5( 266) 9( 387) 3 NODO 1: 0, 7; ( 10)( 19)( 40)( 52)( 140)( 150)( 165) NODO 5: 0, 4; ( 199)( 200)(202)( 238) NODO 9: 0, 3; ( 278)( 300)( 320) NODO 3: 0, 4; ( 461)( 463)( 489)( 569) NODO 8: 1, 2; 2( 801) 6( 880) 4 NODO 2: 0, 4; ( 750)( 762)( 787)( 791) NODO 6: 0, 3; ( 838)( 847)( 858) NODO 4: 0, 3; ( 897)( 935)( 994) Capacidades de elementos en nodos internos y hojas respect.: 4, 7 subflujo del nodo 5

15 FIUBAODD - Curso Servetto15 Desde el nodo 8 se intenta balancear el 4 con un hermano adyacente, y como no se puede se pasa su contenido al 6 y se libera (el nodo 8 debe bajar el registro con clave 880): NODO 0: 2, 1; 7( 611) 8 NODO 7: 1, 3; 1( 184) 5( 266) 9( 387) 3 NODO 1: 0, 7; ( 10)( 19)( 40)( 52)( 140)( 150)( 165) NODO 5: 0, 4; ( 199)( 200)(202)( 238) NODO 9: 0, 3; ( 278)( 300)( 320) NODO 3: 0, 4; ( 461)( 463)( 489)( 569) NODO 8: 1, 1; 2( 801) 6 (subflujo) NODO 2: 0, 4; ( 750)( 762)( 787)( 791) NODO 6: 0, 6; ( 838)( 847)( 858)(880)(897)(994) Nodos liberados: 4

16 FIUBAODD - Curso Servetto16 Desde el nodo 0 se intenta balancear el 8 con un hermano adyacente, y como se puede, se hace el balanceo y se graba a ambos: NODO 0: 2, 1; 7( 387) 8 NODO 7: 1, 2; 1( 184) 5( 266) 9 NODO 1: 0, 7; ( 10)( 19)( 40)( 52)( 140)( 150)( 165) NODO 5: 0, 4; ( 199)( 200)(202)( 238) NODO 9: 0, 3; ( 278)( 300)( 320) NODO 8: 1, 2; 3( 611) 2( 801) 6 NODO 3: 0, 4; ( 461)( 463)( 489)( 569) NODO 2: 0, 4; ( 750)( 762)( 787)( 791) NODO 6: 0, 6; ( 838)( 847)( 858)(880)(897)(994)

17 FIUBAODD - Curso Servetto17 Finalmente se graba el nodo 0: NODO 0: 2, 1; 7( 387) 8 NODO 7: 1, 2; 1( 184) 5( 266) 9 NODO 1: 0, 7; ( 10)( 19)( 40)( 52)( 140)( 150)( 165) NODO 5: 0, 4; ( 199)( 200)(202)( 238) NODO 9: 0, 3; ( 278)( 300)( 320) NODO 8: 1, 2; 3( 611) 2( 801) 6 NODO 3: 0, 4; ( 461)( 463)( 489)( 569) NODO 2: 0, 4; ( 750)( 762)( 787)( 791) NODO 6: 0, 6; ( 838)( 847)( 858)(880)(897)(994)

18 FIUBAODD - Curso Servetto18 Supresión de un registro que no está en una hoja: 387 NODO 0: 2, 1; 7( 387) 8 NODO 7: 1, 2; 1( 184) 5( 266) 9 NODO 1: 0, 7; ( 10)( 19)( 40)( 52)( 140)( 150)( 165) NODO 5: 0, 4; ( 199)( 200)(202)( 238) NODO 9: 0, 3; ( 278)( 300)( 320) NODO 8: 1, 2; 3( 611) 2( 801) 6 NODO 3: 0, 4; ( 461)( 463)( 489)( 569) NODO 2: 0, 4; ( 750)( 762)( 787)( 791) NODO 6: 0, 6; ( 838)( 847)( 858)(880)(897)(994)

19 FIUBAODD - Curso Servetto19 Se lee el sucesor derecho pidiendo un registro: NODO 0: 2, 1; 7( 387) 8 NODO 7: 1, 2; 1( 184) 5( 266) 9 NODO 1: 0, 7; ( 10)( 19)( 40)( 52)( 140)( 150)( 165) NODO 5: 0, 4; ( 199)( 200)(202)( 238) NODO 9: 0, 3; ( 278)( 300)( 320) NODO 8: 1, 2; 3( 611) 2( 801) 6 NODO 3: 0, 4; ( 461)( 463)( 489)( 569) NODO 2: 0, 4; ( 750)( 762)( 787)( 791) NODO 6: 0, 6; ( 838)( 847)( 858)(880)(897)(994)

20 FIUBAODD - Curso Servetto20 Como el nodo 8 no es hoja debe pedir un registro a su primer sucesor: NODO 0: 2, 1; 7( 387) 8 NODO 7: 1, 2; 1( 184) 5( 266) 9 NODO 1: 0, 7; ( 10)( 19)( 40)( 52)( 140)( 150)( 165) NODO 5: 0, 4; ( 199)( 200)(202)( 238) NODO 9: 0, 3; ( 278)( 300)( 320) NODO 8: 1, 2; 3( 611) 2( 801) 6 NODO 3: 0, 4; ( 461)( 463)( 489)( 569) NODO 2: 0, 4; ( 750)( 762)( 787)( 791) NODO 6: 0, 6; ( 838)( 847)( 858)(880)(897)(994)

21 FIUBAODD - Curso Servetto21 Como el nodo 3 es hoja, devuelve su primer registro: NODO 0: 2, 1; 7( 387) 8 NODO 7: 1, 2; 1( 184) 5( 266) 9 NODO 1: 0, 7; ( 10)( 19)( 40)( 52)( 140)( 150)( 165) NODO 5: 0, 4; ( 199)( 200)(202)( 238) NODO 9: 0, 3; ( 278)( 300)( 320) NODO 8: 1, 2; 3( 611) 2( 801) 6 NODO 3: 0, 3; ( 463)( 489)( 569) // ( 461) NODO 2: 0, 4; ( 750)( 762)( 787)( 791) NODO 6: 0, 6; ( 838)( 847)( 858)(880)(897)(994)

22 FIUBAODD - Curso Servetto22 El padre del 3 lo graba (si hubiera quedado con subflujo debería balancearlo o fusionarlo con un hermano adyacente): NODO 0: 2, 1; 7( 387) 8 NODO 7: 1, 2; 1( 184) 5( 266) 9 NODO 1: 0, 7; ( 10)( 19)( 40)( 52)( 140)( 150)( 165) NODO 5: 0, 4; ( 199)( 200)(202)( 238) NODO 9: 0, 3; ( 278)( 300)( 320) NODO 8: 1, 2; 3( 611) 2( 801) 6// (461) NODO 3: 0, 3; ( 463)( 489)( 569) NODO 2: 0, 4; ( 750)( 762)( 787)( 791) NODO 6: 0, 6; ( 838)( 847)( 858)(880)(897)(994)

23 FIUBAODD - Curso Servetto23 El padre del 8 (la raíz) no necesita grabarlo porque no se modificó, así que sólo sustituye el registro a eliminar por el que le subió 8: NODO 0: 2, 1; 7( 461) 8 NODO 7: 1, 2; 1( 184) 5( 266) 9 NODO 1: 0, 7; ( 10)( 19)( 40)( 52)( 140)( 150)( 165) NODO 5: 0, 4; ( 199)( 200)(202)( 238) NODO 9: 0, 3; ( 278)( 300)( 320) NODO 8: 1, 2; 3( 611) 2( 801) 6 NODO 3: 0, 3; ( 463)( 489)( 569) NODO 2: 0, 4; ( 750)( 762)( 787)( 791) NODO 6: 0, 6; ( 838)( 847)( 858)(880)(897)(994)

24 FIUBAODD - Curso Servetto24 Se termina grabando la raíz: NODO 0: 2, 1; 7( 461) 8 NODO 7: 1, 2; 1( 184) 5( 266) 9 NODO 1: 0, 7; ( 10)( 19)( 40)( 52)( 140)( 150)( 165) NODO 5: 0, 4; ( 199)( 200)(202)( 238) NODO 9: 0, 3; ( 278)( 300)( 320) NODO 8: 1, 2; 3( 611) 2( 801) 6 NODO 3: 0, 4; ( 463)( 489)( 569) NODO 2: 0, 4; ( 750)( 762)( 787)( 791) NODO 6: 0, 6; ( 838)( 847)( 858)(880)(897)(994)

25 FIUBAODD - Curso Servetto25 Organización B+ Se diferencia de la B en que los registros sólo se almacenan en los nodos hoja, que están encadenados entre sí Permite recuperación secuencial Los nodos internos o índice, almacenan sólo identificadores que sirven de guía para llegar a las hojas Conforman un índice B a las hojas

26 FIUBAODD - Curso Servetto26 Capacidades de elementos en nodos internos y hojas respect.: 4, 6 NODO 0: 2, 1; 8(41543) 7 NODO 8: 1, 3; 2(12853) 9(20173) 5(33810) 4 NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9 NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5 NODO 5: 0, 6; (20173)(21373)(23548)(27906)(28195)(29084) 4 NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1 NODO 7: 1, 2; 1(46396) 6(48442) 3 NODO 1: 0, 3; (41543)(44353)(45454) 6 NODO 6: 0, 3; (46396)(47165)(47405) 3 NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0

27 FIUBAODD - Curso Servetto27 Primitivas B+ Mismas primitivas que la organización B excepto la de búsqueda, y una adicional de recuperación secuencial –La búsqueda es aproximada si no se encuentra en una hoja el registro con el identificador dado, devuelve el primer registro con identificador mayor al buscado (por si se inicia recorrido secuencial) –Siguiente Devuelve el siguiente registro a partir del último accedido Estrategias –Puede haber una primitiva para devolver el primer registro del archivo

28 FIUBAODD - Curso Servetto28 1. Inserción del registro con clave 25000: NODO 0: 2, 1; 8(41543) 7 NODO 8: 1, 3; 2(12853) 9(20173) 5(33810) 4 NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9 NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5 NODO 5: 0, 6; (20173)(21373)(23548) (27906)(28195)(29084) 4 NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1 NODO 7: 1, 2; 1(46396) 6(48442) 3 NODO 1: 0, 3; (41543)(44353)(45454) 6 NODO 6: 0, 3; (46396)(47165)(47405) 3 NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0 Sobreflujo en nodo 5.

29 FIUBAODD - Curso Servetto29 Se acomodan los registros en elnodo 5 y de devuelve al padre el registro central: NODO 0: 2, 1; 8(41543) 7 NODO 8: 1, 3; 2(12853) 9(20173) 5(33810) 4 (27906) NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9 NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5 NODO 5: 0, 6; (20173)(21373)(23548)(25000) (28195)(29084) 4 NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1 NODO 7: 1, 2; 1(46396) 6(48442) 3 NODO 1: 0, 3; (41543)(44353)(45454) 6 NODO 6: 0, 3; (46396)(47165)(47405) 3 NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0

30 FIUBAODD - Curso Servetto30 Desde el nodo 8 se dispone de un nodo nuevo (10) y se acomoda el registro que subió primero, y luego la segunda mitad del nodo con sobreflujo, se graban los dos nodos y se incorpora al nodo 8 un orientador: NODO 0: 2, 1; 8(41543) 7 NODO 8: 1, 3; 2(12853) 9(20173) 5(27906) 10(33810) 4 NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9 NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5 NODO 5: 0, 4; (20173)(21373)(23548)(25000) 10 NODO 10: 0, 3; (27906)(28195)(29084) 4 NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1 NODO 7: 1, 2; 1(46396) 6(48442) 3 NODO 1: 0, 3; (41543)(44353)(45454) 6 NODO 6: 0, 3; (46396)(47165)(47405) 3 NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0

31 FIUBAODD - Curso Servetto31 Desde el nodo 0 se graba al nodo 8: NODO 0: 2, 1; 8(41543) 7 NODO 8: 1, 3; 2(12853) 9(20173) 5(27906) 10(33810) 4 NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9 NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5 NODO 5: 0, 4; (20173)(21373)(23548)(25000) 10 NODO 10: 0, 3; (27906)(28195)(29084) 4 NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1 NODO 7: 1, 2; 1(46396) 6(48442) 3 NODO 1: 0, 3; (41543)(44353)(45454) 6 NODO 6: 0, 3; (46396)(47165)(47405) 3 NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0

32 FIUBAODD - Curso Servetto32 Se termina sin necesidad de grabar la raíz, ya que noresultó modificada: NODO 0: 2, 1; 8(41543) 7 NODO 8: 1, 3; 2(12853) 9(20173) 5(27906) 10(33810) 4 NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9 NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5 NODO 5: 0, 4; (20173)(21373)(23548)(25000) 10 NODO 10: 0, 3; (27906)(28195)(29084) 4 NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1 NODO 7: 1, 2; 1(46396) 6(48442) 3 NODO 1: 0, 3; (41543)(44353)(45454) 6 NODO 6: 0, 3; (46396)(47165)(47405) 3 NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0

33 FIUBAODD - Curso Servetto33 Supresión de registro con identificador 45454: NODO 0: 2, 1; 8(41543) 7 NODO 8: 1, 3; 2(12853) 9(20173) 5(27906) 10(33810) 4 NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9 NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5 NODO 5: 0, 4; (20173)(21373)(23548)(25000) 10 NODO 10: 0, 3; (27906)(28195)(29084) 4 NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1 NODO 7: 1, 2; 1(46396) 6(48442) 3 NODO 1: 0, 3; (41543)(44353)(45454) 6 NODO 6: 0, 3; (46396)(47165)(47405) 3 NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0 Subflujo en nodo 1

34 FIUBAODD - Curso Servetto34 Desde el padre (nodo 7) se intenta balancear con hermano adyacente, y como no se puede se fusionan y se libera al 6: NODO 0: 2, 1; 8(41543) 7 NODO 8: 1, 3; 2(12853) 9(20173) 5(27906) 10(33810) 4 NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9 NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5 NODO 5: 0, 4; (20173)(21373)(23548)(25000) 10 NODO 10: 0, 3; (27906)(28195)(29084) 4 NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1 NODO 7: 1, 2; 1(48442) 3 subflujo NODO 1: 0, 3; (41543)(44353)(46396)(47165)(47405) 3 NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0

35 FIUBAODD - Curso Servetto35 Desde el padre (nodo 0) se intenta balancear con hermano adyacente, y como se puede, se balancean el 8 y el 7 y se graban: NODO 0: 2, 1; 8(33810) 7 NODO 8: 1, 3; 2(12853) 9(20173) 5(27906) 10 NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9 NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5 NODO 5: 0, 4; (20173)(21373)(23548)(25000) 10 NODO 10: 0, 3; (27906)(28195)(29084) 4 NODO 7: 1, 2; 4(41543) 1(48442) 3 NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1 NODO 1: 0, 3; (41543)(44353)(46396)(47165)(47405) 3 NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0

36 FIUBAODD - Curso Servetto36 Se termina grabando la raíz: NODO 0: 2, 1; 8(33810) 7 NODO 8: 1, 3; 2(12853) 9(20173) 5(27906) 10 NODO 2: 0, 4; ( 951)( 2394)( 4963)( 7790) 9 NODO 9: 0, 5; (12853)(12917)(13401)(18004)(18488) 5 NODO 5: 0, 4; (20173)(21373)(23548)(25000) 10 NODO 10: 0, 3; (27906)(28195)(29084) 4 NODO 7: 1, 2; 4(41543) 1(48442) 3 NODO 4: 0, 4; (33810)(34466)(39784)(39794) 1 NODO 1: 0, 3; (41543)(44353)(46396)(47165)(47405) 3 NODO 3: 0, 5; (48442)(49460)(50699)(58648)(64807) 0

37 Archivos B vs Archivos B+ Ventajas de la Organización B sobre la B+ –Puede requerir menos nodos que un B+ para cargar los mismos datos (no tiene redundancia de identificadores). –Algunos datos se pueden encontrar antes de llegar a una hoja. Desventajas de la organización B –Sólo una pequeña proporción de datos se puede encontrar tempranamente. –Si los datos son grandes, los nodos internos tienen pocos hijos y el árbol es alto.

38 Organizaciones B* y B# Son variantes de las organizaciones B y B+ con primitivas de inserción y supresión modificadas de manera que garanticen que todos los nodos del árbol excepto el raíz tengan ocupada más de dos tercios de su capacidad –Altas: cuando un nodo queda con sobreflujo, se trata de balancear con un hermano adyacente, y si no se puede porque el hermano está completo, se agrega un nodo nuevo entre medio y se balancea la carga de los dos originales entre tres (quedan con 2/3 de su capacidad ocupada) –Bajas: cuando un nodo queda con subflujo y no se puede balancear con un hermano adyacente porque éste tiene carga mínima, se intenta balancear con otro hermano, y si tampoco se puede se libera uno de ellos y se distribuye su carga entre los otros dos, que quedan completos


Descargar ppt "FIUBAODD - Curso Servetto1 Organizaciones B, B+, B* y B# Árboles Balanceados Árboles en Archivos Primitivas."

Presentaciones similares


Anuncios Google