La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Ing. Shirley Coque Carrera Ingeniería de Sistemas

Presentaciones similares


Presentación del tema: "Ing. Shirley Coque Carrera Ingeniería de Sistemas"— Transcripción de la presentación:

1 Ing. Shirley Coque Carrera Ingeniería de Sistemas
Estructura de Datos Ing. Shirley Coque Carrera Ingeniería de Sistemas

2 Plan Analítico METODOS DE ORDENACION. Ordenación interna. Ordenación por intercambio directo (burbuja). Ordenación por inserción directa. Ordenación por selección directa. Ordenación por el método de Shell. Ordenación por el método quicksort. Merge. METODOS DE BUSQUEDA Búsqueda secuencial 2.2. Búsqueda Binaria Búsqueda por transformación de claves Árboles de búsqueda. LISTAS Teoria y métodos recursivos 3.2. Operaciones con listas Listas circulares Listas doblemente ligadas Representación de polinomios Soluciones de colisiones (hash) Aplicaciones. PILAS Y COLAS Pilas Representación de pilas Operaciones con pilas Uso de pilas para simular recursion Aplicaciones Colas Representación de colas Operaciones con colas Colas circulares Doble cola Aplicaciones con colas. ÁRBOLES Árboles en general Árboles binarios Recorridos en árboles binarios Árboles binarios de búsqueda Árboles balanceados Árboles Multicaminos. ARBOLES EN DISCO 6.1. Introducción Indices vs. Arboles Archivos de Indices de Arboles B Búsqueda e Inserción Nomenclatura Eliminación, Concatenación y Redistribución Manejo de Páginas Métodos de Reemplazo RLU Archivos de Indices de Arboles B Definición de Clases para manejo de Arboles.

3 Bibliografía Estructura de Datos en Java, Luis Joyanes

4 Métodos de Ordenación

5 Ordenación La ordenación o clasificación de datos (sort, en inglés) es una operación que consistente en disponer un conjunto —estructura— de datos en algún determinado orden con respecto a uno de los campos de los elementos del conjunto.

6 Ordenación Una colección de datos (estructura) puede ser almacenada en memoria central o en archivos de datos externos guardados en unidades de almacenamiento magnético (discos, cintas, CD-ROM, DVD, etc.).

7 Ordenación Cuando los datos se guardan en un array, en una lista enlazada o en un árbol, se denomina ordenación interna; estos datos se almacenan exclusivamente para tratamientos internos que se utilizan para gestión masiva de datos, se guardan en arrays de una o varias dimensiones. Si los datos están almacenados en un archivo, el proceso de ordenación se llama ordenación externa.

8 Métodos de ordenación Los métodos (algoritmos) de ordenación son numerosos, por ello se debe prestar especial atención en su elección. ¿Cómo se sabe cuál es el mejor algoritmo? La eficiencia es el factor que mide la calidad y el rendimiento de un algoritmo. En el caso de la operación de ordenación, se suelen seguir dos criterios a la hora de decidir qué algoritmo —de entre los que resuelven la ordenación— es el más eficiente: tiempo menor de ejecución en computadora; 2) menor número de instrucciones.

9 Métodos de ordenación Los métodos de ordenación se suelen dividir en dos grandes grupos: directos burbuja, selección, inserción (para listas pequeñas) indirectos (avanzados) shell, ordenación rápida, ordenación por mezcla (listas de mayor número de elementos)

10 Búsquedas

11 ¿Qué es Búsqueda? La búsqueda es el proceso de localizar un registro (elemento) con un valor de llave particular. La búsqueda termina exitosamente cuando se localiza el registro que contenga la llave buscada, o termina sin éxito, cuando se determina que no aparece ningún registro con esa llave.

12 Búsqueda Secuencial El método de búsqueda secuencial es de los mas fáciles que podemos utilizar para buscar datos(es aconsejable utilizarlo cuando el vector no es de gran tamaño), ya que no requiere que el vector este ordenado, el método consiste en recorrer el vector de manera secuencial hasta encontrar el dato a buscar.

13 Ejemplo BUSCAR EL 25 20 35 40 1 5 10 100 500 25 60 ENCONTRADO

