SlideShare una empresa de Scribd logo
1 de 115
Estructura de Datos
Ing. Elmer Esteban
Carrera Ingeniería de Sistemas
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.
2.1. Búsqueda secuencial
2.2. Búsqueda Binaria.
2.3. Búsqueda por transformación de claves.
2.4. Árboles de búsqueda.
LISTAS.
3.1. Teoria y métodos recursivos
3.2. Operaciones con listas.
3.3. Listas circulares.
3.4. Listas doblemente ligadas.
3.5. Representación de polinomios.
3.6. Soluciones de colisiones (hash).
3.7. Aplicaciones.
PILAS Y COLAS.
4.1. Pilas.
4.1.1. Representación de pilas.
4.1.2. Operaciones con pilas.
4.1.3. Uso de pilas para simular recursion.
4.1.4. Aplicaciones.
4.2. Colas.
4.2.1. Representación de colas.
4.2.2. Operaciones con colas.
4.2.3. Colas circulares.
4.2.4. Doble cola.
4.2.5. Aplicaciones con colas.
ÁRBOLES.
5.1. Árboles en general.
5.2. Árboles binarios.
5.3. Recorridos en árboles binarios.
5.4. Árboles binarios de búsqueda.
5.5. Árboles balanceados.
5.6. Árboles Multicaminos.
ARBOLES EN DISCO
6.1. Introducción.
6.2. Indices vs. Arboles.
6.3. Archivos de Indices de Arboles B.
6.3.1. Búsqueda e Inserción.
6.3.2. Nomenclatura.
6.3.3. Eliminación, Concatenación y Redistribución.
6.3.4. Manejo de Páginas.
6.3.5. Métodos de Reemplazo RLU.
6.4. Archivos de Indices de Arboles B+.
6.5. Definición de Clases para manejo de Arboles.
Bibliografía
 Estructura de Datos en Java, Luis Joyanes
MÉTODOS DE ORDENACIÓN
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.
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.).
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.
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:
1) tiempo menor de ejecución en computadora;
2) 2) menor número de instrucciones.
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)
BÚSQUEDAS
¿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.
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.
20 35 40 1 5 10 100 500 25 60
20 35 40 1 5 10 100 500 25 60
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.
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.
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.
 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
Búsqueda mediante
transformación de claves
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)
Sea N=100, el tamaño del arreglo
Sus direcciones de 1-100.
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
Función Módulo(Por división)
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
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(52693081)=93
H(k2*k2)=DigitosCentrales(18496)=84
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)
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
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
Función Plegamiento
Sea K1=245643
K2=12345678
Dos claves que deban asignarse posiciones en el
arreglo
H(k1)=(245+643)=888
H(k2)=(123+456+78)=658
LISTAS ENLAZADAS
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”.
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.
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.
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.
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
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
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
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
Listas doblemente enlazadas
circulares
La Figura muestra una lista doblemente
enlazada circular
PILAS Y COLAS
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.
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.
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
A
B
Inicio
A
Push
Tope
Agregar
A
B
Push
Tope
Agregar
Tope
Pop
Tope
Remover
Tope
Pila Vacía
Funcionamiento de una Pila
A
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.
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.
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.
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.
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).
 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.
Cola
 Ejemplos:
Una fila de un banco
Una parada de autobús
Automóviles esperando en una caseta de peaje.
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.
Cola
A B C
B C
B C D E
Parte delantera
Parte delantera
Parte delantera
Parte posterior
Parte posterior
Parte posterior
A
B
A
A B C
B C
B C D
C D
1.- Insertar A
2.- Insertar B
Estado de la cola:
3.- Insertar C
4.- Remover Elemento
5.- Insertar D
6.- Remover Elemento
Inicio: Cola Vacía
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).
Implementación de Colas
 Arreglo
– con frente fijo.
– con frente movible.
– circular.
 Listas enlazadas
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.
ÁRBOLES BINARIOS
Codigo Ejemplo: https://serprogramador.es/programar-arboles-
binarios-parte-1-introduccionclasesagregar-nodo/
Videos: https://www.youtube.com/watch?v=DdCoaWzLw2g
Codigo: https://www.youtube.com/watch?v=ZKnwBJ8q2TE
Á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.
Á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.
Árboles
 Si el árbol no esta vacío, entonces el primer
