You are on page 1of 64

ARBOLES

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:

Un rbol es un grafo sin ciclos (a cclico)


Es conexo.

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

datos mas importantes en computacin.


Dinmicas, puesto que la estructura rbol puede cambiar durante la
ejecucin de un programa.
No-lineales, puesto que a cada elemento del rbol pueden seguirle
varios elementos.

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,

y ha originado el termino rbol por su parecido abstracto con el


vegetal (raz, ramas, hojas).
Es de notar que en esta representacin la raz se dibuja arriba, aun que
en el vegetal se encuentra abajo.

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

las relaciones padre-hijo vienen dadas por la posicin del nodo en el


array.

Caractersticas y Propiedades de
Arboles

Nodo : cada uno de los elementos de un rbol.


Todo rbol que no es vaco, tiene un nico nodo raz.
Un nodo X es descendiente directo de un nodo Y, si el nodo X es apuntado
por el nodo Y. X es hijo de Y.
Un nodo X es antecesor directo de un nodo Y, si el nodo X apunta al nodo Y.
Todos los nodos que son descendientes directos (hijos) de un mismo nodo
(padre), son hermanos.
Todo nodo que no es raz, ni terminal u hoja se conoce con el nombre de
interior.
Grado del Nodo: Es el numero de descendientes directos o numero de hijos
de un determinado nodo.
As el grado de un nodo hoja es cero.

TERMINOLOGIAS DE LOS ARBOLES


Raz - El nodo superior del rbol.

Padre - Nodo con hijos.


Hijo - Nodo descendiente de otro nodo.
Hermanos - Nodos que comparten el mismo padre.
Hojas - Nodos sin hijos.

TERMINOLOGIAS DE LOS ARBOLES


Grado del rbol es el mximo grado de todos los nodos del
rbol.
Nivel es el numero de arcos que deben ser recorridos para llegar a
un determinado nodo.

Altura del rbol es el mximo nmero de niveles de todos los


nodos del rbol.

TERMINOLOGIAS DE LOS
ARBOLES
Un subrbol de un rbol es un nodo,junto con todos sus
descendientes.

Profundidad. La profundidad de un nodo es la longitud del


nico camino de la raz a ese nodo

Orden de los nodos. Los hijos de un nodo usualmente estn


ordenados de izquierda a derecha.
Si deseamos explcitamente ignorar el orden de los dos hijos, nos
referiremos a un rbol como un rbol no-ordenado.

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

Ejercicio 1: Cul es el nmero mximo de nodos de un rbol de altura 5 y grado 4?

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

-Un nodo raz


-Todos los nodos son conectados desde un nico nodo (nodo padre)
-Slo hay un camino desde el nodo raz a cada nodo
-Los nodos que no tienen hijos son nodos hoja

Grado del nodo C?


y del rbol?

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 bsqueda binario auto-balanceable


rboles AVL
rboles Rojo-Negro
rbol AA

rbol de segmento

rboles Multicamino

rboles B (rboles de bsqueda multicamino autobalanceados)


rbol-B+
rbol-B*

ARBOLES BINARIOS
Estructura de datos no lineal en el cual cada nodo siempre tiene un

hijo izquierdo y un hijo derecho.


Si algn hijo tiene como referencia a null, es decir que no almacena
ningn dato, entonces este es llamado nodo externo. En el caso
contrario el hijo es llamado un nodo interno.
Usos comunes de los rboles binarios son los rboles binarios de
bsqueda, los montculos binarios y Codificacin de Huffman.

Un rbol binario sencillo de tamao 9, 4 niveles


y altura 3 (altura = mximo nivel - 1), con un
nodo raz cuyo valor es 2.

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];

rboles binarios de bsqueda autobalanceable


Un rbol binario de bsqueda auto-balanceable o equilibrado es un
rbol de bsqueda Binario que intenta mantener su altura, o el nmero de
niveles de nodos bajo la raz, tan pequeos como sea posible en todo
momento, automticamente.

Las rotaciones internas en rboles


binarios son operaciones internas
comunes utilizadas para mantener el
balance perfecto o casi perfecto del rbol
binario. Un rbol balanceado permite
operaciones en tiempo logartmico.

rbol binario de bsqueda auto-balanceable


Estructuras de datos populares que implementan este
tipo de rbol:
ARBOL AVL

: 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

rbol binario equilibrado (s es AVL)

rbol binario no equilibrado (no es AVL)

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:

0 -> el nodo est equilibrado y sus subrboles tienen exactamente la


misma altura.
1 -> el nodo est equilibrado y su subrbol derecho es un nivel ms

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.

Todo nodo es o bien rojo o bien negro.


La raiz es negra.
Todas las hojas (NULL) son negras.
Todo nodo rojo debe tener dos nodos hijos
negros.
Cada camino desde un nodo dado a sus hojas
descendientes contiene el mismo nmero de
nodos negros.