14 Ejemplo BUSCAR EL 6 20 35 40 1 5 10 100 500 25 60 NO ENCONTRADO

15 Búsqueda Binaria Consiste en dividir el arreglo por su elemento medio en dos subarreglos más pequeños, y comparar el elemento con el del centro. Si coinciden la búsqueda se termina. Si el elemento es menor debe estar en el primer subarreglo, si es mayor está en el segundo.

16 Condiciones de una Búsqueda Binaria
Definir el tamaño del arreglo. Los elementos del arreglo deben de estar ordenados. Los elementos del arreglo no deben de estar duplicados. Saber cual es el elemento a buscar.

17 Funcionamiento de Búsqueda Binaria
Se determina el elemento central del arreglo y se compara con el valor que se esta buscando, si coincide termina la búsqueda y en caso de no ser así se determina si el dato es mayor o menor que el elemento central, de esta forma se elimina una mitad del arreglo junto con el elemento central para repetir el proceso hasta encontrarlo o tener solo un elemento en el arreglo.

18 Búsqueda mediante transformación de claves
Funciones Hash La implementación de la función hash depende del tipo de clave. No va a ser la misma si la clave es un entero, un real o una cadena. Dentro de las funciones más comunes para la implementación de hashing se encuentran: Función Módulo Función Cuadrática Función Truncamiento Función Plegamiento

19 Función Módulo(Por división)
Consiste en tomar el residuo de la división de la clave entre el numero de componentes del arreglo. Suponga que se tiene un arreglo de N elementos y K es la clave del dato a buscar. La función hash queda: H(K)=(K MOD N) Para lograr una mayor uniformidad en la distribución, N debe ser un número primo.(El número primo próximo a N)

20 Función Módulo(Por división)
Sea N=100, el tamaño del arreglo Sus direcciones de Sea K1 = 7259 K2 = 9359 Dos claves que deban asignarse posiciones en el arreglo H(K1)=(7259 mod 100)=59 H(K2)=(9359 mod 100)=59 Donde H(K1) es igual a H(k2) y K1 es distinto de K2, es una colisión

21 Función Módulo(Por división)
Se aplica N igual a un valor primo en lugar de utilizar N=100 H(K1)=(7259 mod 97)=83 H(K1)=(9359 mod 97)=47 Con N=97 se ha eliminado la colisión

22 Función Cuadrática Consiste en elevar al cuadrado la clave y coger las cifras centrales. Este método también presenta problemas de colisión. K1=7259 K2=136 H(k1*k1)=DigitosCentrales( )=93 H(k2*k2)=DigitosCentrales(18496)=84

23 Función Truncamiento Consiste en tomar algunos dígitos de la clave y formar con ellos una dirección. Este método es de los mas sencillos, pero es también de los que ofrece menos uniformidad en la distribución de las claves. Se pueden elegir los dígitos de las posiciones pares o impares. H(k)= elegir_digitos(d1,d2,...,dn)+1)

24 Función Truncamiento Sea K1=7259 K2=9359 Dos claves que deban asignarse posiciones en el arreglo H(k1)=Elegir_digito(7259)=75 H(K2)= Elegir_digito(9359)=95 Se toman el primer y tercer número de la clave y une de izquierda a derecha

25 Función Plegamiento Consiste en dividir la clave en partes de igual número de dígitos (La ultima puede tener menos dígitos) y operar con ellos tomando como dirección los dígitos menos significativos. La operación entre las partes puede hacerse por medio de sumas o multiplicaciones. H(K)=digitos_menos_significativos((d1..di)+(di+1..dj)+…+(d1..dn))+1

26 Función Plegamiento Sea K1= K2= Dos claves que deban asignarse posiciones en el arreglo H(k1)=( )=888 H(k2)=( )=658

27 Listas enlazadas

28 Lista Enlazada Una lista enlazada es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada elemento se conecta al siguiente elemento por un “enlace” o “referencia”.

29 Lista Enlazada La idea básica consiste en construir una lista cuyos elementos, llamados nodos, se componen de dos partes (campos): la primera parte contiene la información y es, por consiguiente, un valor de un tipo genérico (denominado Dato, TipoElemento, Info, etc.), y la segunda parte es una referencia (denominado enlace o sgte) que apunta (enlaza) al siguiente elemento de la lista.

