La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

IBD Clase 6. UNLP - Facultad de InformáticaIBD - CLASE 6 2 Árboles Índices: problemas Indices grandes -> mem. secundaria Acceso a mem. secundaria -> lento.

Presentaciones similares


Presentación del tema: "IBD Clase 6. UNLP - Facultad de InformáticaIBD - CLASE 6 2 Árboles Índices: problemas Indices grandes -> mem. secundaria Acceso a mem. secundaria -> lento."— Transcripción de la presentación:

1 IBD Clase 6

2 UNLP - Facultad de InformáticaIBD - CLASE 6 2 Árboles Índices: problemas Indices grandes -> mem. secundaria Acceso a mem. secundaria -> lento Búsqueda binaria -> demasiados desplazamientos En un índice de 1000 items se requieren 9.5 (aprox.) desplazamientos en promedio Costo de mantener índice ordenado Es necesario un método donde las reorganizaciones sean locales y no masivas

3 UNLP - Facultad de InformáticaIBD - CLASE 6 3 Arboles Arbol: Estructura de datos que permiten localizar en forma más rápida información de un archivo. (usando esta estructura para los indices) Tipos de árboles Binarios AVL Multicamino Balanceado (B, B*, B+)

4 UNLP - Facultad de InformáticaIBD - CLASE 6 4 Arboles Estructura JERÁRQUICA no lineal Relaciones padre-hijo entre nodos Ejemplos: sistema de ficheros, estructura de un libro, diagrama de clases JAVA, diagrama organizativo... MiEmpresa VentasI+DProducción PortátilesSobremesaESInternacional EuropaAsiaAmérica

5 UNLP - Facultad de InformáticaIBD - CLASE 6 5 Arboles Un árbol se caracteriza por estar formado por una serie de nodos conectados por una serie de aristas que verifican que: hay un único nodo raíz cada nodo, excepto la raíz, tiene un único padre hay un único camino (desde la raíz hasta cada nodo)

6 UNLP - Facultad de InformáticaIBD - CLASE 6 6 Arboles Un árbol de tipo base T es: la estructura vacía, o un nodo de tipo T con un número finito de estructuras árbol de tipo base T disjuntas llamadas subárboles ::= > | ::= { } Puede estar ordenado o no

7 UNLP - Facultad de InformáticaIBD - CLASE 6 7 Arboles: terminología básica subárbol A BDC GH E F IJ K Raíz: único nodo sin padre Nodo interno: tiene al menos un hijo Nodo hoja (externo): no tiene hijos Descendiente directo: hijo Descendientes: hijo, nieto... Subárbol: árbol formado por un nodo y sus descendientes

8 UNLP - Facultad de InformáticaIBD - CLASE 6 8 Arboles: terminología básica Grado de un nodo: número de descendientes directos Grado del árbol: mayor grado de sus nodos Árbol binario: árbol de grado 2 Cada nodo tiene a lo sumo dos descendientes directos Árbol multicamino: Cada nodo puede tener n descendientes directos Lista= árbol degenerado de grado 1

9 UNLP - Facultad de InformáticaIBD - CLASE 6 9 Arboles: terminología básica Profundidad de un nodo: número de predecesores Altura del árbol: profundidad máxima de cualquier nodo A BDC GH E F IJ K profundidad(A)=0 profundidad(H)=2 altura=3

10 UNLP - Facultad de InformáticaIBD - CLASE 6 10 Arboles: terminología básica Camino: existe un camino del nodo X al nodo Y, si existe una sucesión de nodos que permitan llegar desde X a Y. camino(A,K)={A,B,F,K} camino(C,K)={} A BDC GH E F IJ K

11 UNLP - Facultad de InformáticaIBD - CLASE 6 11 Arboles: árbol binario Es un árbol de grado 2 Cada nodo tiene de 0 a 2 descendientes directos: el hijo izquierdo y el derecho ::= > | ::= A B C FG D E H I

12 UNLP - Facultad de InformáticaIBD - CLASE 6 12 Arboles: árbol binario Aplicación: expresiones aritméticas, árboles de decisión, búsqueda (ABB) En algunos casos se exige que el árbol sea completo = todo nodo interno tiene dos descendientes. Árbol binario completoÁrbol binario no completo