nodo se llama raíz.
A
F
E
B
C D G H I
raíz
Nivel 0
Nivel 1
Nivel 2
Altura: 3
Á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.
Árboles
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
 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.
Definiciones Básicas
Ejemplo de Á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.
Grado del Árbol
Árboles binarios
 Definición 1
Un Árbol binario es un árbol de grado 2
 Definición 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.
Á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.
Á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.
Árboles binarios
 Á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.
Árboles binario completo
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...
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.
 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.
Recorrido de un Árbol binario
Videos Apoyo
 https://www.youtube.com/watch?v=Vsuo
0eKJHEQ
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.
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.
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.
Á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.
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.
Árboles binarios de búsqueda
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.
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.
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:
1. Creación del nuevo nodo
2. 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.
3. Inserción en la posición encontrada. Se
modifican de modo adecuado los enlaces de la
estructura.
Inserción
Eliminar
 Existen cuatro distintos escenarios:
1. Intentar eliminar un nodo que no existe.
– No se hace nada, simplemente se regresa FALSE.
2. Eliminar un nodo hoja.
– Caso sencillo; se borra el nodo y se actualiza el apuntador del
nodo padre a NULL.
3. Eliminar un nodo con un solo hijo.
– Caso sencillo; el nodo hijo se convierte en el padre.
4. 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.
Eliminar (casos sencillos)
6
2 8
3
1 4
6
2 8
3
1 4
Eliminar nodo hoja
Eliminar 3
Eliminar nodo con un hijo
Eliminar 4
Eliminar (casos complejos)
6
2 8
3
1 4
5
6
3 8
3
1 4
5
eliminar
copiar
valor
Eliminar nodo con dos hijos
Eliminar 2
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)
Otro ejemplo (caso complejo)
6
2 8
3
1 4
5
3.5
Eliminar nodo con dos hijos
Eliminar 2
6
3 8
3
1 4
5
3.5
Ejemplos de eliminación de un
nodo:
Á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 .
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 .
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
.
15
x
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
15
15 15
.
.
x
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
Ejemplo
35
20 40
15 25
-1
0 0
0
0
65
45 70
33 54
68
50
-1
-1
1
0
0
0
-1
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.
Reestructurar
 Significa rotar los nodos del mismo y puede ser:
 SIMPLE
DD (Derecha derecha)
II (izquierda, izquierda)
 COMPUESTA
DI (derecha izquierda)
ID (izquierda derecha)
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
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
ARBOLES EN DISCO
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.
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
Características
• Posee un orden m
– 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
EJEMPLO
 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
I L S X
A C D J K M O Q R T U Y Z
> P
< P
< I < L > L < S < X > X
Arbol B de orden 5(4-5)
Max: 5 ramas(4 claves)
Min: 3 ramas(2 claves)
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
Á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
12 18
25 65 92 99
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.
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
12 18
25 65 92 99
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
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
EJEMPLO
 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
4 5 6 11
Clave a Subir: 8
Pagina a Subir: NULL
4 5
8 11
8 no entra, hay
que dividir,
creando nueva
pagina
Clave a Subir: 6
6
8 11
8 9 11 12
Clave a Subir: 21
6 ya no tiene
donde subir, se
crea nueva raiz y
se enlaza paigna
a subir
21 no entra, hay
que dividir,
creando nueva
pagina
Subimos clave
mediana hasta
que entre en
alguna pagina
8 9
12 21
6 11
Clave a Subir: 11
12 21
12 14 21
8 9 10 12 14 19 21
Clave a Subir: 28
12 14
21 28
Clave a Subir: 19
21 28
6 11 19
4 5
3 12 14 15 17 21 28 32
Clave a Subir: 16
16 17
Clave a Subir: 15
12 14 16 17
6 11 15 19
21 26 28 32
Clave a Subir: 27
21 26
Clave a Subir: 27
28 32
No entra en la
pagina raiz, pues
ya esta llena,
dividir
6 11 19 27
28 32
Clave a Subir: 15
19 27
Ya llegamos a la
raiz, no hay
donde subir,
crear nueva raiz
y enlazar
15
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
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
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
EJEMPLO
 Del siguiente arbol eliminar las claves 16, 24, 22