30 Representación Gráfica
La representación gráfica más extendida es aquella que utiliza una caja (un rectángulo) con dos secciones en su interior. En la primera sección se escribe el elemento o valor del dato, y en la segunda sección, el enlace o referencia mediante una flecha que sale de la caja y apunta al nodo siguiente.

31 Tipo de Dato Abstracto (TDA) Lista
Una lista se utiliza para almacenar información del mismo tipo, con la característica de que puede contener un número indeterminado de elementos y que estos elementos mantienen un orden explícito. Este ordenamiento explícito implica que cada elemento (un nodo de la lista) contiene la dirección del siguiente elemento.

32 Clasificación de las listas enlazadas
Las listas se pueden dividir en cuatro categorías: Listas simplemente enlazadas Listas doblemente enlazadas Listas circular simplemente enlazadas Listas circular doblemente enlazadas

33 Listas circulares En las listas lineales simples siempre hay un primer nodo (cabeza) y un último nodo (cola). Una lista circular, por propia naturaleza, no tiene ni principio ni fin. Sin embargo, resulta útil establecer un nodo a partir del cual se acceda a la lista y así poder acceder a sus nodos

34 Listas circulares La Figura muestra una lista circular con enlace simple; podría considerarse que es una lista lineal cuyo último nodo apunta al primero

35 Listas doblemente enlazadas
En esta lista, cada elemento contiene dos punteros (referencias), además del valor almacenado. Una referencia apunta al siguiente elemento de la lista y la otra referencia apunta al elemento anterior

36 Listas doblemente enlazadas circulares
La Figura muestra una lista doblemente enlazada circular

37 PILAS Y COLAS

38 TDA Pila Una pila es una estructura de datos en la cual el acceso está limitado al elemento más recientemente insertado y solamente puede crecer y decrecer por uno de sus extremos. Las pilas se denominan también estructuras LIFO (Last-In-First-Out), porque su característica principal es que el último elemento en llegar es el primero en salir.

39 TDA Pila En todo momento, el único elemento visible de la estructura es el último que se colocó. Se define el tope de la pila como el punto donde se encuentra dicho elemento. En una pila, las tres operaciones naturales de insertar, eliminar y obtener el dato, se renombran por push, pop e info.

40 Métodos de una Pila push( x ) --> Inserta x pop( ) --> Elimina el último elemento insertado info( ) --> Retorna el último elemento insertado esVacia( ) --> Retorna true si no existen elementos; false en caso contrario vaciar( ) --> Elimina todos los elementos

41 Funcionamiento de una Pila
Pila Vacía Agregar Agregar Remover B B Tope Tope A A A A Tope Tope Tope Inicio Push Push Pop

42 Pilas Las pilas tienen muchas aplicaciones interesantes. Por ejemplo, cuando se realiza una llamada de función, la función llamada debe saber la manera de regresar a su invocador, y por esto la dirección, de devolución se pone en una pila.

43 Pilas Si sucede una serie de llamadas de función, los valores de devolución sucesivos se ponen en la pila en un orden último en entrar, primero en salir, para que cada función pueda regresar a su invocador. Las pilas soportan las llamadas de función recursivas en la misma forma que lo hacen con las llamadas no recursivas convencionales.

44 Funciones Recursivas Las pilas pueden ser usadas para implementar la recursión en programas. Una función o procedimiento recursivo es aquel que se llama a si mismo. Ejemplos: Factorial Números de Fibonacci Torres de Hanoi Algoritmos de Ordenamiento de datos Etc.

45 Aplicaciones de Pilas Las pilas son requeridas para implementar el control de flujo de ejecución de un programa con subprogramas (funciones, procedimientos o métodos). Subprogramas recursivos o no recursivos Existen llamadas a ejecución de subprogramas. Un subprograma se ejecuta completamente antes de retornar al punto donde fue llamado.