13 UNLP - Facultad de InformáticaIBD - CLASE 6 13 Arboles: árbol binario Ejemplo: expresiones aritméticas nodo interno: operadores nodos hoja: operandos 2*(a-1)+3*b 2 a1 3b

14 UNLP - Facultad de InformáticaIBD - CLASE 6 14 Arboles: árbol binario Ejemplo de aplicación: árboles de decisión nodo interno: preguntas con respuesta si/no nodos hoja: decisiones ¿Dónde cenamos? ¿Cómida rápida? ¿Con café?¿Cara? TrattoríaMcDonalds Rodizio Pizza hut Sí No SíNoSíNo

15 UNLP - Facultad de InformáticaIBD - CLASE 6 15 Arboles: árbol binario Ejemplo: dada una lista de claves ordenada AX CL DE FB FT HN JD KF NR PA RF SD TK WA YJ KF SDFB CL DE AX HN JDFT PA RF NR WS YSTK

16 UNLP - Facultad de InformáticaIBD - CLASE 6 16 Arboles: árbol binario Cada nodo es un registro de long. fija Cómo se almacena ? Archivo con reg. de long fija La informacion en el archivo no está físicamente ordenada Ver ejemplo del archivo para el árbol del slide anterior Costo de espacio (muchos campos vacios)

17 UNLP - Facultad de InformáticaIBD - CLASE 6 17 Arboles: árbol binario Insertar las claves LV NP MB KF SD FB CL DEAX HN JD FT PA RFNR WS YSTK LV NP MB

18 UNLP - Facultad de InformáticaIBD - CLASE 6 18 Arboles: árbol binario Inserción Sólo ligar al nodo apropiado (no reorganizar) Para acceder al nodo MB son necesarios 7 accesos Para árboles con cientos de claves, se requieren más de 30 accesos.

19 UNLP - Facultad de InformáticaIBD - CLASE 6 19 Arboles: árbol binario Arbol balanceado: la altura de la trayectoria más corta hacia una hoja no difiere de la altura de la trayectoria mas grande Inconveniente: los árboles binarios (como en el ejemplo) se desbalancean fácilmente -> búsquedas más costosas (mayor cantidad de desplazamientos) Solución: reorganizar los nodos del árbol a medida que se reciben las claves. Resultado: Arboles AVL

20 UNLP - Facultad de InformáticaIBD - CLASE 6 20 Arboles Tipos de árboles Binarios AVL Multicamino Balanceado (B, B*, B+)

21 UNLP - Facultad de InformáticaIBD - CLASE 6 21 Arboles AVL Arbol binario balanceado en altura. La diferencia máx. de altura entre las alturas de cualquiera de 2 subárboles que comparten raiz común es 1 Se llama árbol balanceado en altura ó árbol BA(1) Las inserciones y eliminaciones se efectúan con un mínimo de accesos Miembro de una clase más gral. de árboles balanceados en altura BA(k): máx. diferencia de altura es k

22 UNLP - Facultad de InformáticaIBD - CLASE 6 22 Arboles AVL Garantizan un cierto nivel mínimo de desempeño de búsqueda. La estructura debe ser respetada -> al insertar nuevos nodos, se realizan rotaciones restringidas a un área local del árbol Como son árboles binarios, con muchos niveles son muy profundos.

23 UNLP - Facultad de InformáticaIBD - CLASE 6 23 Arboles AVL En un árbol binario completamente balanceado, el peor caso de búsqueda para encontrar 1 clave (considerando N claves posibles) busca en log 2 (N+1) niveles del árbol En un árbol AVL el peor caso de búsqueda podría ser buscar en 1.44 log 2 (N+2) niveles del árbol

24 UNLP - Facultad de InformáticaIBD - CLASE 6 24 Arboles AVL Para claves, un árbol completamente balanceado requiere desplazamiento en 20 niveles para buscar alguna de las claves. En un árbol AVL el Nº máx. de niveles a buscar es 28 Esto es bueno para almacenamiento en memoria principal 20 o 28 es inaceptable. En almacenamiento secundario es deseable a lo sumo 5 o 6 desplazamientos, 20 o 28 es inaceptable.

25 UNLP - Facultad de InformáticaIBD - CLASE 6 25 Arboles Volviendo a los 2 problemas iniciales: La búsqueda binaria requiere demasiados desplazamientos Mantener un índice en orden es costoso Los árboles balanceados en altura proporcionan solución aceptable al segundo problema.

