Sesión 6. Ejemplos Complejidad en Árboles

Anuncio
Computabilidad y lenguajes formales: Sesión 6. Ejemplos Complejidad en Árboles
Computabilidad y lenguajes formales:
Sesión 6. Ejemplos Complejidad en Árboles
Prof. Gloria Inés Alvarez V.
Departamento de Ciencias e Ingenierı́a de la Computación
Pontificia Universidad Javeriana Cali
8 de febrero de 2008
Computabilidad y lenguajes formales: Sesión 6. Ejemplos Complejidad en Árboles
Árboles binarios de búsqueda: succesor
succesor(x)
if x.hder 6= NULL then
return minimo(x.hder)
y = x.padre
while y 6= NULL and x == y.hder do
x = y
y = y.padre
return y
Computabilidad y lenguajes formales: Sesión 6. Ejemplos Complejidad en Árboles
Árboles binarios de búsqueda
eliminar(T,z)
if z.hizq == NULL or
z.hder == NULL then
y=z
else
y = sucesor(z)
if y.hizq 6= NULL then
x = y.hizq
else
x = y.hder
if x 6= NULL then
x.padre = y.padre
if y.padre == NULL then
root(T) = x
else
if y == y.padre.hizq then
y.padre.hizq = x
else
y.padre.hder = x
if y 6= z then
z.info = y.info
return y
Computabilidad y lenguajes formales: Sesión 6. Ejemplos Complejidad en Árboles
Heap
Es un arreglo que se interpreta como árbol binario
La condición de orden que mantiene es: a.padre.info ≥ a.info
Las operaciones que provee son:
Convertir en Heap
Construir Heap
Se utilizan en el hepasort y también para implementar colas
de prioridad
Computabilidad y lenguajes formales: Sesión 6. Ejemplos Complejidad en Árboles
Colas de prioridad
Ofrecen las siguientes operaciones:
Retornar el máximo valor
Extraer el máximo valor
Incrementar el valor de una llave
Insertar un elemento
Se utiliza, por ejemplo, en el sistema operativo para seleccionar el
proceso al cual se le asigna el procesador, siguiendo el orden de las
prioridades.
Computabilidad y lenguajes formales: Sesión 6. Ejemplos Complejidad en Árboles
Árboles rojo-negro
Es un árbol binario que tiende a estar balanceado
Cada nodo tiene un color que puede ser rojo o negro
Se restringe el color que un nodo puede tener y gracias a eso
se puede garantizar que ninguna rama es más que el doble de
otra en longitud
Se distinguen nodos internos y externos (hojas).
Computabilidad y lenguajes formales: Sesión 6. Ejemplos Complejidad en Árboles
Propiedades rojo-negro
Todo nodo es ó rojo ó negro
La raiz es negra
Toda hoja es negra
Si un nodo es rojo, sus dos hijos son negros
Para cada nodo, todos los caminos desde el nodo hasta las
hojas deben tener el mismo número de nodos negros.
Un árbol rojo-negro con n nodos, tiene una profundidad
máxima de 2log (n + 1)
Computabilidad y lenguajes formales: Sesión 6. Ejemplos Complejidad en Árboles
Operaciones sobre árboles rojo-negro
Las operaciones que ofrece esta estructura de datos so:
Rotar a la izquierda y a la derecha
Insertar un elemento
Eliminar
Además todas las operaciones disponibles para árboles binarios
de búsqueda: máximo, extraer-máximo e incrementar llave.
Descargar