Professional Documents
Culture Documents
FACULTAD DE INGENIERIA
CIVIL
rboles y arborescencias
MATERIA:
DOCENTE:
UNIVERSITARIOS:
GRUPO:
SUCRE BOLIVIA
RBOLES Y ARBORESCENCIAS
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.
Un rbol etiquetado es un rbol en el que cada vrtice tiene una nica etiqueta. Los vrtices
de un rbol etiquetado de n vrtices reciben normalmente las etiquetas {1,2, ..., n}.
Un rbol regular ( homogneo) es un rbol en el que cada vrtice tiene el mismo grado.
Vase grafo regular.
Toda pareja de vrtices de H estn ligados por una cadena y una sola.
Ejemplo de un rbol
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.
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.
Los mtodos que se utilizan para obtener la arborescencia de costo mnimo son:
1) Dijkstra (Etiquetas).
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
ROBERT W. FLOYD (8 de junio de 1936 - 25 de septiembre de 2001) fue un prominente
cientfico estadounidense eninformtica.
Nacido en Nueva York, Floyd culmin el bachillerato a los 14 aos. Se gradu en
la Universidad de Chicago en 1953 a los 17 aos y como Fsico en 1958.
Operador de computadoras en los aos 60, public sus primeros artculos los cuales fueron
de gran influencia y fue nombrado profesor asociado en la Universidad de Carnegie Mellon.
Seis aos ms tarde fue nombrado profesor en laUniversidad de Stanford.
Entre sus contribuciones se encuentran el diseo y anlisis de algoritmos eficientes para
encontrar el camino ms corto en un grafo y para el problema de reconocimiento de frases,
pero probablemente su logro ms importante fue el ser pionero, con su artculo
de 1967 Assigning Meanings to Programs, en el rea de verificacin de programas
utilizando aserciones lgicas, donde aparece la importante nocin de invariante, esencial
para demostrar propiedades de programas iterativos.
Floyd recibi el Premio Turing de la ACM en 1978 por tener una clara influencia en las
metodologas para la creacin de software eficiente y confiable, y por haber contribuido a la
fundacin de las subreas teora del reconocimiento de frases, semntica de los lenguajes
de programacin, verificacin automatizada de programas, sntesis automatizada de
programas y anlisis de algoritmos
-
10
11
12
P(a) = <b>
P(a) = <b>
13
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.
14
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.
15
16
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
17