46 Cola Es un conjunto ordenado de elementos del que pueden suprimirse estos, de un extremo (llamado la parte delantera) y en el que pueden insertarse elementos del otro extremo (llamado la parte posterior de la cola). El primer elemento insertado en una cola es el primer elemento que se suprime. Por esta razón, se conoce a la Cola como un lista tipo FIFO (primero en entrar, el primero en salir).

47 Cola Una cola es una estructura lineal, en la cual los elementos sólo pueden ser adicionados por uno de sus extremos y eliminados o consultados por el otro. También hay que tener presente, que el único elemento visible en una cola es el primero y mientras éste no haya salido (eliminado), no es posible tener acceso al siguiente.

48 Cola Ejemplos: Una fila de un banco Una parada de autobús
Automóviles esperando en una caseta de peaje.

49 Cola Debemos tener ciertas consideraciones al implementar una solución para las operaciones sobre una cola de datos: La cola está vacía inicialmente La operación insert puede ejecutarse siempre, pues no hay límite en la cantidad de elementos que puede contener una cola. La operación remove sólo puede aplicarse si la cola no está vacía: no hay forma de remover un elemento de una cola que no contiene elementos.

50 Parte delantera A B C Parte delantera Parte posterior B C Parte delantera Parte posterior B C D E Parte posterior

51 Estado de la cola: Inicio: Cola Vacía A 1.- Insertar A B A 2.- Insertar B A B C 3.- Insertar C B C 4.- Remover Elemento 5.- Insertar D B C D 6.- Remover Elemento C D

52 TIPOS DE COLAS: Cola simple: Estructura lineal donde los elementos salen en el mismo orden en que llegan. Cola circular: Representación lógica de una cola simple en un arreglo. Cola de Prioridades: Estructura lineal en la cual los elementos se insertan en cualquier posición de la cola y se remueven solamente por el frente. Cola Doble (Bicola): Estructura lineal en la que los elementos se pueden añadir o quitar por cualquier extremo de la cola (cola bidireccional).

53 Implementación de Colas
Arreglo con frente fijo. con frente movible. circular. Listas enlazadas

54 Cola Debemos tener ciertas consideraciones al implementar una solución para las operaciones sobre una cola de datos: El resultado de un intento no válido de remover un elemento de una cola vacía se denomina subdesbordamiento. La operación vacía siempre es aplicable. La representación de una cola como un tipo abstracto de datos es directa.

55 ÁRBOLES BINARIOS

56 Árboles Intuitivamente el concepto de árbol implica una estructura en la que lo datos se organizan de modo que los elementos de información están organizados entre sí a través de ramas.

57 Árboles

58 Árboles Un árbol consta de un conjunto finito de elementos, denominados nodos, y un conjunto finito de líneas dirigidas, denominadas ramas, que conectan los nodos.

59 Árboles Si el árbol no esta vacío, entonces el primer nodo se llama raíz. raíz Nivel 0 Nivel 1 Nivel 2 A B F E C G I D H Altura: 3

60 Árboles El nivel de un nodo es su distancia a la raíz. La altura o profundidad de un árbol es el nivel de la hoja del camino más largo desde la raíz más uno.

61 Definiciones Básicas Nodo Padre de un nodo N es aquel que apunta al mismo. En un árbol cada nodo sólo puede tener un padre. En el siguiente ejemplo A es el padre de B y C, y a su vez, B es el padre de D. Nodo Hijo de otro nodo A es cualquier nodo apuntado por el nodo A. Un nodo puede tener varios hijos. En el ejemplo , B y C son los nodos hijos de A y todos los nodos tienen uno o dos hijos. Nodo Raíz es el único del árbol que no tiene padre. En la representación que se utiliza, el nodo raíz es el que se encuentra en la parte superior del árbol: A

62 Definiciones Básicas Hojas son todos los nodos que no tienen hijos. En la representación del ejemplo son hojas los nodos situados en la parte inferior: D, G, H y F. Nodos Interiores son los nodos que no son ni el nodo raíz, ni nodos hoja. En el ejemplo, son nodos interiores B, C y E. Camino es una secuencia de nodos, en el que dos nodos consecutivos cualesquiera son padre e hijo. En el ejemplo A-B-D es un camino, al igual que E-G y C-E-H. Rama es un camino desde el nodo raíz a una hoja. En el ejemplo , A-C-E-G y AC-F son ramas.

