almacenamiento y recuperacion de información tad_abb ana lilia laureano cruces universidad...

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

Upload: lita-pinero

Post on 11-Apr-2015

108 views

Category:

Documents


0 download

TRANSCRIPT

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

Almacenamiento y Almacenamiento y Recuperacion de Recuperacion de

Información TAD_ABBInformación TAD_ABB

Almacenamiento y Almacenamiento y Recuperacion de Recuperacion de

Información TAD_ABBInformación TAD_ABB

Ana Lilia Laureano CrucesAna Lilia Laureano Cruces

Universidad Autónoma MetroplotianaUniversidad Autónoma Metroplotiana

Page 2: 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

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

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.

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

Árboles Binarios

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

Terminología básica de las estructuras jerárquicas

• Nodo raíz

• Nodo padre

• Hijo derecho

• Hijo izquierdo

• Nodo hoja

• Nodo hermano

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

Terminología básica de las estructuras jerárquicas

• Ancestros

• Nodo descendiente

• Subárbol izquierdo

• Subárbol derecho

• Nivel de un nodo

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

5

3

29

6

71

8

10

4

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

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

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

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

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

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.

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

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

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

Ejemplos

831

3

5

2

9

4

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

Ejemplos

3

96

1 8

75

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

Ejemplos

7

2 9

5

4

6

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

Contra-Ejemplos

51

4

9

1 2

3

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

Contra-Ejemplos

1 6

89

75

3

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

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.

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

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

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

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

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

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

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

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

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

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

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

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.

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

132

4

8

9 16 25

7 21

12

19

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

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.

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

Algoritmo de Inserción1. 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.

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

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

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

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.

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

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.

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

132

4

8

9 16 25

7 21

12

19

Se busca el 15

Puesto que no existe se Detecta el padre del 15

15

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

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.

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

132

4

8

9 16 25

7 21

12

19

Se busca el elemento8

Eliminación

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

132

4 9 16 25

7 21

12

19

El padre del nodo borradoCambia su liga a NULL

Eliminación

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

• 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

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

132

4

8

9 16

7 21

12

19

Se busca el elemento

Eliminación

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

13

2

4

8

9

167

12

19

El padre del nodo Borrado cambia su Apuntador al hijo del

Nodo borrado

Eliminación

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

• 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

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

132

4

8

9 16 25

7 21

12

19

Se busca el elemento12

Eliminación

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

132

4

8

9 16 25

7 21

12

19

Predecesor

Eliminación

Sucesor

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

132

4 8 16 25

7 21

9

19

Baja utilizando el predecesor

Eliminación

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

• 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

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

• 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

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

• 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

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

• 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

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

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.

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

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

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

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

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

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

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

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)

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

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.