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

Slides:



Advertisements
Presentaciones similares
5. Estructuras no lineales estáticas y dinámicas
Advertisements

ESTRUCTURA DE DATOS Unidad 04 TDA no lineales - Árboles.
IBD Clase 7.
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS DE BUSQUEDA.
Árboles Grafo que no contiene ciclos, es decir es un grafo también acíclico, pero a su vez es conexo.
ÁRBOLES EN C UNIVERSIDAD “ALONSO DE OJEDA” Facultad de Ingeniería
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Programación y Estructuras de Datos
ÁRBOLES BINARIOS DE BUSQUEDA
Operaciones sobre un árbol
Estructura de Datos en memoria secundaria
Tema 4 Árboles. Conceptos Generales..
ESTRUCTURAS DE DATOS AVANZADAS
PROGRAMACION DE ESTRUCTURAS DE DATOS
Algoritmos Aleatorizados
Solución de problemas por búsqueda inteligente
Árboles balanceados AVL
Integrantes: Esteban Jiménez Guesseppe Lozada Mario Rodriguez Gustavo Tenorio Fabio.
ÁRBOLES DE EXPRESION.
Definiciones: conjuntos, grafos, y árboles
Cont. Arbol Binario de Búsqueda (2). Sobre los recorridos Las versiones recursivas de los recorridos son costosas debido a la gran cantidad de llamadas.
Tema Nº4.
Inteligencia Artificial Resolver problemas mediante búsqueda
Listas circulares.
Ana Lilia Laureano Cruces UAM-A
Estructura de Datos Lineales
Material de apoyo Unidad 4 Estructura de datos
Árboles.
Estructuras de Datos MC Beatriz Beltrán Martínez.
Definiciones: conjuntos, grafos, y árboles
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
ARBOLES ESTRUCTURAS DE DATOS.
7.  El TDA Diccionario.
Estructura de Datos y Algoritmos
Tablas de Hash.
Árboles binarios de búsqueda
Arboles M.C. José Andrés Vázquez FCC/BUAP
ARBOLES ESTRUCTURAS DE DATOS.
Árboles B M.C. José Andrés Vázquez Flores Estructuras de Datos / Primavera 2014.
Almacenamiento y Recuperacion de Información- Arbol AVL
ÁRBOLES BINARIOS DE BÚSQUEDA BALANCEADOS
Estructuras de Datos1 ABB´s balanceados por peso Balance perfecto Para cada nodo, el número de nodos del subárbol izquierdo y el número de nodos del subárbol.
Árboles.
Árboles Recomendado: 1. Nivelación Funciones
Árboles Binarios Estructuras de Datos.
Estructura de Datos M.C. José Andrés Vázquez Flores FCC/BUAP
Unidad 6: Árboles.
Definiciones: conjuntos, grafos, y árboles
Estructura de Datos M.C. J. Andrés V. F. FCC/BUAP
ARBOLES GENERALIZADOS
Árboles Binarios de Búsqueda (ABB)
Arboles Binarios.
A YUDANTÍA 5: A RBOLES Carlos Pulgar R. Mail: Página Ayudantía:
Árboles Binarios * Recorridos * Tipo
Estructura de Datos..
Capítulo 8: Árboles Autor: José Alfredo Jiménez Murillo.
MIA - Grupo 5 Unidad 2.
Árboles Equilibrados Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015.

M.C. Meliza Contreras González
Laboratorio de programación
Matemáticas Discretas MISTI
PUNTEROS. Los punteros son de amplia utilización en programación y muchos lenguajes permiten la manipulación directa o indirecta de los mismos. Su razón.
M.C. Meliza Contreras González
ESTRUCTURA DE DATOS II Ing. Freddy Melgar Algarañaz Árboles Binarios *Recorridos *Tipo.
Clase II Estructuras dinámicas (TAD) Listas Enlazadas. ¿A que llamamos estructuras dinámicas? ¿Por qué son necesarias? Ventajas y Desventajas que tendremos.
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO LICENCIATURA EN INGENIERÍA DE SOFTWARE UNIDAD DE APRENDIZAJE: ESTRUCTURAS DE DATOS Créditos institucionales.
Árboles Binarios Estructuras de Datos.
Árboles Binarios Estructuras de Datos. Las estructuras dinámicas son las en la ejecución varia el número de elementos y uso de memoria a lo largo del.
Transcripción de la presentación:

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

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.

Árboles Binarios

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

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

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

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

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.

Á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.

Ejemplos

Contra-Ejemplos

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.

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

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

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

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

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

Algoritmo de búsqueda 1.Coloque un apuntador auxiliar en la raíz del árbol 2.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.

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.

Algoritmo de Inserción 1.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). 2.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.

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). 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.

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.

Se busca el 15 Puesto que no existe se Detecta el padre del 15 15

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.

Se busca el elemento 8 Eliminación

El padre del nodo borrado Cambia su liga a NULL 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á. Eliminación

Se busca el elemento Eliminación

El padre del nodo Borrado cambia su Apuntador al hijo del Nodo borrado 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. Eliminación

Se busca el elemento 12 Eliminación

Predecesor Eliminación Sucesor

Baja utilizando el predecesor 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. Eliminación

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. 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. Primera 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. Segunda parte

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.

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 auxiliar 1. –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.

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.

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

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)

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.