63 Ejemplo de Árbol

64 Grado del Árbol Grado es el número máximo de hijos que tienen los nodos del árbol. Así, en el ejemplo anterior el árbol es de grado dos.

65 Árboles binarios Definición 1 Un Árbol binario es un árbol de grado 2
Un Árbol binario es aquel que Es vacío, o Está formado por un nodo cuyos subárboles izquierdo y derecho son a su vez árboles binarios.

66 Árboles binarios

67 Árboles binarios El árbol del ejemplo anterior es un árbol binario, ya que cada nodo tiene como máximo dos hijos. Se debe notar que en cualquier árbol, no sólo en los binarios, si se elimina el nodo raíz, se obtienen dos árboles. Aquel que colgaba del enlace izquierdo del nodo raíz se denomina subárbol izquierdo y aquel que colgaba del enlace derecho se denomina subárbol derecho.

68 Árboles binarios Existen algunos tipos especiales de árboles binarios en función de ciertas propiedades. Por ejemplo: Árbol binario equilibrado es aquel en el que en todos sus nodos se cumple la siguiente propiedad: altura(subárbol_derecho) - altura(subárbol_izquierdo) Es menor o igual a 1.

69 Árboles binario completo
Árbol binario completo es aquel en el que todos los nodos tienen dos hijos y todas las hojas están en el mismo nivel. Se denomina completo porque cada nodo, excepto las hojas, tiene el máximo de hijos que puede tener.

70 Recorrido de un Árbol binario
Recorrer un árbol consiste en acceder una sola vez a todos sus nodos. Esta operación es básica en el tratamiento de árboles y permite, por ejemplo, imprimir toda la información almacenada en el árbol, o bien eliminar toda esta información o, si tenemos un árbol con tipo base numérico, sumar todos los valores...

71 Recorrido de un Árbol binario
En el caso de los árboles binarios, el recorrido de sus distintos nodos se debe realizar en tres pasos: Acceder a la información de un nodo dado Acceder a la información del subárbol izquierdo de dicho nodo, Acceder a la información del subárbol derecho de dicho nodo.

72 Recorrido de un Árbol binario
Imponiendo la restricción de que el subárbol izquierdo se recorre siempre antes que el derecho, esta forma de proceder da lugar a tres tipos de recorrido, que se diferencian por el orden en el que se realizan estos tres pasos.

73 Recorrido Preorden Preorden: primero se accede a la información del nodo raíz, después al subárbol izquierdo y después al derecho.

74 Recorrido Inorden Inorden: primero se accede a la información del subárbol izquierdo, después se accede a la información del nodo y, por último, se accede a la información del subárbol derecho.

75 Recorrido Postorden Postorden: primero se accede a la información del subárbol izquierdo, después a la del subárbol derecho y, por último, se accede a la información del nodo.

76 Árboles binarios de búsqueda
Un árbol binario de búsqueda es una estructura de datos de tipo árbol binario en el que para todos sus nodos, el hijo izquierdo, si existe, contiene un valor menor que el nodo padre y el hijo derecho, si existe, contiene un valor mayor que el del nodo padre.

77 Árboles binarios de búsqueda
Es de búsqueda porqué: Los nodos están ordenados de manera conveniente para la búsqueda. Todos los datos del subárbol izquierdo son menores que el dato del nodo raíz, y todas los datos del subárbol derecho son mayores.

78

79 Búsqueda La operación de búsqueda en un árbol binario de búsqueda, es bastante sencilla de entender. Suponer que se busca un elemento x en el árbol. Lo primero que haremos será comprobar si se encuentra en el nodo raíz. Si no es así, si el elemento buscado es menor que el contenido en el nodo raíz sabremos que, de estar en el árbol, se encuentra en el subárbol izquierdo. Si el elemento buscado es mayor que el contenido en el nodo raíz sabremos que, de estar en el árbol, se encuentra en el subárbol derecho.

80 Consideraciones: Si el valor del nodo actual es igual al valor buscado, lo hemos encontrado. Si el valor buscado es menor que el del nodo actual, deberemos inspeccionar el subárbol izquierdo. Si el valor buscado es mayor que el del nodo actual, deberemos inspeccionar el subárbol derecho.