26 UNLP - Facultad de InformáticaIBD - CLASE 6 26 Arboles Binarios paginados Desplazarse en mem. secundaria tiene un costo de tiempo relativamente alto Aunque, una vez en posición, leer o escribir un conjunto de bytes continuos es rápido La combinación de : desplazamiento lento + transferencia rápida -> conduce a la idea de paginación

27 UNLP - Facultad de InformáticaIBD - CLASE 6 27 Arboles Binarios paginados Al dividir un arbol binario en págs y después almacenar c/pág en bloques de localidad contiguas en disco se puede reducir el Nº de desplazamientos para cualquier búsqueda. Paginación -> solución potencial al problema de búsqueda.

28 UNLP - Facultad de InformáticaIBD - CLASE 6 28 Arboles Binarios paginados Estrategia: Dividir el árbol binario en páginas Almacenar cada página en un bloque de direcciones contiguas en disco Ver ejemplo (posibilidad de acceder a 63 nodos con sólo 2 accesos a disco) Dividir el árbol en páginas permite búsquedas más rápidas en almacenamiento secundario.

29 UNLP - Facultad de InformáticaIBD - CLASE 6 29 Arboles Binarios paginados Ejemplo: Suposición de árbol completamente balanceado Páginas de 8 Kb -> 511 claves por pág. Para buscar cualquiera de claves se requieren sólo 3 desplazamientos.

30 UNLP - Facultad de InformáticaIBD - CLASE 6 30 Arboles Binarios paginados Ejemplo: Pero caso de búsqueda en un árbol binario balanceado: log 2 (N+1), N: cantidad de claves Para las versiones paginadas del mismo árbol: log k+1 (N+1), N: cantidad de claves, k: cant. claves por pág. Comparación log 2 ( ) = 27 desplazamientos log ( )= 3 desplazamientos

31 UNLP - Facultad de InformáticaIBD - CLASE 6 31 Arboles Binarios paginados Uso de páginas grandes: Cada acceso a una página requiere transmitir muchos datos, la mayoría no usados. Hay tiempo de transmisión adicional, pero se ahorran muchos desplazamientos que consumen más tiempo que las retransmisiones. Problemas: Cómo construirlo ? Cómo elegir la raiz ? Cómo mantenerlo balanceado ? La idea de agrupar claves en páginas es MB, pero no se ha encontrado forma de agrupar las claves correctamente

32 UNLP - Facultad de InformáticaIBD - CLASE 6 32 Arboles Tipos de árboles Binarios AVL Multicamino Balanceado (B, B*, B+)

33 UNLP - Facultad de InformáticaIBD - CLASE 6 33 Arboles Multicamino Árboles n-arios o Multicamino: Árbol en el que cualquier nodo puede tener cualquier número de hijos Árboles con grado 2

34 UNLP - Facultad de InformáticaIBD - CLASE 6 34 Arboles Multicamino Implementación 1 Hijos como arreglo de referencias Desaprovecha memoria si el número de hijos es muy variable No puede usarse si el número de hijos es ilimitado... A B C D E F G H I J

35 UNLP - Facultad de InformáticaIBD - CLASE 6 35 Arboles Multicamino Implementación 2 Hijos como una lista enlazada ABC hijos FED siguiente hijos G siguiente hijos siguiente H hijos I siguiente J hijos

36 UNLP - Facultad de InformáticaIBD - CLASE 6 36 Arboles Tipos de árboles Binarios AVL Multicamino Balanceado (B, B*, B+)

37 UNLP - Facultad de InformáticaIBD - CLASE 6 37 Arboles B Hasta ahora, se han construido árboles desde la raiz hacia abajo. Problemas: Elegir la raiz Mantenerlo balanceado Arboles B construirlos hacia arriba a partir de la base. La raiz emerge con la construcción.

38 UNLP - Facultad de InformáticaIBD - CLASE 6 38 Árboles B Árboles B (balanceados) Son árboles multicamino con una construcción especial en forma ascendente que permite mantenerlo balanceado a bajo costo.

39 UNLP - Facultad de InformáticaIBD - CLASE 6 39 Arboles B Propiedades de un árbol B de orden M: Orden: cant. máx. de punteros por nodo Cant. de punteros= cant. claves + 1 Ningún nodo tiene más de M hijos C/nodo (menos raíz y los terminales) tienen como mínimo [M/2] hijos La raíz tiene como mínimo 2 hijos (o sino ninguno) Todos los nodos terminales a igual nivel Nodos no terminales con K hijos contienen K-1 nodos. Los nodos terminales tienen: Minimo: [M/2]–1 nodos Máximo: M–1 nodos Formato del nodo Cada R i-1 < R i < R i+1

