Está en la página 1de 7

rbol de Expansin Mnima

Vctor Alarcn1, Humberto Chamorro1, Leandro Luque1, Marcos Tileria1


1

Ingeniera en Informtica, Facultad Politcnica, Universidad Nacional de Asuncin. 1 {vichugo182, humber.cde.91, lealuque09, mareto07} @gmail.com

1.

Resumen

El objetivo de este trabajo es encontrar el rbol de expansin mnima de un grafo con costos positivo. Se describe brevemente el problema, sus aplicaciones en la vida real, un poco de historia del problema, adems se define un modelo para la representacin del problema e implementamos dos algoritmos que resuelven el problema. Para encontrar el MST utilizamos el algoritmo de prim y una implementacin con backtracking. Por ltimo presentamos los resultados experimentales de la ejecucin de los algoritmos en una tabla que compara los tiempos de ejecucin de los distintos algoritmos.

Palabras Clave: Arco Ligero, Arco Sano, Backtracking, Bosque, Corte, Cruce.

2. Introduccin.
Encontrar el MST de un grafo es un problema comn de optimizacin combinatoria. La formulacin del MST ha sido aplicada para hallar soluciones en diversas reas (transporte, diseo de redes de telecomunicaciones, sistemas distribuidos y otros). Se han desarrollado algoritmos de tiempo polinomial para su resolucin como Prim, Kruskal, Sollin. Tambin se puede resolver mediante tcnicas como backtracking, programacin dinmica, etc. Se atribuye a Boruvka en 1926 el primer planteamiento formal del problema, de quien se dice que tuvo que aprender de ste durante la electrificacin del sur de Moraria (Republica Checa), donde proporcion una solucin para hallar la distribucin ms econmica a travs de una red de una lnea de energa. En general se representa este tipo de problema en un modelo basado en grafos y la solucin consiste en encontrar el rbol de expansin mnima. La aplicacin del MST en la vida real ha ayudado a la optimizacin de los recursos especialmente para los sistemas distribuidos, sistemas de transporte, sistemas electrnicos y comunicacin en general.

3. Planteamiento del problema


Consideramos un grafo conectado y no dirigido G = (V, E), donde V = (v1, v2,, vn) es un conjunto finito de vrtices (nodos) y E = e ij en un conjunto finito de arcos. Cada arco tiene un nmero positivo real asociado denotado por W = wij representando distancia, costo, etc.

Un rbol de expansin es un mnimo conjunto de enlaces de E que conectan todos los nodos en V y por lo tanto al menos un rbol de expansin puede ser encontrado en un grafo G. El mnimo rbol de expansin denotado por T* es un rbol de expansin cuyo peso total de todos los enlaces es mnimo. Es decir: Donde T es un conjunto de rboles de expansin del grafo G. El grado de un nodo es el nmero de enlaces conectados a ste. Un nodo hoja tiene solamente un enlace conectado; de tal manera que el grado de un nodo-hoja en un rbol es uno y el de los otros nodos ms de uno. Luego para que un rbol de expansin sea mnimo debe cumplir una de tales condiciones: 1. 2. 3. Ser un sub-grafo de G conectado con n-1 enlaces Ser un sub-grafo de G sin ciclos con n-1 enlaces. T* debe cumplir que la sumatoria de los pesos de todos los arcos asociados al sub-grafo de G es el menor de todos los sub-grafos asociados al grafo G que cumplen con las mismas restricciones.

Se muestra un ejemplo de un MST (vase figura 1) Siguiendo la terminologa, tenemos: Si un arco cruzado un corte es el de menor peso, se llama arco ligero. Si llamamos A al subconjunto de E que est incluido en algn rbol de expansin de G, hacemos (S, V-S) un corte de G que respeta al conjunto A y tambin (u, v) es un arco ligero cruzado (S, V-S). Entonces el arco (u, v) mantiene la propiedad de rbol mnimo para A, es decir un arco sano [1]. Si seguimos con las propiedades mencionadas de un grafo, dejamos que C = (Vc, Ec) sea un rbol en el bosque GA = (V, A). Si (u, v) es un arco ligero que conecta C con algn rbol en GA, entonces (u, v) mantiene la propiedad para A, es decir es sano para A [2]. rbol de expansin mnima es una abreviatura de rbol de expansin de peso mnimo ya que no se minimiza el nmero de arcos ni del grafo sino el peso de estos. Adems sabemos que el rbol de expansin tiene exactamente V-1 arcos [3]. El rbol de expansin mnima no es necesariamente nico. Pueden existir varios rboles que cumplan con la condicin de rbol mnimo de expresin de un grafo dado. Existen v-2 rboles de expansin mnima en un grafo completo de V vrtices [4].

Figura 1. Ejemplo de rbol de expansin mnima