81 Inserción La operación de inserción de un nuevo nodo en un árbol binario de búsqueda consta de tres fases básicas: Creación del nuevo nodo Búsqueda de su posición correspondiente en el árbol. Se trata de encontrar la posición que le corresponde para que el árbol resultante siga siendo de búsqueda. Inserción en la posición encontrada. Se modifican de modo adecuado los enlaces de la estructura.

82 Inserción

83 Eliminar Existen cuatro distintos escenarios:
Intentar eliminar un nodo que no existe. No se hace nada, simplemente se regresa FALSE. Eliminar un nodo hoja. Caso sencillo; se borra el nodo y se actualiza el apuntador del nodo padre a NULL. Eliminar un nodo con un solo hijo. Caso sencillo; el nodo hijo se convierte en el padre. Eliminar un nodo con dos hijos. Caso complejo, es necesario mover más de una referencia. Se busca el máximo de la rama izquierda o el mínimo de la rama derecha.

84 Eliminar (casos sencillos)
Eliminar nodo hoja Eliminar 3 Eliminar nodo con un hijo Eliminar 4 6 2 8 3 1 4 6 2 8 1 4 3

85 Eliminar (casos complejos)
Eliminar nodo con dos hijos Eliminar 2 6 6 2 8 3 8 1 4 1 4 copiar valor 3 5 3 5 eliminar Remplazar el dato del nodo que se desea eliminar con el dato del nodo más pequeño del subárbol derecho Después, eliminar el nodo más pequeño del subárbol derecho (caso fácil)

86 Otro ejemplo (caso complejo)
Eliminar nodo con dos hijos Eliminar 2 6 6 3 8 1 4 5 3.5 2 8 1 4 3 5 3.5

87 Ejemplos de eliminación de un nodo:

88 Árboles Balanceados La idea central
Realizar reacomodos o balanceos después de inserciones o eliminaciones de elementos. Se les conoce igual como arboles AVL (autores: G.M. Adelson-Velskii y E.M Landis). Definición: Es un árbol binario de búsqueda , en la cual se cumple la siguiente condición “Para todo nodo T del árbol la altura de los subárboles izquierdo y derecho no deben diferir en más de una unidad .

89 Inserción CASO 1: La rama izquierda y derecha del árbol tienen la misma estructura Hri= hrd Por lo tanto: 1.1 si se inserta a la izquierda Hri >Hrd 1.2 si se inserta a la derecha Hrd >Hri 15 . 15 . 15 .

90 Inserción CASO 2:la altura del Ri != Rd 2.1 Hri<Hrd
Si se inserta en Hri = Equilibrio Si se inserta en Hrd=no hay equilibrio 15 . 15 x 15 .

91 Inserción CASO 3:la altura del Ri != Rd 2.1 Hri>Hrd
Si se inserta en Hri = no hay equilibrio Si se inserta en Hrd = equilibrio x 15 .

92 Si no son estos valores se tendrá que reestructurar el árbol
Factor de Equilibrio Se calcula FE= Hrd – Hri Los valores que puede tomar son: -1, 0, 1 Si no son estos valores se tendrá que reestructurar el árbol

93 Ejemplo 35 20 40 15 25 -1 65 45 70 33 54 68 50 -1 1

94 Reestructuración El proceso de inserción en un árbol balanceado es sencillo pero con detalles complicados. Paso 1 seguir un camino de búsqueda para localizar el lugar de la inserción. Paso 2 calcular el FE (obviamente 0) Paso 3 regresar por el camino calculando el Fe de los distintos nodos, si en algún momento se viola el criterio de equilibrio Se reestructura el árbol.

95 Reestructurar Significa rotar los nodos del mismo y puede ser: SIMPLE
DD (Derecha derecha) II (izquierda, izquierda) COMPUESTA DI (derecha izquierda) ID (izquierda derecha)

96 BORRADO Se tienen los mismos casos que en arboles binarios de búsqueda
1 nodo terminal u hoja se suprime 2 1 descendiente(izquierda o derecha) se sustituye 3.- 2 descendientes Buscamos en el subárbol izquierdo el que este más a la derecha Buscamos en el subárbol derecho el que se encuentre más a la izquierda