rbol Expansin Mnima


Es una red conexa y ponderada que se refiere a utilizar los arcos de

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

cuales la redundancia es expansiva.


El problema surge cuando todos los nodos de una red deben

conectarse entre ellos sin formar un ciclo.

rbol Expansin Mnima


Aplicacin de estos problemas de optimizacin
Redes de comunicacin elctrica, telefnica, carretera, ferroviaria,

area, martima, hidrulica o de gas, etc.


Los nodos representan puntos de consumo elctrico, telfonos,
aeropuertos, computadoras y
Los arcos podran ser de alta tensin, cable de fibra ptica, rutas
areas, agua, gas etc..

Arboles de expansin Minimales


"Hay que construir una red de cmputo con un acoplamiento vago para un sistema
de siete computadores.
El objetivo es enlazar todos los computadores minimizando el costo total de
la construccin.
El grafo G de la figura es un modelo de la situacin.

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 de Expansin Minimales


Asociamos a cada arista e de G un nmero real positivo p(e), el peso de e. En este
ejemplo, el peso de una arista indica el costo previsto para la construccin de esa
lnea de transmisin particular.
Para hacer esto, se necesita un rbol de expansin T, tal que la suma de los pesos de
las aristas en T sea mnima.
La construccin de dicho rbol de expansin ptimo se puede realizar por medio de
los algoritmos de: Joseph Kruskal.y Robert Prim.

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).

ARBOL EXPANSION MINIMA


ALGORITMO DE KRUSKAL
ALGORITMO DE PRIM

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

El algoritmo realiza el recorrido preorden en un rbol binario.


NODO es un dato de tipo puntero.
INFO, IZQ y DER son campos del registro nodo.
INFO es una variable de tipo carcter, IZQ y DER son variables de tipo puntero.
si NODO NULL
entonces
Visitar el NODO { Escribir NODO^.INFO}
Regresar a PREORDEN con NODO^.IZQ
{Llamada recursiva a preorden con la rama izquierda del nodo en cuestin}
Regresa a PREORDEN con NODO^.DER
{Llamada recursiva a preorden con la rama derecha del nodo en cuestin}
Fin del condicional del paso I

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.

El nombre se deriva del hecho de que primero visitamos:


los nodos del nivel 0 (la raz),
despus los del nivel 1 (los hijos de la raz),
los del nivel 2 (los nietos de la raz),
y as sucesivamente.

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.

Un rbol estrictamente binario con n hojas siempre contiene 2n-1 nodos.


El nivel de un nodo en un rbol binario se define del modo
siguiente:
1.La raz del rbol tiene el nivel 0.
2.El nivel de cualquier otro nodo en el rbol es uno ms que el
nivel de su padre.

La profundidad o altura de un rbol binario es el mximo


nivel de cualquier hoja en el rbol.

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:

Thursday, May 07, 2015

FORMAS DE ARBOL

En este rbol binario, las hojas representan a los competidores en el


torneo(8) y las ramas a los ganadores de los encuentros o, equivalentemente
los encuentros jugados en el torneo.
Si se llama r el nmero de ramas y h el nmero de hojas en un rbol binario,
se puede demostrar que: r = h 1.

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

Thursday, May 07, 2015

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

puede utilizar para representar una estructura en la cual es posible


tomar decisiones con dos opciones en distintos puntos.

ARBOLES BINARIOS
Arbol binario de bsqueda.

Los rboles binarios se utilizan frecuentemente para representar


conjuntos de datos cuyos elementos se identifican por una clave
nica. Si el rbol est organizado de tal manera que la clave de cada
nodo es mayor que todas las claves su subarbol izquierdo, y menor
que todas las claves del subarbol derecho se dice que este rbol es un

rbol binario de bsqueda.

Ejemplo:

ARBOLES BINARIOS
Recorrido en amplitud

Es aquel recorrido que recorre el rbol por niveles, en el siguiente


ejemplo sera:
12 - 8,17 - 5,9,15

Recorrido en profundidad

Recorre el rbol por subrboles.


Tipos : Preorden, orden central y postorden.

CLASIFICACION ARBOLES BINARIOS

Arbol Binario Distinto


Se dice que dos rboles binarios son distintos cuando sus estructuras son diferentes.
Ejemplo:
Arbol Binario Similar
Dos arboles binarios son similares cuando sus estructuras son idnticas, pero la
informacin que contienen sus nodos es diferente.
Ejemplo:
Arbol Binario Equivalente
Son aquellos arboles que son similares y que adems los nodos contienen la misma
informacin. Ejemplo:
Arbol Binario Completo
Son aquellos arboles en los que todos sus nodos excepto los del ultimo nivel,
tiene dos hijos; el subarbol izquierdo y el subarbol derecho.

You might also like