Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Arboles Monticulos
Arboles Monticulos
Arboles Monticulos
Algoritmos
Table of Contents
Mont culos
Algoritmos
Referencias bibliogracas
M. A. Weiss. Arboles. En Estructuras de datos y algoritmos, cap tulo 4, paginas 93154. Addison-Wesley Iberoamericana, 1995. M. A. Weiss. Colas de prioridad (mont culos). En Estructuras de datos y algoritmos, cap tulo 6, paginas 181220. Addison-Wesley Iberoamericana, 1995. Mar de estructuras de datos. En R. Pena . Implementacion de Programas. Formalismo y abstraccion , cap Diseno tulo 7, 1998. paginas 257290. Prentice Hall, segunda edicion, G. Brassard y T. Bratley. Estructura de datos. En Fundamentos de algoritmia, cap tulo 5, paginas 167210. Prentice Hall, 1997.
Algoritmos
Pseudocodigo
Table of Contents
Mont culos
Algoritmos
Pseudocodigo
Preliminares
El camino de un nodo n1 a otro nk es la secuencia de nodos n1 , n2 , . . . , nk tal que ni es el padre de ni +1 . La profundidad de un nodo n es la longitud del camino entre la ra z y n.
La ra z tiene profundidad cero.
Algoritmos
Pseudocodigo
Operaciones basicas
Insertar: coloca la clave x. Si ya estuviese, no se hace nada (o se actualiza algo). Eliminar: borra la clave x.
en una hoja, se elimina de inmediato. Si x esta Si el nodo tiene un hijo, se ajusta un apuntador antes de eliminarlo. Si el nodo tiene dos hijos, se sustituye x por la clave pequena, w, del subarbol mas derecho.
se elimina en el subarbol A continuacion derecho el nodo con w (que no tiene hijo izquierdo)
Algoritmos
Pseudocodigo
perezosa Eliminacion
Si se espera que el numero de eliminaciones sea pequeno, perezosa es una buena estrategia. la eliminacion
Al eliminar un elemento, se deja en el arbol marcandolo como eliminado. Habiendo claves duplicadas, es posible decrementar el campo con la frecuencia de apariciones. Si una clave eliminada se vuelve a insertar, se evita la sobrecarga de asignar un nodo nuevo.
Si el numero de nodos reales en el arbol es igual al numero de nodos eliminados, se espera que la profundidad del arbol solo aumente en uno (por que?).
de tiempo es pequena. La penalizacion
Algoritmos
Pseudocodigo
tipo PNodo = Nodo Nodo = registro Elemento : TipoElemento Izquierdo, Derecho : PNodo fin registro ABB = PNodo procedimiento CrearABB (var A) A := nil fin procedimiento
Algoritmos
Pseudocodigo
Algoritmos
Pseudocodigo
Pseudocodigo
Pseudocodigo
procedimiento Visualizar (A) si A <> nil entonces Visualizar (A.Izquierdo); Escribir (A.Elemento); Visualizar (A.Derecho) fin procedimiento
Post-orden: Ambos subarboles primero. O (n)
funci on Altura (A) : n umero si A = nil entonces devolver -1 sino devolver 1 + max (Altura (A.Izquierdo), Altura (A.Derecho)) fin funci on
Algoritmos Arboles binarios de busqueda, Mont culos
Pseudocodigo
que Pre-orden: El nodo se procesa antes. Ej: una funcion marcase cada nodo con su profundidad. O (n) Orden de nivel: Todos los nodos con profundidad p se procesan antes que cualquier nodo con profundidad p + 1. O (n) Se usa una cola en vez de la pila impl cita en la recursion.
Algoritmos
Pseudocodigo
Codigo C: arboles.h
typedef int tipo_elemento; struct nodo { tipo_elemento elem; struct nodo *izq, *der; }; typedef struct nodo *pnodo; typedef pnodo abb; void crear_abb(abb *); pnodo buscar(tipo_elemento, abb); pnodo buscar_min(abb); void insertar(tipo_elemento, abb *); void eliminar(tipo_elemento, abb *); /* ERRORES: eliminar un elemento que no esta en el arbol */
Algoritmos Arboles binarios de busqueda, Mont culos
Pseudocodigo
Pseudocodigo
Pseudocodigo
Pseudocodigo
Table of Contents
Mont culos
Algoritmos
Pseudocodigo
Colas de prioridad
Permiten unicamente el acceso al m nimo (o maximo) elemento. Operaciones basicas: insertar, eliminarMin (eliminarMax). Implementaciones simples:
Listas enlazadas efectuando inserciones al frente, O (1), y recorriendo la lista, O (n), para elminiar el m nimo (maximo). Listas ordenadas: inserciones costosas, O (n), eliminaciones ecientes, O (1). medio Arboles binarios de busqueda: tiempo de ejecucion O (log n) para ambas operaciones.
A pesar de que las eliminaciones no son aleatorias. Se eliminan repetidamente nodos de un subarbol. No obstante, el otro subarbol es aleatorio y tendr a a lo sumo el doble de incrementa en uno la elementos de los que deber a. Y esto solo profundidad esperada.
Mont culos: ambas operaciones se realizan en O (log n) para el peor caso. No requieren apuntadores.
Algoritmos Arboles binarios de busqueda, Mont culos
Pseudocodigo
Un mont culo es un arbol binario completo: todos los niveles llenos con la posible excepcion del nivel mas bajo, que se estan llena de izquierda a derecha. Un arbol binario completo de altura h tiene entre 2h y 2h+1 1 nodos.
Su altura es la parte entera de log2 n.
mediante un vector. Esta regularidad facilita su representacion i del vector, el hijo Para cualquier elemento en la posicion en la posicion 2i , el hijo derecho en 2i + 1, y el izquierdo esta padre en i 2.
Algoritmos
Pseudocodigo
en la ra El m nimo (o maximo) esta z. un mont Y como todo subarbol es tambien culo, todo nodo debe ser menor (mayor) o igual que todos sus descendientes.
Algoritmos
Pseudocodigo
13
12
15
1
13
2
12
3
8
4
9
5
5
6
8
7
7
8
5
9
3
10
4
11
5
12
Algoritmos
Pseudocodigo
Algoritmos
Pseudocodigo
Pseudocodigo
Pseudocodigo
Algoritmos
Pseudocodigo
procedimiento Crear Mont culo ( V[1..n], M ) Copiar V en M.Vector mont culo; M.Tama no mont culo := n; para i := M.Tama no mont culo div 2 hasta 1 paso -1 Hundir(M, i); fin para fin procedimiento
acotado El numero de intercambios esta por la suma de las alturas de los nodos. Se demuestra mediante un argumento de marcado del arbol.
Para cada nodo con altura h, marcamos h aristas:
solo por aristas bajamos por la arista izquierda y despues derechas. As una arista nunca se marca 2 veces.
Algoritmos Arboles binarios de busqueda, Mont culos