97 BORRADO PASO 1.- Se busca la ruta PASO 2.-Se aplica la regla anterior
PASO 3.- Regresar por el camino de búsqueda y recalcular Fe. PASO 4.- Si en un momento se viola la regla se reacomoda como en la inserción PASO 5.- Se hace la operación hasta llegar al nodo raíz

98 ARBOLES EN DISCO

99 Introducción Un árbol multimodal
La familia de árboles B son árboles multicamino, esto significa que tienen más de una llave (dato indexado) en sus nodos. Los árboles binarios tienen solamente una llave en sus nodos. El número de llaves que tiene más uno se dice que es el orden de un árbol B, B* o B+. Ejemplo: si un nodo tiene orden 5 significa que tiene 4 llaves cada nodo en el árbol.

100 Introducción Es útil en sistemas de Archivos y para manejar Sistemas de Bases de Datos Permiten almacenar grandes cantidades de datos Que no entran en memoria secundaria Se aplica para la organización de índices o claves De tal forma que el acceso a esos datos Usando dispositivos externos(no en memoria principal) Tengan un costo relativamente bajo

101 Características Posee un orden m Cada nodo se denomina pagina
Este define el máximo de claves e hijos que cada nodo puede tener Cada nodo se denomina pagina Es un árbol lleno( y balanceado) Todas sus hojas están en el mismo nivel Cada página interna Posee máximo: m ramas Y mínimo: m/2 ramas, redondeado Si posee un numero n de ramas, puede almacenar hasta n-1 claves Y la raíz Tiene máximo: m ramas Y mínimo: 2 ramas, o 0 si solo existe el nodo raíz

102 EJEMPLO Las ramas a la izq. de una clave x
Arbol B de orden 5(4-5) Max: 5 ramas(4 claves) Min: 3 ramas(2 claves) Las ramas a la izq. de una clave x Almacenan claves menores que x Las ramas a la derecha de la ultima clave y Almacena claves mayores que y En cada pagina las claves se almacenan en orden P < P > P I L S X A C D J K M O Q R T U Y Z < I < L > L < S < X > X

103 Estructura de la Página
Tomemos como ejemplo un árbol 2-3 Claves Max: 2 Ramas Max: 3 Que necesitamos? F M Cada Pagina almacenara máximo 2 claves Cada Pagina tendrá 3 punteros máximo, para sus ramas

104 Árboles B Bayer y McCreight propusieron en 1970 esta estructura.
Manejan árboles de búsqueda multicamino, cuyos nodos guardan más de un elemento. Son árboles 100% balanceados en su estructura, lo cual repercute en búsquedas eficientes y en accesos mínimos a disco. 10 20 5 8 25 65 92 99 12 18

105 Características del Árbol B
Un Árbol B de orden n es aquel que: Todas las hojas del árbol están en el nivel inferior. Cada nodo contiene entre n y 2n elementos, excepto el nodo raíz, que puede tener entre 1 y 2n elementos. Si un nodo tiene ‘m’ elementos, el nodo siempre contendrá m + 1 hijos si no es un nodo hoja.

106 Características del Árbol B
Un árbol B de orden n es aquél en que: Los elementos de un nodo están ordenados linealmente. Los elementos están organizados de tal forma que se cumple la regla de la búsqueda: a la izquierda menores, a la derecha mayores. 10 20 5 8 25 65 92 99 12 18

107 Algoritmo de Inserción
Si el árbol esta vacío Retornar la nueva clave que se iba a insertar y la nuevapag(NULL) Indicar que si se debe seguir propagando la revisión En la pagina dada, se busca en que rama se debe insertar la nueva clave Cuando se encuentre, y si hay espacio para insertar un nuevo elemento Meter la clave en la pagina y La nuevapag como rama derecha nueva de la pagina Indicar que ya no se debe seguir revisando mas arriba

