Professional Documents
Culture Documents
ARBOLES COMPUTACIONALES
MATEMATICAS DISCRETAS II
Contenido
Concepto
Caractersticas y Propiedades
Tipos de Arboles
1.
2.
3.
Libres
Binarios
Expansin Mnima
Algoritmo de Kruskal
Algoritmo Prim
Recorrido de Arboles
Bsqueda en Arboles
ARBOL COMPUTACIONAL
Composicin:
Estructura de datos que imita la forma de un rbol (un conjunto de
nodos conectados).
Un nodo es la unidad sobre la que se construye el rbol y puede
tener cero o ms nodos hijos conectados a l.
Se dice que un nodo a es padre de un nodo b si existe un enlace
desde a hasta b (en ese caso, tambin decimos que b es hijo de
a).
Nodo raz no tiene padres.
Hoja o Terminal : Nodo que no tiene hijos.
Rama : Nodos (tienen padre y uno o varios hijos).
ARBOL COMPUTACIONAL
Concepto:
ARBOL COMPUTACIONAL
Es una estructura no lineal de datos homogneos tal que establece una
jerarqua entre sus elementos.
Los rboles representan las estructuras no-lineales y dinmicas de
USO ARBOLES
Los rboles se emplean para analizar circuitos elctricos y para
representar la estructura de frmulas matemticas, as como para
organizar la informacin de bases de datos.
Los rboles genealgicos y los organigramas jerrquicos son ejemplos
comunes de rboles.
Como ayuda para realizar bsquedas en conjuntos de datos.
Organizar y relacionar datos en una BD y otras aplicaciones diversas.
Arboles Jerrquicos
Ejemplo de Informacin representada con rboles.
REPRESENTACION DE UN ARBOL
La representacin en forma de Grafo es la que comnmente se utiliza,
REPRESENTACION DE ARBOLES
La representacin puede realizarse de diferentes formas. Las ms
utilizadas son:
Representar cada nodo como una variable, con punteros a sus hijos y a
su padre.
Representar el rbol con un array donde cada elemento es un nodo y
Caractersticas y Propiedades de
Arboles
TERMINOLOGIAS DE LOS
ARBOLES
Un subrbol de un rbol es un nodo,junto con todos sus
descendientes.
Caractersticas y Propiedades de
Arboles
rbol completo de altura a y grado g
El que tiene el mximo nmero de nodos posible
20 = 1
21 = 2
Caractersticas y Propiedades de
Arboles
Camino de bsqueda interno
Nmero de nodos que hay que recorrer para encontrar un determinado nodo
n representa el nmero
de nodos del rbol
LmediaC.I .
1 a
n *i
i 1 i
n
E
I
Ejercicio 2: Cul es la longitud media del camino interno del rbol mostrado?
Caractersticas y Propiedades de
Arboles
A
B
F
Antecesor y
descendiente
Tipos de Arboles
Arboles Libres : No se especifica ninguna Raz.
Tipos de Arboles
rbol de Expansin Mnima
Sus aristas tienen peso(valor) y sus vrtices estn relacionados.
Arboles Binarios
rboles Binarios
rbol de segmento
rboles Multicamino
ARBOLES BINARIOS
Estructura de datos no lineal en el cual cada nodo siempre tiene un
ARBOLES BINARIOS
Al igual que en otras estructuras la informacin que se almacena en
todos y cada uno de los rboles, debe ser del mismo tipo para
garantizar la integridad y coherencia de la informacin
almacenada.
IMPLEMENTACION EN C
Un rbol binario puede declararse de varias maneras. Algunas de ellas
son:
Estructura con manejo de memoria dinmica, siendo el puntero que
apunta al rbol de tipo tArbol:
typedef struct nodo { int clave; struct nodo *izdo, *dcho; }Nodo;
Estructura con arreglo indexado:
typedef struct tArbol { int clave; tArbol hIzquierdo, hDerecho; }
tArbol; tArbol rbol[NUMERO_DE_NODOS];
: Es un tipo especial de rbol binario ideado por los matemticos rusos Adelson-
Velskii y Landis. Fue el primer arbol de busqueda binario autobalanceables que se ide
Arboles AVL
Los rboles AVL estn siempre equilibrados de tal modo que para todos
los nodos, la altura de la rama izquierda no difiere en ms de una unidad
de la altura de la rama derecha o viceversa.
Cada nodo, adems de la informacin que se pretende almacenar,
debe tener los dos punteros a los rboles derecho e izquierdo, igual
que los arboles binarios de bsqueda (ABB), y adems el dato que
controla el factor de equilibrio.
El factor de equilibrio es la diferencia entre las alturas del rbol
derecho y el izquierdo:
FE = altura subrbol derecho - altura subrbol izquierdo; Por
definicin, para un rbol AVL, este valor debe ser -1, 0 1.
Factor de Equilibrio
Si el factor de equilibrio de un nodo es:
alto.
-1 -> el nodo est equilibrado y su subrbol izquierdo es un nivel ms
alto.
Si el factor de equilibrio |Fe| >= 2 es necesario reequilibrar.
rboles Rojo-Negro
Un rbol rojo-negro es un rbol binario de bsqueda en el que cada nodo
tiene un atributo de color cuyo valor es rojo o negro. En adelante, se
dice que un nodo es rojo o negro haciendo referencia a dicho atributo.
la red para llegar a todos los nodos de esta, de manera tal que se
minimiza la longitud total.
El rbol de expansin mnima es apropiado para problemas en los
Los computadores se representan mediante los vrtices del grafo, las aristas
representan Lneas de transmisin que se tienen en cuenta para enlazar ciertos
pares de computadores.
ARBOLES - LISTAS
Las listas tienen posiciones. Los rboles tienen nodos.
Las listas tienen un elemento en cada posicin. Los rboles tienen
una etiqueta en cada nodo.
Algunos autores distinguen entre rboles con y sin etiquetas. Un
rbol sin etiquetas tiene sentido aunque en la inmensa mayora de
los problemas necesitaremos etiquetar los nodos.
Es por ello por lo que a partir de ahora slo haremos referencia a
rboles etiquetados).
Codificacion Huffman/Compresion
Busqueda Arboles Binarios
RECORRIDO ARBOLES
Una de las operaciones mas importantes a realizar en un rbol binario es el recorrido
de los mismos
Recorrer significa visitar los nodos del rbol en forma sistemtica, de tal
manera que todos los nodos del mismo sean visitados una sola vez.
Existen 3 formas diferentes de efectuar el recorrido y todas ellas de naturaleza
recursiva, estas son:
PREORDEN
INORDEN
POSORDEN
Hay un ltimo recorrido que implementa a estos 3:
RECORRIDO POR NIVELES: Este recorrido procesa los nodos comenzando en la
raz y avanzando de forma descendente y de izquierda a derecha
RECORRIDO ARBOLES
la recursividad nos ayuda a que los procesos se repitan as mismos y sea ms fcil su
codificacin.
PREORDEN: En el que se procesa el nodo y despus se procesan
recursivamente sus hijos.
Para recorrer un rbol binario no vaco en preorden, hay que realizar las siguientes
operaciones recursivamente en cada nodo, comenzando con el nodo de raz:
1. Visite la raz
2.Atraviese el sub-rbol izquierdo
3.Atraviese el sub-rbol derecho
Preorden: ABDGEHICFJK
RECORRIDO ARBOLES
la recursividad nos ayuda a que los procesos se repitan as mismos y sea ms fcil su
codificacin.
PREORDEN: En el que se procesa el nodo y despus se procesan
recursivamente sus hijos.
Para recorrer un rbol binario no vaco en preorden, hay que realizar las siguientes
operaciones recursivamente en cada nodo, comenzando con el nodo de raz:
1. Visite la raz
2.Atraviese el sub-rbol izquierdo
3.Atraviese el sub-rbol derecho
Preorden = [15, 9, 6, 14, 13, 20, 17, 64, 26, 72]
RECORRIDO ARBOLES
ALGORITMO
RECORRIDO ARBOLES
RECORRIDO ARBOLES
INORDEN: En este se procesa recursivamente el hijo izquierdo, luego se procesa
el nodo actual y finalmente se procesa recursivamente el hijo derecho.
Para recorrer un rbol binario no vaco en inorden (simtrico), hay que realizar las
siguientes operaciones recursivamente en cada nodo:
1.Atraviese el sub-arbol izquierdo
2.Visite la raiz
3.Atraviese el sub-arbol derecho
RECORRIDO ARBOLES
RECORRIDO INORDEN
Inorden = [6, 9, 13, 14, 15, 17, 20, 26, 64, 72].
RECORRIDO ARBOLES
RECORRIDO POSTORDEN
En este caso se trata primero el subrbol izquierdo, despus el derecho y por ltimo
el nodo actual.
Postorden =[6, 13, 14, 9, 17, 26, 72, 64, 20, 15].
RECORRIDO ARBOLES
void postorden(tArbol *a)
{
if (a != NULL) {
postorden(a->hIzquierdo);
postorden(a->hDerecho);
tratar(a);
//Realiza una operacin en nodo
}
}
RECORRIDO ARBOLES
RECORRIDO POR NIVELES
Concluimos implementando el recorrido por niveles. este recorrido procesa los nodos
comenzando en la raz y avanzando en forma descendente y de izquierda a derecha.
RECORRIDO ARBOLES
RECORRIDO POR NIVELES
Un recorrido por niveles se implementa usando una cola en lugar de una pila.
La cola almacena los nodos que van a ser visitados.
Cuando se visita un nodo ,se colocan sus hijos al final de la cola, donde sern visitados
despus de los nodos que ya estn en la cola.
Es fcil ver que esto garantiza que los nodos se visitan por niveles.
RECORRIDO ARBOLES
RECORRIDO POR NIVELES
El Algoritmo PorNiveles se
Muestra a Continuacin..
ALGORITMO
encolar(raiz);
mientras(cola_no_vacia( ))
inicio
nodo=desencolar(); //Saca un nodo de la cola
visitar(nodo);
//Realiza una operacin en nodo
encolar_nodos_hijos(nodo); //Mete en la cola los hijos del nodo actual
fin;
RECORRIDO ARBOLES
RECORRIDO POR NIVELES
CODIGO
void amplitud(tArbol *a)
{
tCola cola;
tArbol *aux;
if (a != NULL)
{ crearCola(cola);
encolar(cola, a);
while (!colavacia(cola)) {
desencolar(cola, aux);
visitar(aux);
if (aux->hIzquierdo != NULL) encolar(cola, aux->hIzquierdo );
if (aux->hDerecho!= NULL) encolar(cola, aux->hDerecho); }
}
}
FORMAS DE ARBOL
FORMAS DE ARBOL
rbol binario.
Si B es la raz de un rbol binario y D es la raz del subrbol izquierdo/derecho, se
dice que B es el padre de D y que D es el hijo izquierdo/derecho de B.
FORMAS DE ARBOL
Un rbol estrictamente binario es aquel en el que cada nodo que no es hoja, tiene
subrboles izquierdo y derecho que no estn vacos.
FORMAS DE ARBOLES
Ejemplo :
Un grupo de ajedrecistas que luchan por un campeonato. Cada
ajedrecista tiene una nica oportunidad para enfrentar al campen
vigente, y que el perdedor de cualquier encuentro ser eliminado de la
contienda.
El rbol que detalla esta situacin, es el siguiente:
FORMAS DE ARBOL
FORMAS DE ARBOLES
El rbol anterior muestra el nmero de encuentros en un torneo de
eliminacin simple con 8 competidores.
Se juegan un total 7 encuentros a saber:
Cuatro encuentros en la primera ronda.
Dos encuentros en la segunda ronda.
El encuentro final.
En total son 7 encuentros
FORMAS DE ARBOL
En general
BUSQUEDA EN ARBOLES
Consideremos rboles binarios , de cualquier tipo sobre el
cual pueda definirse un orden lineal.
BUSQUEDA EN ARBOLES
Recordemos las ideas de los algoritmos que recorren
estructuras lineales (vectores, listas):
Vectores:
Listas:
BUSQUEDA EN ARBOLES
Bsqueda en Arboles
Esto implica examinar cada parte del rbol hasta que el vrtice o la arista deseada
sea encontrada. Podramos profundizar movindonos a un vrtice siempre que sea
posible o podramos desplegarnos comprobando todos los vrtices en un nivel antes
de pasar al siguiente.
Bsqueda en profundidad:
La idea bsica de la bsqueda en profundidad es penetrar tan profundamente como
sea posible antes de desplegarse a otros vrtices .Esto se consigue al tomar el nuevo
vrtice adyacente al ultimo de los posibles vrtices anteriores.
BUSQUEDA EN ARBOLES
BUSQUEDA EN ARBOLES
Busqueda en anchura:
La idea basica de la busqueda en anchura es desplegarse a
tantos vertices como sea posible antes de penetrar en
profundidad dentro de un arbol.
Esto significa que visitaremos todos los vertices adyacentes a
uno dado antes de cambiar de nivel.
BUSQUEDA EN ARBOLES
APLICACIONES ARBOLES
Aplicaciones de rboles binarios.
Un rbol binario es una estructura de datos til cuando deben tomarse decisiones
en dos sentidos en cada punto de un proceso.
Suponga que se desea encontrar todos los duplicados de una lista de nmeros.
Considrese lo siguiente:
1.El primer nmero de la lista se coloca en un nodo que se ha establecido como la raz
de un rbol binario con subrboles izquierdo y derecho vacos.
2.Cada nmero sucesivo en la lista se compara con el nmero en la raz, aqu se
tienen 3 casos:
a. Si coincide, se tiene un duplicado.
b. Si es menor, se examina el subrbol izquierdo.
ARBOLES BINARIOS
Se define un rbol binario como un conjunto finito de elementos
(nodos) que bien esta vaco o esta formado por una raz con dos
arboles binarios disjuntos, es decir, dos descendientes directos
llamados subarbol izquierdo y subarbol derecho.
Los rboles binarios son llamados tambin de grado 2
Las aplicaciones de los arboles binarios son muy variadas ya que se les
ARBOLES BINARIOS
Arbol binario de bsqueda.
Ejemplo:
ARBOLES BINARIOS
Recorrido en amplitud
Recorrido en profundidad