45
16 26 79 172
5 9 15 18 22 24 48 57 82 126 192 232
29 32
Reemplazar
por Sucesor
18
Aun hay suf.
Claves para
eliminar
Menos claves de las
permitidas, eliminar
e informar al padre
La raiz decide
que puede
prestar de los
hermanos
15
18
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
18
15
La raiz decide que
NO puede prestar
de los hermanos
•Bajar mediana
•Unir dos paginas
•Esta nueva pagina
sera la nueva raiz
79 172
45
CONCLUSION
 Eliminar es
– 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

Más contenido relacionado

Similar a Manejo de Estructura de Datos, Tipos, Beneficios

Similar a Manejo de Estructura de Datos, Tipos, Beneficios (20)

Algorismos de ordenacion y busqueda
Algorismos de ordenacion  y busquedaAlgorismos de ordenacion  y busqueda
Algorismos de ordenacion y busqueda
 
Metodo de busqueda binario koby
Metodo de busqueda binario kobyMetodo de busqueda binario koby
Metodo de busqueda binario koby
 
Ordenamientos de vectores
Ordenamientos de vectoresOrdenamientos de vectores
Ordenamientos de vectores
 
Aritmética Modular
Aritmética ModularAritmética Modular
Aritmética Modular
 
Informe aritmetica modular
Informe aritmetica modularInforme aritmetica modular
Informe aritmetica modular
 
Aritmetica Modular
Aritmetica ModularAritmetica Modular
Aritmetica Modular
 
Metodos de odenamiento de vctores
Metodos de odenamiento de vctoresMetodos de odenamiento de vctores
Metodos de odenamiento de vctores
 
Informe algoritmos de busqueda
Informe algoritmos de busquedaInforme algoritmos de busqueda
Informe algoritmos de busqueda
 
Ordenación y búsqueda orientada a C++
Ordenación y búsqueda orientada a C++Ordenación y búsqueda orientada a C++
Ordenación y búsqueda orientada a C++
 
S3-SCBC.pptx
S3-SCBC.pptxS3-SCBC.pptx
S3-SCBC.pptx
 
S3-SCBC.pptx
S3-SCBC.pptxS3-SCBC.pptx
S3-SCBC.pptx
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
5. algoritmos de búsqueda
5. algoritmos de búsqueda5. algoritmos de búsqueda
5. algoritmos de búsqueda
 
Búsqueda secuencial en tabla ordenada
Búsqueda secuencial  en tabla ordenadaBúsqueda secuencial  en tabla ordenada
Búsqueda secuencial en tabla ordenada
 
Algoritmo metodo quicksort
Algoritmo metodo quicksortAlgoritmo metodo quicksort
Algoritmo metodo quicksort
 
Mètodos de Ordenaciòn y bùsqueda
Mètodos de Ordenaciòn y bùsquedaMètodos de Ordenaciòn y bùsqueda
Mètodos de Ordenaciòn y bùsqueda
 
Algoritmos Ordenamiento
Algoritmos OrdenamientoAlgoritmos Ordenamiento
Algoritmos Ordenamiento
 
Informe Análisis Búsqueda Binaria
Informe Análisis Búsqueda BinariaInforme Análisis Búsqueda Binaria
Informe Análisis Búsqueda Binaria
 
Estructura de dato unidad 6
Estructura de dato unidad 6Estructura de dato unidad 6
Estructura de dato unidad 6
 

Último

PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxCeciliaGuerreroGonza1
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 

Último (20)

PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
Razonamiento Matemático 1. Deta del año 2020
Razonamiento Matemático 1. Deta del año 2020Razonamiento Matemático 1. Deta del año 2020
Razonamiento Matemático 1. Deta del año 2020
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
Unidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDIUnidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDI
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 

