1 / 50

Almacenamiento y Recuperacion de Información TAD_ABB

Almacenamiento y Recuperacion de Información TAD_ABB. Ana Lilia Laureano Cruces Universidad Autónoma Metroplotiana. Arboles Binarios de Búsqueda Arboles Blanceados (AVL) Grafos y sus aplicaciones Estructuras de Archivos Ordenamientos externos Indices Arboles B y B + Dispersion Hashing.

albin
Télécharger la présentation

Almacenamiento y Recuperacion de Información TAD_ABB

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Almacenamiento y Recuperacion de Información TAD_ABB Ana Lilia Laureano Cruces Universidad Autónoma Metroplotiana

  2. Arboles Binarios de Búsqueda • Arboles Blanceados (AVL) • Grafos y sus aplicaciones • Estructuras de Archivos • Ordenamientos externos • Indices • Arboles B y B+ • Dispersion Hashing

  3. Estructuras Jerárquicas • Estructuras Jerárquicas: es la organización de datos en forma de jerarquía o niveles. Su principal característica es que mantienen una relación de uno a muchos (1:n), entre sus elementos.

  4. Árboles Binarios

  5. Terminología básica de las estructuras jerárquicas • Nodo raíz • Nodo padre • Hijo derecho • Hijo izquierdo • Nodo hoja • Nodo hermano

  6. Terminología básica de las estructuras jerárquicas • Ancestros • Nodo descendiente • Subárbol izquierdo • Subárbol derecho • Nivel de un nodo

  7. 5 3 8 9 2 4 6 1 7 10

  8. El problema de la búsqueda • Una forma eficiente de realizar una búsqueda es utilizando una estructura lineales con el algoritmo de búsqueda binaria aplicado en una tabla de memoria estática. • Desventajas en la inserción y eliminación de elementos. • Con una lista ordenada se presentaba un mejor comportamiento

  9. Contar con estructuras jerárquicas representa una opción para aprovechar las características positivas de estas estructuras lineales.

  10. Arbol binario de búsqueda (ABB) • Es una estructura de datos que guarda información no repetida para administrar eficientemente la búsqueda de los propios datos. Es una estructura jerárquica. En este caso se restringe la relación de 1:2 como máximo.

  11. Árbol binario de búsqueda (ABB) • El ordenamiento implica que para cada elemento del ABB, los elementos menores están a su izquierda y los mayores a su derecha.

  12. Ejemplos 2 8 5 1 3 4 3 9

  13. Ejemplos 3 1 8 6 9 5 7

  14. Ejemplos 7 2 9 6 4 5

  15. Contra-Ejemplos 3 4 2 1 5 9 1

  16. Contra-Ejemplos 3 1 6 9 8 5 7

  17. Especificación del TAD ABB • Elementos: los elementos se identifican como NODOS. Cada uno de ellos contiene un dato simple o estructurado. • Estructura: posee una estructura jerárquica a excepción del árbol vacío; solo hay una raíz y los demás son árboles disjuntos. Cada nodo a excepción del nodo raíz tiene un único padre y tiene uno, dos o no tiene hijos. El hijo izquierdo siempre tendrá un valor menor, siendo la raíz del subárbol izquierdo. Lo mismo en el caso de la derecha.

  18. Operaciones del TAD ABB • Crear • Utilidad: crea o inicializa un árbol • Entradas: el espacio de memoria donde se creará el árbol • Salidas: el árbol inicializado • PreCond: Ninguna • PostCond: el árbol esta inicializado sin elementos

  19. Operaciones del TAD ABB • Buscar • Utilidad: busca un elemento dentro del árbol ABB • Entradas: el árbol donde va a buscar y el elemento (valor) a buscar • Salidas: regresa falso si el valor no se encuentra o verdadero caso contrario con un apuntador donde se encuentra ese valor. • PreCond: exista el árbol ABB • PostCond: ninguna

  20. Operaciones del TAD ABB • Insertar • Utilidad: inserta un nuevo elemento dentro del árbol ABB • Entradas: el árbol ABB donde va a insertar y el elemento nuevo • Salidas: el árbol quien tiene un nuevo valor insertado como hoja, en la posición que le corresponde. • PreCond: el árbol ABB existe y el elemento nuevo no esta en él. • PostCond: el árbol ABB tiene un elemento nuevo insertado como hoja

  21. Operaciones del TAD ABB • Borrar • Utilidad: elimina un elemento del árbol • Entradas: el árbol ABB de donde se va a borrar el elemento y el elemento (dato) a borrar • Salidas: regresa falso si el dato no se encuentra y verdadero en caso contrario y si lo pudo borrar, en cuyo caso regresa un árbol modificado • PreCond: el árbol ABB existe y el elemento dato se encuentra en dicho árbol • PostCond: el árbol ABB contiene un elemento menos

  22. Operaciones del TAD ABB • Recorrer • Utilidad: despliega los elementos almacenados en el árbol • Entradas: el árbol ABB a desplegar y el orden en el que se desplegarán los elementos • Salidas: cada nodo se procesa exactamente una vez. El orden en que se procesan los nodos depende del valor de orden: PreOrden, InOrden y PostOrden • PreCond: existe el árbol ABB • PostCond: ninguna

  23. Algoritmo de búsqueda • Coloque un apuntador auxiliar en la raíz del árbol • Mientras no se haya encontrado el valor que se busca y el apuntador auxiliar no este vacío (fuera del árbol): • 2.1. Verifique si la información del nodo señalado, por el apuntador auxiliar es mayor, menor o igual al nodo buscado. • 2.2. Si es mayor mueva el apuntador auxiliar al nodo hijo derecho; caso contrario al izquierdo. Si son iguales ha encontrado el nodo y el apuntador auxiliar lo señala.

  24. 12 7 21 4 25 9 16 2 8 13 19

  25. Por qué es eficiente la búsqueda en un ABB • El ABB es una consecuencia directa del algoritmo de búsqueda binaria sobre una estructura lineal y, por tanto tiene todos sus beneficios. Si un ABB tiene distribuidos sus elementos en forma balanceada se obtendrá el mayor beneficio, pues se harían las mismas comparaciones que en una búsqueda binaria sobre un arreglo. El peor caso de una búsqueda en un ABB esta determinado por la altura del árbol y, por lo tanto entre menor altura (más balanceado) se obtendrán mejores resultados.

  26. Algoritmo de Inserción • Se crea un nuevo nodo utilizando un apuntador auxiliar 1. Se llena con la información que se va a insertar en el árbol y se colocan sus apuntadores como nodo hoja (Nil). • Se coloca un apuntador auxiliar 2 en la raíz del árbol y un apuntador auxiliar 3 en vacío. El apuntador auxiliar 3 siempre señalará al nodo padre del nodo al que señala el apuntador auxiliar 2.

  27. Algoritmo de Inserción 3. Mientras el apuntador auxiliar 2, no sea vacío (fuera del árbol) se realiza lo siguiente: . Se coloca el apuntador auxiliar 3 en el nodo que marca el apuntador auxiliar 2. . Mueva el apuntador auxiliar 2 al nodo hijo izquierdo si la información que se va a insertar es menor a la información del nodo que señala el apuntador auxiliar 2; caso contrario, debe moverse a la derecha (pues la información por insertar es mayor).

  28. Algoritmo de Inserción • Al salir del ciclo el apuntador auxiliar 2 señalará vacío, pero el apuntador auxiliar 3 estará en el nodo que será el padre del nuevo. • 4. Verifique si el apuntador auxiliar 3 es vacío, en cuyo caso, el nuevo nodo será el primero del árbol y el apuntador raíz tendrá que señalarlo.

  29. Algoritmo de Inserción • Si el apuntador auxiliar 3 no es vacío, entonces estará señalando al padre del nuevo nodo. Se debe verificar si la información del nuevo nodo es menor a la del marcado por el apuntador auxiliar 3. Si la información no es menor, entonces será mayor y tendrá que encadenarse como hijo derecho.

  30. Se busca el 15 12 7 21 4 25 9 16 Puesto que no existe se Detecta el padre del 15 2 8 13 19 15

  31. Eliminación • La acción de borrar un nodo puede enfrentarse con alguna de los siguientes casos: 1. El nodo que se va a borrar es una hoja puesto que no tiene hijos su nodo padre apuntará ahora a vacío.

  32. Eliminación 12 Se busca el elemento 8 7 21 4 25 9 16 2 8 13 19

  33. Eliminación 12 7 21 4 25 9 16 2 13 19 El padre del nodo borrado Cambia su liga a NULL

  34. Eliminación • 2. El nodo por borrar tiene sólo un hijo. En este caso, el padre del que se va a borrar puede apuntar directamente al nodo hijo del que se eliminará.

  35. Eliminación 12 Se busca el elemento 7 21 4 9 16 2 8 13 19

  36. Eliminación 12 El padre del nodo Borrado cambia su Apuntador al hijo del Nodo borrado 7 16 4 9 13 19 2 8

  37. Eliminación • El nodo por borrar tiene dos hijos. Puesto que el padre del que se va a eliminar no puede heredar dos apuntadores, se busca un valor substituto del valor por borrar y el nodo no se borra físicamente. Se puede escoger como substituto al predecesor del que se eliminará (el valor mayor de todos los valores menores, en otras palabras, de los nodos del subarbol izq. El de más a la derecha), y se elimina físicamente el nodo donde se encuentre. La baja física del nodo substituto cae en alguno de los dos primeros casos. También es posible considerar al sucesor como valor substituto.

  38. Eliminación 12 Se busca el elemento 12 7 21 4 25 9 16 2 8 13 19

  39. Eliminación 12 7 21 4 25 9 16 2 8 13 19 Predecesor Sucesor

  40. Eliminación Baja utilizando el predecesor 9 7 21 4 25 8 16 2 13 19

  41. Eliminación • El algoritmo de esta operación esta compuesto por dos partes. La primera localiza el nodo por borrar y la segunda borra el nodo encontrado.

  42. Primera parte • 1. Se coloca un apuntador auxiliar 1 en la raíz del árbol y un apuntador auxiliar 2 a vacío. El apuntador auxiliar siempre señalará al nodo del padre del que señala el apuntador auxiliar 1.

  43. Primera parte • 2. Mientras no se haya encontrado el nodo por borrar • Se verifica si la información del nodo señalado por el apuntador auxiliar 1 es la que se desea borrar, en caso de que no sea: • Se coloca el apuntador auxiliar 2 en el nodo que señala el apuntador auxiliar 1. • Se mueve el apuntador auxiliar 1 al nodo al nodo hijo izq. Si la información que se va a borrar es menor a la información del nodo que señala el apuntador auxiliar 1; caso contrario, se debe mover a la derecha. • Al salir del ciclo, el ap. 1 estará señalando al nodo por borrar y el ap. 2 al nodo padre.

  44. Segunda parte • Se coloca un apuntador temporal en el nodo que debe borrar. • Se verifica si el nodo por borrar es hoja o tiene solo un hijo, en cuyo caso se eliminará del árbol para darlo de baja. • Nodo hoja: si el nodo apuntado por el auxiliar 1 no tiene hijo izq., ni der. Debe modificarse el apuntador que lo conecta con su nodo padre (a través del auxiliar 2) de tal forma que apunte hacia vacío.

  45. nodo con un hijo derecho: si el nodo apuntado por el auxiliar 1, no tiene hijo izq. Pero si der. Se modifica el apuntador que lo conecta con su padre (a través del auxiliar 2) de tal forma que señale al hijo der. nodo con un hijo izquierdo: si el nodo apuntado por el auxiliar 1 no tiene hijo der., pero si hijo izq., debe modificarse el apuntador que lo conecta con su padre (a través de del auxiliar 2) de tal forma que señale al nodo hijo izq.

  46. Nodo con dos hijos: si el nodo tiene dos hijos se procederá a localizar su substituto de la siguiente forma: • Se coloca el apuntador temporal en el hijo izq. Del nodo señalado por el apuntador auxiliar1. • Se mueve el apuntador temporal hacia la derecha lo más posible, es decir, justo en el nodo antes de que el movimiento a la derecha lo saque del árbol. El nodo al que se llege será el nodo subsituto y se puede asegurar que es nodo hoja o que tiene sólo un hijo izq.

  47. Se copia la información del nodo subsituto, en el marcado por el apuntador auxiliar 1. • Se desencadena el nodo señalado por elpauntador temporal de la misma forma en que se hace para un nodo hoja o uno con hijo izq. En este caso para el movimiento de apuntadores se tendrá que evaluar si el nodo marcado por el apuntador temporal es la raíz del subárbol izq. Del nodo señalado por el apuntador auxiliarn1 o es de un nivel inferior.

  48. 3. Se libera el nodo señalado por el apuntador temporal.

  49. Ventajas y desventajas de ABB sobre un ABB • Representación en memoria dinámica (V) • La forma en que se relaizan las inserciones y eliminaciones de elementos. El orden de los elementos, es el que balancea el arbol y puede repercutir en posteriores búsquedas. (D)

  50. Aplicaciones • Útil en la que se requiera administrar un grupo de datos ordenados en memoria principal. Con el objetivo básico de buscar de manera eficiente cualquier dato.se recomienda que la apliación tenga al grupo de datos bien definido desde un principio. Y qu no requiera muchas altas y bajas de forma que mantener al árbol balnceado.

More Related