4. Ejemplo de aplicacin en la vida real.


En el diseo de circuitos electrnicos es necesario hacer una conexin de varios componentes elctricos, es decir, unir los pines de manera a crear un conducto elctrico por medio de un cable. Para interconectar un conjunto de N pines se puede utilizar un arreglo de N-1 elementos, cada uno conectado con dos pines. De todos los arreglos posibles, arreglo que utiliza la menor cantidad de elementos es siempre el ms deseable. Este problema se puede resolver con el siguiente modelo: Se utiliza un grafo G= (V, E) conectado, no dirigido donde V es el conjunto de pines, E es el conjunto posible de interconexiones (arcos) entre los pares de pines y por cada arco (u, v) E se tiene su peso w = (u, v), cantidad de cable necesario para hacer la conexin entre u y v. Entonces se necesita encontrar un subconjunto T E que conecte todos los vrtices cuyo peso total es ( , ) , y adems es el mnimo posible. Como T es acclico y contiene todos los vrtices de G necesariamente genera un rbol y es el de expansin mnima. Otros problemas similares son: Se tiene una cantidad de ciudades que se desean interconectar por medio de una carretera, y se desea optimizar el trabajo de manera que el costo de la ruta sea el menor es posible. Es decir encontrar el camino ms corto que una todas las ciudades. Se tiene una red de donde cada terminal se puede representar por un nodo y los arcos son las conexiones que existen entre las terminales. Se desea encontrar el camino que conecte de manera ms eficiente dos puntos de la red. Muchos son los problemas asociados a la obtencin del camino de coste mnimo. Todos estos problemas se adecuan al modelo descrito en el ejemplo de los circuitos elctricos.

5. Algoritmos implementados
5.1 Algoritmo de Prim El conjunto solucin lo denotamos por A. Este algoritmo tiene la propiedad que los arcos en un conjunto A forman siempre un solo rbol. El rbol comienza desde un vrtice arbitrario r y crece hasta que el rbol se expanda hasta todos los vrtices en V. En cada paso, un arco ligero es agregado al rbol A que conecta A con un vrtice aislado de GA, = (V, A); as cuando el algoritmo termina, los arcos en A forma el rbol de expansin mnima. Durante toda la ejecucin del algoritmo todos los vrtices que no forman parte del rbol se almacenan en una cola de prioridad Q basada en una clave de campo. Por cada vrtice v, la clave[v] es el mnimo peso de cualquier arco que conecta v con un vrtice en rbol. Por convencin clave[v]= si todava no fue procesado un vrtice. El algoritmo consiste bsicamente en elegir un nodo cualquiera, seleccionamos la arista de menor valor incidente en el nodo marcado anteriormente y marcamos el otro nodo en el que incide. Repetir el anterior paso siempre que la arista elegida enlace un nodo marcado y otro que no lo est. El proceso termina cuando tenemos todos los nodos del grafo marcados. El algoritmo de Prim extrado del libro Introduction to Algorithms [7] se cita a continuacin:

Procedimiento MST-PRIM (G,w,r) 1 for cada u V[G] 2 do clave[u] 8 3 p[u] N NULL 4 clave[r] 0 5 Q V [G] 6 while Q<>0 7 do u EXTRACT-MIN (Q) 8 for cada v Adj[u] 9 do if v Q and w (u, v) < clave[v] 10 then p[v] u 11 key[v] w (u, v) TPRIM(N) = O (VlogV+ElogV) => O (ElogV)
5.2 Algoritmo de Backtraking Se define de la siguiente forma: Empieza en el nodo de origen y va expandiendo todos los nodos no visitados que posean una arista que conecte algn nodo ya visitado. El algoritmo visita todos los nodos uno por vez, sin hacer una distincin. Al visitar todos los nodos se tiene una solucin. Esta se anota y se contina terminar el recorrido. En caso de encontrar una mejor solucin, se reemplaza la solucin anterior con la nueva.

1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 17: 18: 19: 20:

Pseudocdigo procedure BackTracking(V,E) V := {v1} {v1 es la raz del MST} E := {} {MST inicialmente vaco} w := v1 while true begin while exista una arista (w,v) que al ser agregada a T no cree un ciclo en ella begin Elegir v tal que (w,v) no cree un ciclo enT agregar (w,v) to E agregar v to V w := v end if w = v1 then return T w := parent of w in T {backtrack} end end