108 Algoritmo de Inserción
Si se encuentra la posición en pagina y NO HAY espacio Dividir la pagina, creando nueva pagina nuevapag Copiar mitad de las claves, incluyendo clave nueva en nuevapag Sin incluir clave mediana Retornar la clave mediana, la nuevapag creada e indicar que si se debe seguir revisando hacia arriba Repetir todo, hasta que haya espacio o se llegue a la raíz, En ese caso, se debe crear una nueva raíz con la clave mediana y añadir rama derecha como nuevapag

109 EJEMPLO En arbol de orden 5, insertar
Ya llegamos a la raiz, no hay donde subir, crear nueva raiz y enlazar Subimos clave mediana hasta que entre en alguna pagina 8 no entra, hay que dividir, creando nueva pagina 6 ya no tiene donde subir, se crea nueva raiz y se enlaza paigna a subir No entra en la pagina raiz, pues ya esta llena, dividir 21 no entra, hay que dividir, creando nueva pagina En arbol de orden 5, insertar 6, 11, 5, 4, 8, 9, 12, 21,14,10,19,28,3,17,15,32, 16,26,27 Clave a Subir: 28 Clave a Subir: 21 Clave a Subir: 11 Clave a Subir: 6 Clave a Subir: 8 Clave a Subir: 16 Clave a Subir: 15 Clave a Subir: 19 Clave a Subir: 27 Clave a Subir: 15 Clave a Subir: 27 4 5 6 11 Pagina a Subir: NULL 28 32 16 17 21 28 19 27 8 11 12 21 15 6 11 6 11 15 19 6 11 19 6 6 11 19 27 4 5 3 4 5 8 9 11 12 8 9 8 9 10 8 11 12 14 12 14 21 12 21 12 14 19 21 12 14 15 17 12 14 16 17 21 26 28 32 21 28 21 28 32 21 26 28 32

110 CONCLUSION Recuerde que insertar es
Buscar donde insertar (bajar por el árbol) Dividir o Meter y Decidir si se debe seguir propagando clave y nuevapag(subir) Al subir hay que informar si se propaga o no la división Además de informar que clave sube y la pagina que sube Si la propagación llegase a la raíz Crear nueva raíz Con clave que subió Donde la Rama Izq. es la anterior raíz Rama Derecha es la Pagina que sube

111 Algoritmo de Eliminación
Siempre se deberá eliminar claves de paginas hojas Si la clave esta en una pag.interna Se busca su antecesora Mayor de los menores Se intercambia y se elimina la clave en pagina hoja Si esta en pagina hoja Se debe mantener el equilibrio

112 Eliminación de clave en hoja
Si luego de eliminar, quedan mas del mínimo de claves por pag. Todo OK, se elimina fácilmente Si quedan menos del mínimo Se informa a la raíz del problema La raíz revisa si los hermanos de la pag. pueden prestar claves Sube clave a prestar Baja clave intermedia de raíz Si no tiene para prestar Bajar clave de raíz y unir dos hermanos Al hacer esto, la raíz puede quedar con menos claves y en ese caso propagar acción hacia mas arriba

113 EJEMPLO Del siguiente arbol eliminar las claves 16, 24, 22 45 15 18 16
La raiz decide que NO puede prestar de los hermanos. Bajar mediana Unir dos paginas. Si raiz se queda con menos de permitido Informa al padre La raiz decide que NO puede prestar de los hermanos Bajar mediana Unir dos paginas Esta nueva pagina sera la nueva raiz Del siguiente arbol eliminar las claves 16, 24, 22 Reemplazar por Sucesor La raiz decide que puede prestar de los hermanos 45 15 18 16 26 45 79 172 79 172 5 9 15 15 18 18 18 22 24 29 32 48 57 82 126 192 232 Menos claves de las permitidas, eliminar e informar al padre Aun hay suf. Claves para eliminar

114 CONCLUSION Eliminar es Si se propaga hasta la raíz
Bajar por el árbol buscando la clave Eliminar la clave de la pagina pase lo que pase E informar a la raíz si hubo problemas(seguir propagando) o no Fusionar y Propagar(Subir) Si se propaga hasta la raíz La nueva raíz será la rama mas izquierda


Descargar ppt "Ing. Shirley Coque Carrera Ingeniería de Sistemas"

Presentaciones similares


Anuncios Google