Manejo de Estructura de Datos, Tipos, Beneficios

  • 1. Estructura de Datos Ing. Elmer Esteban 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. 2.1. Búsqueda secuencial 2.2. Búsqueda Binaria. 2.3. Búsqueda por transformación de claves. 2.4. Árboles de búsqueda. LISTAS. 3.1. Teoria y métodos recursivos 3.2. Operaciones con listas. 3.3. Listas circulares. 3.4. Listas doblemente ligadas. 3.5. Representación de polinomios. 3.6. Soluciones de colisiones (hash). 3.7. Aplicaciones. PILAS Y COLAS. 4.1. Pilas. 4.1.1. Representación de pilas. 4.1.2. Operaciones con pilas. 4.1.3. Uso de pilas para simular recursion. 4.1.4. Aplicaciones. 4.2. Colas. 4.2.1. Representación de colas. 4.2.2. Operaciones con colas. 4.2.3. Colas circulares. 4.2.4. Doble cola. 4.2.5. Aplicaciones con colas. ÁRBOLES. 5.1. Árboles en general. 5.2. Árboles binarios. 5.3. Recorridos en árboles binarios. 5.4. Árboles binarios de búsqueda. 5.5. Árboles balanceados. 5.6. Árboles Multicaminos. ARBOLES EN DISCO 6.1. Introducción. 6.2. Indices vs. Arboles. 6.3. Archivos de Indices de Arboles B. 6.3.1. Búsqueda e Inserción. 6.3.2. Nomenclatura. 6.3.3. Eliminación, Concatenación y Redistribución. 6.3.4. Manejo de Páginas. 6.3.5. Métodos de Reemplazo RLU. 6.4. Archivos de Indices de Arboles B+. 6.5. Definición de Clases para manejo de Arboles.
  • 3. Bibliografía  Estructura de Datos en Java, Luis Joyanes
  • 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: 1) tiempo menor de ejecución en computadora; 2) 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)
  • 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. 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. 20 35 40 1 5 10 100 500 25 60
  • 14. 20 35 40 1 5 10 100 500 25 60
  • 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.  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 Búsqueda mediante transformación de claves
  • 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. Sea N=100, el tamaño del arreglo Sus direcciones de 1-100. 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 Función Módulo(Por divisió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(52693081)=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=245643 K2=12345678 Dos claves que deban asignarse posiciones en el arreglo H(k1)=(245+643)=888 H(k2)=(123+456+78)=658
  • 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
  • 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
  • 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.  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. Cola
  • 48.  Ejemplos: Una fila de un banco Una parada de autobús Automóviles esperando en una caseta de peaje. Cola
  • 49.  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. Cola
  • 50. A B C B C B C D E Parte delantera Parte delantera Parte delantera Parte posterior Parte posterior Parte posterior
  • 51. A B A A B C B C B C D C D 1.- Insertar A 2.- Insertar B Estado de la cola: 3.- Insertar C 4.- Remover Elemento 5.- Insertar D 6.- Remover Elemento Inicio: Cola Vacía
  • 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 Codigo Ejemplo: https://serprogramador.es/programar-arboles- binarios-parte-1-introduccionclasesagregar-nodo/ Videos: https://www.youtube.com/watch?v=DdCoaWzLw2g Codigo: https://www.youtube.com/watch?v=ZKnwBJ8q2TE
  • 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.
  • 58.  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. Árboles
  • 59.  Si el árbol no esta vacío, entonces el primer nodo se llama raíz. A F E B C D G H I raíz Nivel 0 Nivel 1 Nivel 2 Altura: 3 Árboles
  • 60. 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. Árboles
  • 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.  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. Definiciones Básicas
  • 64.  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. Grado del Árbol
  • 65. Árboles binarios  Definición 1 Un Árbol binario es un árbol de grado 2  Definición 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.
  • 67.  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. Árboles binarios
  • 68.  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. Árboles binarios
  • 69.  Á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. Árboles binario completo
  • 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.  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. Recorrido de un Árbol binario
  • 74. 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.
  • 75. 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.
  • 76. 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.
  • 77. Á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.
  • 78. 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. Árboles binarios de búsqueda
  • 79.
  • 80. 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.
  • 81. 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.
  • 82. 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: 1. Creación del nuevo nodo 2. 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. 3. Inserción en la posición encontrada. Se modifican de modo adecuado los enlaces de la estructura.
  • 84. Eliminar  Existen cuatro distintos escenarios: 1. Intentar eliminar un nodo que no existe. – No se hace nada, simplemente se regresa FALSE. 2. Eliminar un nodo hoja. – Caso sencillo; se borra el nodo y se actualiza el apuntador del nodo padre a NULL. 3. Eliminar un nodo con un solo hijo. – Caso sencillo; el nodo hijo se convierte en el padre. 4. 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.
  • 85. Eliminar (casos sencillos) 6 2 8 3 1 4 6 2 8 3 1 4 Eliminar nodo hoja Eliminar 3 Eliminar nodo con un hijo Eliminar 4
  • 86. Eliminar (casos complejos) 6 2 8 3 1 4 5 6 3 8 3 1 4 5 eliminar copiar valor Eliminar nodo con dos hijos Eliminar 2 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)
  • 87. Otro ejemplo (caso complejo) 6 2 8 3 1 4 5 3.5 Eliminar nodo con dos hijos Eliminar 2 6 3 8 3 1 4 5 3.5
  • 89. Á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 .
  • 90. 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 .
  • 91. 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 . 15 x
  • 92. 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 15 15 15 . . x
  • 93. 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
  • 94. Ejemplo 35 20 40 15 25 -1 0 0 0 0 65 45 70 33 54 68 50 -1 -1 1 0 0 0 -1
  • 95. 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.
  • 96. Reestructurar  Significa rotar los nodos del mismo y puede ser:  SIMPLE DD (Derecha derecha) II (izquierda, izquierda)  COMPUESTA DI (derecha izquierda) ID (izquierda derecha)
  • 97. 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
  • 98. 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
  • 100. 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.
  • 101. 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
  • 102. Características • Posee un orden m – 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
  • 103. EJEMPLO  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 I L S X A C D J K M O Q R T U Y Z > P < P < I < L > L < S < X > X Arbol B de orden 5(4-5) Max: 5 ramas(4 claves) Min: 3 ramas(2 claves)
  • 104. 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
  • 105. Á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 12 18 25 65 92 99
  • 106. 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.
  • 107. 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 12 18 25 65 92 99
  • 108. 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
  • 109. 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
  • 110. EJEMPLO  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 4 5 6 11 Clave a Subir: 8 Pagina a Subir: NULL 4 5 8 11 8 no entra, hay que dividir, creando nueva pagina Clave a Subir: 6 6 8 11 8 9 11 12 Clave a Subir: 21 6 ya no tiene donde subir, se crea nueva raiz y se enlaza paigna a subir 21 no entra, hay que dividir, creando nueva pagina Subimos clave mediana hasta que entre en alguna pagina 8 9 12 21 6 11 Clave a Subir: 11 12 21 12 14 21 8 9 10 12 14 19 21 Clave a Subir: 28 12 14 21 28 Clave a Subir: 19 21 28 6 11 19 4 5 3 12 14 15 17 21 28 32 Clave a Subir: 16 16 17 Clave a Subir: 15 12 14 16 17 6 11 15 19 21 26 28 32 Clave a Subir: 27 21 26 Clave a Subir: 27 28 32 No entra en la pagina raiz, pues ya esta llena, dividir 6 11 19 27 28 32 Clave a Subir: 15 19 27 Ya llegamos a la raiz, no hay donde subir, crear nueva raiz y enlazar 15
  • 111. 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
  • 112. 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
  • 113. 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
  • 114. EJEMPLO  Del siguiente arbol eliminar las claves 16, 24, 22 45 16 26 79 172 5 9 15 18 22 24 48 57 82 126 192 232 29 32 Reemplazar por Sucesor 18 Aun hay suf. Claves para eliminar Menos claves de las permitidas, eliminar e informar al padre La raiz decide que puede prestar de los hermanos 15 18 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 18 15 La raiz decide que NO puede prestar de los hermanos •Bajar mediana •Unir dos paginas •Esta nueva pagina sera la nueva raiz 79 172 45
  • 115. CONCLUSION  Eliminar es – 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