Professional Documents
Culture Documents
INTRODUCCIN
En este Captulo se trata el concepto de rbol y el de arborescencia. Se determinan sus
propiedades y se utilizan para definir otras estructuras como son los rboles y
arborescencias planas, los rboles binarios y los rboles de juego. Se discute sobre
estructuras de datos para representar rboles y arborescencias en el computador, as
como los tipos de recorridos en arborescencias planas.
rbol
Definiciones
En teora de grafos (es un conjunto de objetos llamados vrtices o nodos unidos por enlaces
aristas o arcos que permiten representar relaciones binarias entre elementos de un
conjunto), un rbol es un grafo en el que dos vrtices estn conectados por exactamente un
camino. Un bosque es un grafo en el que dos vrtices cualquiera estn conectados por como
mximo un camino. Una definicin equivalente es que un bosque es una unin disjunta de
rboles (de aqu el nombre). Un rbol a veces recibe el nombre de rbol libre.
Toda pareja de vrtices de H estn ligados por una cadena y una sola.
Ejemplo de un rbol
Sea G=(V,E) un grafo conexo y sea c una funcin definida sobre los lados de G, c: E(G)
. Un grafo como el anterior nos permite representar diversas situaciones como
por ejemplo las que se presentan en el estudio de redes de comunicacin (vial,
telfonica, elctrica, por ejemplo).
Supongamos que los vrtices representan ciudades y los lados posibles interconexiones
entre ellas. La funcin c:E podra representar los costos asociados a la instalacin
de cada interconexin. El problema en cuestin ser buscar una red que conecte todas las
ciudades al menor costo posible. Si adems suponemos todos los costos positivos, ser
obvio que mientras menos lados tenga la red, menor ser su costo.
Definicin
Sea G un grafo conexo. Un grafo parcial de G conexo que es a su vez un rbol se llama un
rbol Cobertor de G..
En vista de lo anterior y puesto que debemos conservar la conexidad del grafo, es
evidente que necesitamos un rbol cobertor del grafo.
Pero hay an ms, el rbol
cobertor T que se busca debe ser el de menor costo, es decir, se busca un grafo parcial T
de G que sea un rbol y tal que c(e) sea mnima.
Un rbol que cumpla con la propiedad anterior se llama un rbol Mnimo Cobertor de G.
Proposicin
Sea G=(V,E) un grafo conexo y c una funcin c: E. Sea U un subconjunto propio de V.
Sea e={x,y} un lado en (U) (el cociclo definido por U) tal que , e' (U) : c(e) c(e').
Entonces existe un rbol mnimo cobertor T de G que contiene a e.
Los dos algoritmos que veremos a continuacin nos permiten encontrar un rbol mnimo
cobertor en un grafo G conexo, y ambos estn basados en la propiedad anterior. La
diferencia entre ellos radica en la forma cmo se escoge el conjunto U de la proposicin
Algoritmo de Prim:
ROBERT PRIM
Naci en 1921, Sweetwater, (Estados Unidos) es un matemtico e ingeniero informtico.
Robert Prim en 1957 descubri un algoritmo para la resolucin del problema del rbol de
coste total mnimo (minimum spanning tree - MST). Este problema es un problema tpico
de optimizacin combinatoria, que fue considerado originalmente por Otakar Boruvka en
1926 mientras estudiaba la necesidad de electrificacin rural en el sur de Moravia en
Checoslovaquia. Este problema tambin fue resuelto por Joseph B. Kruskal en 1956.
El algoritmo incrementa continuamente el tamao de un rbol, comenzando por un vrtice
inicial al que se le van agregando sucesivamente vrtices cuya distancia a los anteriores
es mnima. Esto significa que en cada paso, las aristas a considerar son aquellas que
inciden en vrtices que ya pertenecen al rbol.
El rbol recubridor mnimo est completamente construido cuando no quedan ms
vrtices por agregar.
Objetivo de Algoritmo prim
Encontrar el rbol recubridor ms corto, la ruta mas optima
3
La idea bsica de este algoritmo consiste en inicializar como vaco al conjunto que
contendr los lados del rbol T y con un vrtice cualquiera u al conjunto U . Luego se
selecciona el lado {u,v} en (U) , como se indica en la proposicin VI.1.1.1. El vrtice v
se agrega al conjunto U. El rbol T buscado se ir formando al agregar, uno a uno, los
lados que cumplan la propiedad, al mismo tiempo que crece U al incorporrsele el otro
extremo del lado recin agregado a T. Este proceso se repite hasta que los lados en T
formen un rbol cobertor de G, o lo que es lo mismo hasta que U sea igual a V, es decir n -1
veces.
Algoritmo de Kruskal
Joseph KRUSKAL
-Joseph B. Kruskal investigador del Math Center (Bell-Labs), que en 1956 descubri su
algoritmo para la resolucin del problema del rbol de coste total mnimo (minimum
spanning tree - MST) tambin llamado rbol recubridor eucldeo mnimo.
-El objetivo del algoritmo de Kruskal es construir un rbol (subgrafo sin ciclos) formado por
arcos sucesivamente seleccionados de mnimo peso a partir de un grafo con pesos en los
arcos.
El Algoritmo de Kruskal que resuelve la misma clase de problema que el de Prim, salvo
que en esta ocasin no partimos desde ningn nodo elegido al azar. Para resolver el
mismo problema lo que hacemos es pasarle a la funcin una lista con las aristas
ordenada de menor a mayor, e iremos tomando una para formar el ARM.
El algoritmo de Kruskal permite hallar el rbol minimal de cualquier grafo valorado (con
capacidades). Hay que seguir los siguientes pasos:
1) Se marca la arista con menor valor. Si hay ms de una, se elige cualquiera de ellas.
2) De las aristas restantes, se marca la que tenga menor valor, si hay ms de una, se elige
cualquiera de ellas.
3) Repetir el paso 2 siempre que la arista elegida no forme un ciclo con las ya marcadas.
4) El proceso termina cuando tenemos todos los nodos del grafo en alguna de las aristas
marcadas, es decir, cuando tenemos marcados n-1 arcos, siendo n el nmero de
nodos del grafo
Este algoritmo resulta sumamente sencillo a simple vista, sin embargo, notaremos
que es necesario revisar ciertos detalles en cuanto a la implementacin del mismo. Lo
primero es con respecto a la forma de seleccionar los lados en orden creciente de costo.
Ordenar desde un principio todos los lados resulta bastante inconveniente pues
normalmente se estar haciendo mucho ms trabajo del necesario, ya que rara vez se
llegan a examinar todos los lados antes de encontrar los |V|1 requeridos. Lo que se
necesita entonces es disponer de un operador que permita encontrar en cada iteracin
el lado de menor costo entre los que an no han sido estudiados y que lo excluya de E(G).
Para lograr lo anterior podemos colocar los lados en un rbol parcialmente ordenado o
heap y utilizar un operador que llamaremos LADOMIN. Con este operador podemos
extraer el lado de menor distancia y reordenar el heap en un tiempo O (log|E|). Igualmente
podemos ordenar parcialmente los lados antes de comenzar en un tiempo O (|E|), esto lo
realizar el operador ORDENAR, similar al procedimiento CREAR de la seccin VII.4.
Lo segundo que se debe revisar detalladamente es como se almacenarn los vrtices de
cada componente, de forma que pueda revisarse de forma eficiente la posible formacin
de ciclos cada vez que se examina un nuevo lado. Una solucin es formar conjuntos con
5
los vrtices que pertenecen a una misma componente y de esta manera, con una
representacin adecuada para conjuntos ( AHO et al, [1] ), se puede determinar en un
tiempo constante a qu componente pertenecen los extremos de un lado, mediante un
operador ENCONTRAR aplicado a cada uno de sus extremos para luego verificar si esas
componentes son distintas. En caso de ser distintas se deben unir las componentes en
cuestin y agregar el lado a T; en caso contrario se desecha el lado examinado. Para unir
las dos componentes se requerir de un operador UNION.
Las n-1 uniones que sern requeridas se pueden lograr en un tiempo O (nlogn) con la
misma representacin de conjuntos.
El operador INICIALIZAR crea las componentes conexas del grafo G=(V,{}), las cuales
constan de un solo vrtice cada una y sern identificadas con un nmero de 1 a |V|.
algoritmo.
ARBORESCENCIAS.
Es una red dirigida en la cual se debe de especificar cual es el nodo raz, en esta existe una
ruta del nodo raz hacia los dems nodos, una arborescencia es un caso particular de rbol.
-
Es una red dirigida en la cual se debe de especificar cual es el nodo raz, en esta existe
una ruta del nodo raz hacia los dems nodos, una arborescencia es un caso particular de
rbol.
Existen varias rutas
Tiene n-1 arcos
Modelo general
Se debe especificar la raz.
ARBORESCENCIAS COBERTORAS PTIMAS
Un problema similar al de conseguir un rbol ptimo (mnimo o mximo) cobertor se
presenta en grafos o redes orientados. Son muchos los problemas que se pueden
plantear en los cuales se requiere determinar la forma de encontrar un punto desde el
cual comunicarse con todos los dems de un grafo, respetando la orientacin de
los arcos (vas de comunicacin, por ejemplo) y al menor costo global posible.
Nuevamente se entiende por costo global de la red la suma de los costos de todos los
arcos utilizados. En este caso lo que se desea obtener es una arborescencia mnima
cobertora en el grafo asociado al problema.
Definiremos un Bosque Orientado como un bosque en el cual cada componente conexa es
una arborescencia.
Un subgrafo que cumpla estas condiciones se llama
Bosque Orientado de Peso
Mximo de G. El problema que planteamos al principio de esta seccin y algunos otros
que mencionaremos, se reducen a variaciones del problema de buscar un Bosque
Orientado de Peso Mximo.
Es fcil observar que un bosque orientado B de un grafo G es una arborescencia cobertora
si y slo si el nmero de arcos de B es igual al nmero de vrtices de G menos uno, y
este es el mximo de arcos que puede tener un bosque.
Un bosque orientado de peso mximo de G no incluye ningn arco e con c(e)<0 , por lo
tanto, si c(e)o, eE, el bosque orientado de peso mximo tendr un conjunto vaco
6
de arcos. Ms an, G puede tener un subgrafo que sea una arborescencia y c(e)>0,
eE, y sin embargo, el bosque orientado de peso mximo de G no ser una
arborescencia, como se muestra en el ejemplo de la figura VI.3.
Si un grafo G=(V,E) con c:E tiene un subgrafo parcial que es una arborescencia,
entonces una arborescencia cobertora de peso mximo de G se puede conseguir
basndonos en la siguiente propiedad y en el corolario que le sigue.
Si B es un bosque orientado de peso mximo para c', entonces B es el bosque con mayor
peso con respecto a c, entre todos los bosques orientados cobertores de G que poseen el
mayor nmero de arcos posible.
Demostracin:
Los mtodos que se utilizan para obtener la arborescencia de costo mnimo son:
1) Dijkstra (Etiquetas).
7
2) Dijkstra generalizado.
3) Floyd
- Nota: El mtodo de Dijkstra solo te da una solucin inicial y el de Dijsktra generalizado te da
la solucin optima, por lo tanto se tiene que aplicar primero el mtodo de Dijkstra y
posteriormente el mtodo de Dijkstra generalizado para obtener la arborescencia de costo
mnimo.
Algoritmo de Dijkstra (Etiquetas)
Edsger Wybe Dijkstra
Edsger Wybe Dijkstra (1930 2002) naci en 1930 en Rotterdam, Holanda. Era hijo de Wybe
Douwe Dijkstra y Brechtje Cornelia Kruyper, y tenia tres hermanos ms. Su padre era
professor de fisica en la escuela secundaria de Rotterdam, mientras que su madre era
matemtica.
De joven, asisti a la escuela secundaria de Rotterdam. Djikstra quera estudiar Derecho y
asi poder representar a los Paises Bajos en las Naciones Unidas. Pero, en 1948 realiz los
exmenes finales de su etapa en la escuela secundaria y sac notas excelentes en
matematicas, fsica, qumica y biologa, y tanto sus padres como sus profesores intentaron
persuadirle para que se decantara por una carrera de ciencias. Finalmente, decidi estudiar
fsica terica en la universidad de Leyden.
Tres aos despus, en 1951, Dijkstra vio un anuncio de la Universidad de Cambridge sobre
un curso de tres semanas que trataba la programacin en computadores. Se interes mucho
por este curso y decidi apuntarse, ya que lo vea como una oportunidad esta actividad, que
consideraba muy ligada a su campo, la fsica terica.
Pasos:
1) Iniciacin de etiquetado. Sea d(s)=0 y mrquese esta etiqueta como permanente. Sea
d(x)= para todo y considrese como etiquetas temporales. Sea a(x)=x (estas etiquetas
indicarn el predecesor de x en la arborescencia). Sea p=s.
2) Actualizacin de etiquetas. Para todo que tenga etiqueta temporal, actualizar las etiquetas
de acuerdo a :
3) Si d(x) se modific, hacer a(x)=p. Sea tal que . Si terminar ya que no hay arborescencia de
ruta ms corta. En otro caso marcar la etiqueta como permanente sea
i) Si slo se desea la ruta de s a t, si p=t entonces terminar; d(p) es la longitud del camino
ms corto si ir al paso 2.
ii) Si se desea la arborescencia, terminar cuando todos los nodos estn marcados de forma
permanente. En otro caso, ir al paso 2.
5. Mtodo de Dijkstra generalizado
Algoritmo de Floyd
10
P(a) = <b>
11
P(a) = <b>
12
Definicin
Llamamos rbol Ordenado un rbol enraizado donde cada vrtice no terminal tiene
asociada una permutacin de sus hijos.
Si nos remitimos a la definicin VI.4.1 de rboles enraizados, vemos que un rbol
ordenado es uno en el que es relevante el orden en que aparecen listados los subrboles en tal definicin.
En este sentido, los rboles A3 y A4 con las permutaciones dadas arriba son dos rboles
ordenados diferentes y sin embargo, si los consideramos simplemente como rboles
enraizados, son el mismo.
13
Vemos entonces que la representacin planar de rboles nos lleva de forma natural a los
rboles ordenados. Pero no es slo esto, la utilizacin de rboles en computacin y en
consecuencia, la necesidad de representarlos en el computador impone igualmemte la
necesidad de ordenar los hijos, debido a la organizacin secuencial de la memoria y a la
ejecucin secuencial de las instrucciones.
RBOLES BINARIOS
Como ya hemos mencionado antes, existe un tipo de rbol al que se ha dedicado
mucho estudio debido a su enorme utilizacin en computacin, son estos los rboles
binarios.
Definicin
Un rbol Binario es un rbol enraizado en el cual cada vrtice tiene a lo sumo dos
hijos, los cuales se denominan hijo izquierdo e hijo derecho . De igual manera, los subrboles de cada vrtice se denominan sub-rbol izquierdo y sub- rbol derecho
respectivamente.
Es importante notar que un rbol binario no es lo mismo que un rbol ordenado con a
lo sumo dos hijos por vrtice, pues en este ltimo, si un vrtice tiene un solo hijo, ste es
simplemente el primero (y nico); en el caso de un rbol binario se debe especificar si este
hijo es el derecho o el izquierdo, lo cual diferencia un rbol de otro. Los rboles A1, A2 y
A3 de la figura VI.11 son iguales si los vemos como simples rboles enraizados, sin
embargo, como rboles ordenados A1 es distinto de A2 y A3 que son iguales, y como
rboles binarios los tres son distintos.
Los rboles binarios han sido utilizados como estructuras para almacenamiento,
ordenamiento y recuperacin de informacin, as como para la representacin y solucin
de problemas de toma de decisiones, entre otros.
14
15
EJERCICIO
En el grafo de la figura, aplicar los algoritmos Dijkstra para encontrar los caminos ms cortos
con origen en el nodo H. Indique paso a paso las operaciones dadas mostrando las
distancias recogidas en cada iteracin.
PARA EL NUDO A
Elegimos el nudo permanente la cual va hacer el nudo A= [0, -] (0). Una vez elegido el nudo
permanente despus etiquetamos los nudos ms cercanos que son la B = [1, A] (1) y el nudo
C= [3, A] (1).
Despus elegimos nuevamente un nudo permanente con la distancia acumulada menor en
este caso va hacer el nudo C una vez elegido el nudo permanente empezamos a etiquetar
los nudos ms cercanos que en este caso son dos F= [6, C] (2) Y D= [3, C] (2).
Volvemos a elegir el nudo permanente que este caso ser el nudo D y volvemos a etiquetar
los nudos ms cercanos f = [5, D] (3) como podemos ver que en el nudo F hay dos iteraciones
por lo tanto eliminamos el valor mayor de las distancias acumuladas. Todas las operaciones
son repetitivas hasta llegar al nudo H. por lo tanto los nudos G = [8, B] (4), E = [7, D] (3), H = [8,
F] (4), H= [8, E] (4) como se pueden dar cuenta en el nudo H has dos iteraciones eso quiere
decir que hay dos posibles rutas cortas que son: D- (H a A) = 8 que son A-C-D-F-H o A-C-DE-H
16