6. Resultados Experimentales
6.1 Descripcin de las pruebas Se realizaron pruebas experimentales de cada algoritmo. Las pruebas se realizaron bajo las siguientes circustancias: Lenguaje de programacin Java (versin 1.6). IDE NetBeans 7.1 RC2. Librera annas para la estructura de grafos y la visualizacin. Sistema Operativo Windows 7 Pro de 32 bits Procesador Intel i5 3,6 GHZ Memoria RAM de 4 GB. Se generaron grafos completamente conexos cuyos arcos tienen un costo aleatorio entre en valor mximo y un mnimo. Los parmetros del programa son: 1. N : cantidad de nodos 2. Mx: valor mximo de una arista 3. Min: valor mnimo de una arista 6.2 Resultados Los resultados de la ejecucin de los algoritmos se muestra en la tabla 1 y tabla 2. El parmetro de entrada es la cantidad de nodos N. Las mtricas utilizadas para medir el desempeo de los algoritmos son el tiempo en milisegundos y la cantidad de nodos expandidos. Los resultados de la ejecucin del algoritmo de Prim son bastantes buenos en trminos de tiempo y nodos expandidos (vase la tabla 1). Este algoritmo siempre encuentra una solucin en caso de que el grafo sea conexo. Debido a que los grafos generados son completamente conexos, el algoritmo siempre encuentra una solucin. Con relacin al tiempo, tuvo una buena respuesta. A partir de 800 nodos el algoritmo tardo ms tiempo llegando al tope de casi 6 minutos para resolver un grafo de 1200 nodos. Con relacin a los nodos expandidos el algoritmo de prim tiene una cota de crecimiento bastante baja. Usamos la relacin (nodos expandidos)/N para comparar la tasa de crecimiento. Por ejemplo tenemos que para n= 10 se expanden 37 nodos, con lo que la relacin es de 3,7 y para n=100 tenemos la relacin de 5,2 lo que prcticamente se mantiene hasta el final de las pruebas.

N 4 10 14 20 30 40 50 60 70 80 90 100 200 300 400 500 600 700 800 900 1000 1200

Tiempo(ms) 0 1 1 2 5 5 27 45 73 134 163 226 1907 8128 23769 46278 88819 158691 196122 304334 341224 348630

Nodos expandidos 7 37 61 75 95 241 247 207 283 381 335 529 1169 2251 2455 3497 3803 3529 6825 5813 5813 5813

Tabla 1. Resultados de la ejecucin del algoritmo de Prim

Los resultados del algoritmo de backtracking no son nada buenos ni en tiempo ni en nodos expandidos (vase la tabla 2). El algoritmo siempre encontrar una solucin en caso de que exista debido a que realiza una exploracin completa del arbol de bsqueda. Uno de los problemas del backtracking es que explora caminos repetidos en algunos casos. Esto se debe a que explora todos los nodos uno por vez y no tiene en cuenta ninguna heuristica que pueda llevar a una mejor eleccin del siguiente nodo a expandir y tampoco realiza la poda de nodos que no llevan a una mejor solucion que la solucin actual.

En relacion al tiempo hay una gran diferencia cada vez que se aumenta la cantidad de nodos N como parametro de entrada. A partir de 7 nodos el tiempo que tarda ya se mide en segundo y tiene un crecimiento acelerado. En relacin a los nodos expandidos el crecimiento es exponencial.

Tiempo (ms)

Nodos expandidos

4 5 6 7 8 9 10

29,25 30,5 300 1900 10310 78100 78900

24 120 720 5040 4320 362880 3628800

Tabla 2. Tabla de ejecucin del algoritmo de backtracking

7. Conclusin
E en base a nuestra investigacin y a los resultados experimentales podemos citar las siguientes conclusiones: Comprob empricamente el correcto funcionamiento de los algoritmos de Prim y la implementacin con Backtraking. Se verifico que los algoritmos cumplen con su costo asinttico. Claramente el algoritmo de prim resuelve el problema mucho ms rpido que el algoritmo con backtraking. El algoritmo de Prim tiene una implementacin sencilla y resuelve el problema de manera eficaz. Pero Inclusive para grafos en donde la cantidad de nodos N es muy grande deja de dar una respuesta rpida. Si bien el algoritmo con backtracking asegura encontrar la solucin al problema, en este caso no es eficiente debido a que existen otros algoritmos como prim o kruskal que tambin aseguran encontrar una solucin y lo realizan en menor tiempo. Implementar una heurstica al backtracking que permita la poda del rbol para no hacer un recorrido completo. Ejemplos de posibles heursticas: 1. Ser lo ms restrictivo con los primeros nodos a expandir. 2. Verificar si el camino actual supera en tamao al camino de menor costo encontrado hasta el momento

Referencias
R. C. Prim: Shortest connection networks and some generalisations. In: Bell System Technical Journal, 36 (1957), pp. 13891401 [1,2,3,5,6,7]Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest y Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGrawHill, 2001.ISBN 0-262-03293-7. Seccin 23.2: The algorithms of Kruskal and Prim, pp.567574

También podría gustarte