40 UNLP - Facultad de InformáticaIBD - CLASE 6 40 Arboles B Estructura Archivo con registros de long. Fija Cada registro tiene una pág. o nodo En Pascal (ver ejemplo): PaginaAB=record cant_claves: integer claves: array [1..maxllaves] of char; hijos: array [1..maxhijos] of integer; end

41 UNLP - Facultad de InformáticaIBD - CLASE 6 41 Arboles B Definición: nodo adyacente hermano Dos nodos son adyacentes hermanos si tienen el mismo padre y son apuntados por punteros adyacentes en el padre. Operaciones Búsqueda Borrado Creación e inserción modificación

42 UNLP - Facultad de InformáticaIBD - CLASE 6 42 Arboles B Búsqueda de información Comienza desde el nodo raíz Busca la llave en el nodo Sino la localiza se toma el puntero correspondiente entre las claves existentes Si no es puntero nulo se toma ese nodo y se repite desde principio. Si es un puntero nulo el elemento no se encuentra en el árbol. Ver ejemplos

43 UNLP - Facultad de InformáticaIBD - CLASE 6 43 Arboles B Algoritmo (iterativo) encontro := false (k llave) tomar la raíz Repeat N nro de elementos nodo Case k = llave del registro encontro := true k < llave( R1) P := Po k > llave (Rn) P := Pn otherwise P := Pi (i/ Ri-1 < k

44 UNLP - Facultad de InformáticaIBD - CLASE 6 44 Arboles Performance Orden M, # de nodos terminales N, N+1 punteros nulos. Accesos: Mejor caso: 1 lectura Pero caso: h lecturas (con h altura del árbol) Como acotamos h Nivel # mínimo de descendientes * [M/2] 3 2 * [M/2] * [M/2] …………………………………………………. h 2 * [M/2] h-1

45 UNLP - Facultad de InformáticaIBD - CLASE 6 45 Arboles Relacion entre h y # de nodos N+1 >= 2 * [M/2] h-1 h <= 1 + log [M/2] ((N+1)/2) M = 512 y N = h <= 3.37 (4 lecturas encuentra un registro)

46 UNLP - Facultad de InformáticaIBD - CLASE 6 46 Arboles B Inserción (creación) Comienza con una búsqueda que llega hasta el nivel hoja Después de encontrar lugar de inserción en el nivel hoja, el trabajo de inserción, división y promoción continúa en forma ascendente desde abajo

47 UNLP - Facultad de InformáticaIBD - CLASE 6 47 Arboles B Inserción (creación) Los registros se insertan en un nodo terminal Casos posibles El registro tiene lugar en el nodo terminal (no se produce overflow): solo se hacen reacomodamientos internos en el nodo El registro no tiene lugar en el nodo terminal (se produce overflow): el nodo se divide y los elementos se reparten entre los nodos, hay una promoción al nivel superior, y esta puede propagarse y generar una nueva raíz. Ver ejemplos

48 UNLP - Facultad de InformáticaIBD - CLASE 6 48 Arboles B Algoritmo (iterativo) { reg.: reg a insertar fin: inserción finalizada encontro: elemento ya está P: puntero al nodo N_G: nodo sobredimensionado N : # reg } { busco la llave en el árbol } If encontro Then reportar llave repetida Else { insertar elemento } P := nil encontro := falso Repeat Si nodo no esta lleno entonces poner reg y reordenar encontro sino copiar el nodo enN_G insertar reg. en N_G reg:= centro de N_G nodo corr.:=1/2 N_G izq nodo nuevo:=1/2 N_G der If nodo raiz nuevo then generar nuevos punteros Until encontro

49 UNLP - Facultad de InformáticaIBD - CLASE 6 49 Arboles B Algoritmo (recursivo) Funcion inserta (Nrr_Actual, llave, hijo_promo, llave_promo) Si Nrr_Actual = nulo entonces llave_promo := llave hijo_promo := nulo devuelve Promocion (promueve llave original y nulo) sino leer página de Nrr_acutal en pagina buscar llave en pagina pos := posicion donde deberia estar en llave Si encuentra llave entonces devuelve (error) valordevuelto := inserta(pagina, hijo[pos], llave, nrr_P_A, llave_P_a) Si valordevuelto <> promocion entonces devuelve(valordevuelto) sino si hay espacio en pagina para llave_p_a entonces insertar(llave_p_a, nrr_p_a en pagina) promovida abajo devuelve (no promocion) sino divide( llave_p_a, nrr_p_a, pagina, llave_promo, hijo_promo, página_nueva) escribe pagina en archivo en nrr_actual escribe pagina_nueva en hijo_promo devuelve promoción promociona Fin Si llave_promo, hijo_promo fin funcion

50 UNLP - Facultad de InformáticaIBD - CLASE 6 50 Arboles B Procedimiento Divide (llave_i, nrr_i, pagina, llave_promo, hijo_promo, pagina_nueva ) copiar pagina + llave a un nodo que pueda contener a todas las llaves. insertar llave_i, nrr_i en los lugares correctos de la pagina crear una nueva pagina para pagina_nueva asignar a llave_promo el valor de la llave de enmedio de la pagina grande asignar a hijo_d_promo el nrr de pagina_nueva copiar las llaves y apuntadores que preceen a llave_promo en pagina idem posteriores pagina_nueva fin procedemiento

51 UNLP - Facultad de InformáticaIBD - CLASE 6 51 Arboles B Performance Mejor caso (sin overflow) H lecturas 1 escritura Peor caso (overflow hasta la raíz, aumenta en uno el nivel del árbol) H lecturas 2h+1 escrituras (dos por nivel más la raíz) Estudios realizados M = 10 25% divisiones M = 100 2% divisiones

52 UNLP - Facultad de InformáticaIBD - CLASE 6 52 Arboles B Eliminación Mejor caso: borra un elemento del nodo y no produce underflow, solo reacomodos ( # elementos >= [M/2]-1 Peor caso: se produce underflow, #elementos < [M/2] – 1 Eliminar Nodo terminal Caso 1 Nodo no terminal (llevar a un nodo terminal) Caso 2 Dos soluciones Redistribuir Caso 3 Concatenar Caso 4

53 UNLP - Facultad de InformáticaIBD - CLASE 6 53 Arboles B Redistribuir Cuando un nodo tiene underflow puede trasladarse claves de un nodo adyacente hermano (en caso que este tenga suficientes elementos) Concatenación Si un nodo adyacente hermano está al minimo (no le sobra ningún elemento, no se puede redistribuir), se concatena con un nodo adyacente disminuyendo el # de nodos (y en algunos casos la altura del árbol)

54 UNLP - Facultad de InformáticaIBD - CLASE 6 54 Arboles B Algoritmo de eliminación (iterativo) { fin: indica fin del borrado n_g:nodo tamaño mayor al normal ady: nodo adyacente hermano reg: reg. a borrar} {buscar reg en el árbol } If reg no está en un nodo terminal then buscar el sucesor de reg en un nodo terminal intercalar reg con su sucesor { eliminación de reg } fin := falso repeat remover reg y el puntero asociado If nodo corriente > [M/2] -1 elem. then fin := true else if es posible redistribuir then {redistribuir}{ady.>min.} copiar ady y nodo actual en n_g dividir n_g promover nueva llave a padre armar nodo actual y ady con la mitad de n_g en c/u fin := true else {concatenar} elegir el mejor ady para concat. poner ady y nodo actual juntos y acoplarle elemnto nodo padre eliminar nodo que sobra y producir enganches nuevo reg elemento que bajo nodo padra y que debemos eliminar Until fin IF no hay registro en la raiz then nueva raiz nodo corriente liberar vieja raíz

55 UNLP - Facultad de InformáticaIBD - CLASE 6 55 Arboles Performance Mejor caso (borra de un nodo terminal) H lecturas 1 escritura (escribir el nodo sin el elem. borrado) Peor caso (concatenación lleva a decrementar el nivel del árbol en 1) 2h – 1 lecturas H + 1 escrituras


Descargar ppt "IBD Clase 6. UNLP - Facultad de InformáticaIBD - CLASE 6 2 Árboles Índices: problemas Indices grandes -> mem. secundaria Acceso a mem. secundaria -> lento."

Presentaciones similares


Anuncios Google