I_TAD_ABB

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

description

Descripcion de tablas

Transcript of I_TAD_ABB

  • Almacenamiento y Recuperacion de Informacin TAD_ABBAna Lilia Laureano CrucesUniversidad Autnoma Metroplotiana

  • Arboles Binarios de BsquedaArboles Blanceados (AVL)Grafos y sus aplicacionesEstructuras de ArchivosOrdenamientos externosIndicesArboles B y B+Dispersion Hashing

  • Estructuras JerrquicasEstructuras Jerrquicas: es la organizacin de datos en forma de jerarqua o niveles. Su principal caracterstica es que mantienen una relacin de uno a muchos (1:n), entre sus elementos.

  • rboles Binarios

  • Terminologa bsica de las estructuras jerrquicasNodo razNodo padreHijo derechoHijo izquierdoNodo hojaNodo hermano

  • Terminologa bsica de las estructuras jerrquicasAncestrosNodo descendienteSubrbol izquierdoSubrbol derechoNivel de un nodo

  • 53296718104

  • El problema de la bsquedaUna forma eficiente de realizar una bsqueda es utilizando una estructura lineales con el algoritmo de bsqueda binaria aplicado en una tabla de memoria esttica.Desventajas en la insercin y eliminacin de elementos.Con una lista ordenada se presentaba un mejor comportamiento

  • Contar con estructuras jerrquicas representa una opcin para aprovechar las caractersticas positivas de estas estructuras lineales.

  • Arbol binario de bsqueda (ABB)Es una estructura de datos que guarda informacin no repetida para administrar eficientemente la bsqueda de los propios datos. Es una estructura jerrquica. En este caso se restringe la relacin de 1:2 como mximo.

  • rbol binario de bsqueda (ABB)El ordenamiento implica que para cada elemento del ABB, los elementos menores estn a su izquierda y los mayores a su derecha.

  • Ejemplos83135294

  • Ejemplos3961875

  • Ejemplos

    729546

  • Contra-Ejemplos

    5149123

  • Contra-Ejemplos

    1689753

  • Especificacin del TAD ABBElementos: los elementos se identifican como NODOS. Cada uno de ellos contiene un dato simple o estructurado.Estructura: posee una estructura jerrquica a excepcin del rbol vaco; solo hay una raz y los dems son rboles disjuntos. Cada nodo a excepcin del nodo raz tiene un nico padre y tiene uno, dos o no tiene hijos. El hijo izquierdo siempre tendr un valor menor, siendo la raz del subrbol izquierdo. Lo mismo en el caso de la derecha.

  • Operaciones del TAD ABB

    CrearUtilidad: crea o inicializa un rbolEntradas: el espacio de memoria donde se crear el rbolSalidas: el rbol inicializadoPreCond: NingunaPostCond: el rbol esta inicializado sin elementos

  • Operaciones del TAD ABBBuscarUtilidad: busca un elemento dentro del rbol ABBEntradas: el rbol donde va a buscar y el elemento (valor) a buscarSalidas: regresa falso si el valor no se encuentra o verdadero caso contrario con un apuntador donde se encuentra ese valor.PreCond: exista el rbol ABBPostCond: ninguna

  • Operaciones del TAD ABBInsertarUtilidad: inserta un nuevo elemento dentro del rbol ABBEntradas: el rbol ABB donde va a insertar y el elemento nuevoSalidas: el rbol quien tiene un nuevo valor insertado como hoja, en la posicin 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 ABBBorrarUtilidad: elimina un elemento del rbolEntradas: el rbol ABB de donde se va a borrar el elemento y el elemento (dato) a borrarSalidas: regresa falso si el dato no se encuentra y verdadero en caso contrario y si lo pudo borrar, en cuyo caso regresa un rbol modificadoPreCond: el rbol ABB existe y el elemento dato se encuentra en dicho rbolPostCond: el rbol ABB contiene un elemento menos

  • Operaciones del TAD ABBRecorrerUtilidad: despliega los elementos almacenados en el rbolEntradas: el rbol ABB a desplegar y el orden en el que se desplegarn los elementosSalidas: cada nodo se procesa exactamente una vez. El orden en que se procesan los nodos depende del valor de orden: PreOrden, InOrden y PostOrdenPreCond: existe el rbol ABB PostCond: ninguna

  • Algoritmo de bsquedaColoque un apuntador auxiliar en la raz del rbolMientras no se haya encontrado el valor que se busca y el apuntador auxiliar no este vaco (fuera del rbol):2.1. Verifique si la informacin del nodo sealado, 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 seala.

  • 13248916257211219

  • Por qu es eficiente la bsqueda en un ABBEl ABB es una consecuencia directa del algoritmo de bsqueda 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 haran las mismas comparaciones que en una bsqueda binaria sobre un arreglo. El peor caso de una bsqueda en un ABB esta determinado por la altura del rbol y, por lo tanto entre menor altura (ms balanceado) se obtendrn mejores resultados.

  • Algoritmo de InsercinSe crea un nuevo nodo utilizando un apuntador auxiliar 1. Se llena con la informacin 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 raz del rbol y un apuntador auxiliar 3 en vaco. El apuntador auxiliar 3 siempre sealar al nodo padre del nodo al que seala el apuntador auxiliar 2.

  • Algoritmo de Insercin3. Mientras el apuntador auxiliar 2, no sea vaco (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 informacin que se va a insertar es menor a la informacin del nodo que seala el apuntador auxiliar 2; caso contrario, debe moverse a la derecha (pues la informacin por insertar es mayor).

  • Algoritmo de InsercinAl salir del ciclo el apuntador auxiliar 2 sealar vaco, pero el apuntador auxiliar 3 estar en el nodo que ser el padre del nuevo.4. Verifique si el apuntador auxiliar 3 es vaco, en cuyo caso, el nuevo nodo ser el primero del rbol y el apuntador raz tendr que sealarlo.

  • Algoritmo de InsercinSi el apuntador auxiliar 3 no es vaco, entonces estar sealando al padre del nuevo nodo. Se debe verificar si la informacin del nuevo nodo es menor a la del marcado por el apuntador auxiliar 3. Si la informacin no es menor, entonces ser mayor y tendr que encadenarse como hijo derecho.

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

  • EliminacinLa accin 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 vaco.

  • Eliminacin13248916257211219Se busca el elemento8

  • Eliminacin1324916257211219El padre del nodo borradoCambia su liga a NULL

  • Eliminacin2. El nodo por borrar tiene slo un hijo. En este caso, el padre del que se va a borrar puede apuntar directamente al nodo hijo del que se eliminar.

  • Eliminacin132489167211219Se busca el elemento

  • Eliminacin1324891671219El padre del nodo Borrado cambia su Apuntador al hijo delNodo borrado

  • EliminacinEl 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 fsicamente. 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 ms a la derecha), y se elimina fsicamente el nodo donde se encuentre. La baja fsica del nodo substituto cae en alguno de los dos primeros casos. Tambin es posible considerar al sucesor como valor substituto.

  • Eliminacin13248916257211219Se busca el elemento12

  • Eliminacin13248916257211219PredecesorSucesor

  • Eliminacin132481625721919Baja utilizando el predecesor

  • EliminacinEl algoritmo de esta operacin esta compuesto por dos partes. La primera localiza el nodo por borrar y la segunda borra el nodo encontrado.

  • Primera parte1. Se coloca un apuntador auxiliar 1 en la raz del rbol y un apuntador auxiliar 2 a vaco. El apuntador auxiliar siempre sealar al nodo del padre del que seala el apuntador auxiliar 1.

  • Primera parte2. Mientras no se haya encontrado el nodo por borrarSe verifica si la informacin del nodo sealado 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 seala el apuntador auxiliar 1.Se mueve el apuntador auxiliar 1 al nodo al nodo hijo izq. Si la informacin que se va a borrar es menor a la informacin del nodo que seala el apuntador auxiliar 1; caso contrario, se debe mover a la derecha.Al salir del ciclo, el ap. 1 estar sealando al nodo por borrar y el ap. 2 al nodo padre.

  • Segunda parteSe 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 travs del auxiliar 2) de tal forma que apunte hacia vaco.

  • 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 travs del auxiliar 2) de tal forma que seale 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 travs de del auxiliar 2) de tal forma que seale 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 sealado por el apuntador auxiliar 1.Se mueve el apuntador temporal hacia la derecha lo ms 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 slo un hijo izq.

  • Se copia la informacin del nodo subsituto, en el marcado por el apuntador auxiliar 1. Se desencadena el nodo sealado 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 raz del subrbol izq. Del nodo sealado por el apuntador auxiliarn1 o es de un nivel inferior.

  • 3. Se libera el nodo sealado por el apuntador temporal.

  • Ventajas y desventajas de ABB sobre un ABBRepresentacin en memoria dinmica (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 bsquedas. (D)

  • Aplicacionestil en la que se requiera administrar un grupo de datos ordenados en memoria principal. Con el objetivo bsico de buscar de manera eficiente cualquier dato.se recomienda que la apliacin 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.