Sei sulla pagina 1di 10

rbol de Expansin Mnima

M. Tilera y A. Yu Facultad Politcnica, Universidad Nacional de Asuncin mareto07@gmail.com, aloypunk_89@hotmail.com

- Resumen
La idea de este trabajo de investigacin es exponer los mtodos para la obtencin del rbol de expansin mnima de un grafo no dirigido. Se presenta el problema y sus propiedades principales. Adems se comenta un poco de la historia de este problema y se comenta las aplicaciones prcticas en la vida. Tambin se hace un anlisis terico del problema y de sus soluciones aplicando distintos algoritmos. Por ltimo se concluye con la exposicin de los resultados experimentales de la ejecucin de los mostrando una tabla que compara los tiempos de ejecucin de los distintos algoritmos. Palabras claves: MST, arco ligero, arco sano, corte, cruce, bosque.

Introduccin
Encontrar el MST de un grafo es un problema comn de optimizacin combinatoria. Tiene sus races en muchos casos previos pero queremos resaltar el caso de Boruvka en 1926 quien se dice tuvo que aprender de ste durante la electrificacin del sur de Moraria, donde el proporcion una solucin para hallar la distribucin ms econmica a travs de una red de una lnea de energa. 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 (Prim, Kruskal, Sollin). Debido a su complejidad y su explosin combinatoria se pueden emplear algoritmos evolutivos que mejoren la relacin (calidad/tiempo) de la solucin. Los problemas que son extensiones del MST son generalmente problemas NP-completos para los cuales no existen algoritmos de orden polinomial que los resuelvan. Debido a su complejidad se han venido empleando Algoritmos Evolutivos para su solucin. Resaltamos la importancia que tiene este problema para la vida cotidiana. Su solucin ayuda a la optimizacin de los recursos especialmente para los sistemas distribuidos y sistemas de transporte y comunicacin en general. La representacin de estos problemas en un modelo basado en grafos y rboles de expansin ha ayudado a encontrar varias soluciones a problemas en la vida real optimizando recursos en tiempo y dinero.

Debido a que el problema del rbol de expansin mnima es de carcter matemticocomputacional y debido a su complejidad asumimos que el lector tiene conocimientos de: - Teora de grafos. -Algoritmos y estructuras de datos. -Estudio de algoritmos, costo asinttico y sus notaciones.

Implementacin de rboles de expansin mnima 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. Existen muchas aplicaciones pero en general el problema radica en encontrar un camino que conecte todos los puntos de la manera ms barata posible, o sea la que tenga el menor costo. Su solucin ayuda a optimizar un sistema distribuido, una carretera, una red de comunicacin, de gas, de agua, etc. Todos estos problemas se adecuan al modelo descrito en el ejemplo de los circuitos elctricos.

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 = eij 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: a) Ser un sub-grafo de G conectado con n-1 enlaces b) Ser un sub-grafo de G sin ciclos con n-1 enlaces. Y adems 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. 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 2 arboles de expansin mnima en un grafo completo de V vrtices [4].

Figura 1. Ejemplo de rbol de expansin mnima

Tcnicas que resuelven el problema

Los algoritmos que desarrollaremos con mas extensin en este trabajo, tanto el de Prim como el de Kruskal son algoritmos voraces (greedy), es decir, en cada paso del algoritmo se debe elegir una de muchas posibles soluciones. Sabemos por definicin que los algoritmos voraces eligen la mejor solucin del momento. Estos algoritmos buscan el camino ms corto de las posibles combinaciones tal que cumplan con la condicin de mantener la propiedad de rbol acclico. Es ampliamente aceptado el algoritmo genrico para encontrar el rbol de expansin mnima. A continuacin se cita el algoritmo extrado del libro Introduction to Algorithms [5].

Genrico-MST (G, w) /* w es la funcin de peso */ A = {}; while( A no forma un rbol de expansin ) Encontrar un arco (u,v) que es seguro para A; A = A +{(u,v)}; return A;

La idea es ir haciendo crecer el nmero de nodos que pertenecen al rbol de peso mnimo. Debemos ir buscando nodos y arcos que puedan ser agregados y satisfagan la propiedad de mantener mnimo peso.
4

- Anlisis terico

Los algoritmos de kruskal y Prim usan reglas especficas para determinar si un arco cumple con las propiedades en un MST. El conjunto solucin lo denotamos por A. En el algoritmo de Kruskal el conjunto A es un bosque. El arco agregado en A es siempre un arco ligero. En el algoritmo de Prim el conjunto A forma un solo rbol. El arco agregado al conjunto A es siempre ligero y conecta el rbol con un vrtice que no es del rbol. Algoritmo de kruskal Este algoritmo busca un arco sano para agregar al bosque creciente, de todos los arcos que conectan cualquier par de rboles en el bosque busca el arco (u,v) de menor peso. Es un algoritmo voraz porque en cada paso agrega el arco de menor peso posible. Bsicamente consiste en ir buscando el arco de menor peso e ir agregando al rbol si es que no forma un ciclo. Este paso se repite hasta haber agregado N-1 arcos, siendo N el nmero de aristas del grafo. A continuacin se muestra el algoritmo de Kruskal extrado del libro Introduction to Algorithms [6].

Procedimiento MST-Kruskal (G, w) 1 A0 2 for cada vrtices v V [G] 3 do MAKE-SET (v) 4 ordenar los arcos de E de en orden creciente por peso w 5 for cada arco (u, v) E elegir los arcos por orden 6 7 8 do if FIND-SET (u) <> FIND-SET (v) then A A U {(u, v)} Union (u,v)

9 return A

MAKE-SET (v): crea un nuevo conjunto cuyo nico elemento es apuntado por v (es as el representante). FIND-SET (u): retorna un elemento del conjunto que contiene a u. As con la operacin FIND-SET (u) == FIND-SET (v) podemos determinar si los vrtices pertenecen al mismo rbol. La combinacin de los rboles se lleva a cabo con la operacin UNION. Si son iguales el arco (u,v) no puede ser agregado al bosque por ende se descarta.
5

El tiempo de ejecucin depende de la implementacin de la estructura de datos. Para nuestra implementacin se puede asumir lo siguiente: - Inicializar A O (1) - Ordenar los arcos O (ElogE) - El bucle for de la lnea 5-8 O (E) - creacin de nuevo conjunto O ((V+E) V) donde es una funcin creciente muy pequea, adems V=O(log E) Entonces el algoritmo esta en O (ElogE) y como logE = O (logV) Costo asintotico de Kruskal: T(n) = O (ElogV)

Algoritmo de Prim 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. Este algoritmo es tambin voraz como se ha mencionado anteriormente ya que desde que el rbol va creciendo en cada paso con un arco ligero contribuye a hacer el rbol mnimo de expansin. 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 vertice. 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 4 clave[r] 0 5 Q V [G] 6 while Q<>0 7 do u EXTRACT-MIN (Q) 8 9 10 11 for cada v Adj[u] do if v Q and w (u, v) < clave[v] then p[v] u key[v] w (u, v) NULL

En el algoritmo se inicializa la clave de cada vrtice en infinito, menos la raz que se pone a 0 y este ser el primer vrtice procesado. Se inicializa los padres de cada vrtice y se inicializa la cola de prioridad Q que contiene todos los vrtices. Se identifica un vrtice u Q en un arco ligero que pasa el corte (V-Q, Q). Removiendo u de la cola se agrega al conjunto de vrtices V-Q en el rbol. Luego se actualiza la clave el campo pi de cada vrtice v adyacente a u pero que no est en el rbol. El desempeo del algoritmo de Prim depende de cmo se implemente la cola de prioridad. En nuestro caso asumimos lo siguiente: -Implementacin de la cola O (V) - EXTRACT-MIN O (VlogV) -Loop lnea 8-11 O (E) -Asignacin lnea 11 O (logV) As el tiempo total del algoritmo de Prim es O (VlogV+ElogV), o sea: T(N) = O (ElogV)

- Resultados experimentales.
Para validar la propuesta presentada en este trabajo, se realizaron pruebas experimentales de cada algoritmo, las cuales fueron comparados con el anlisis terico hecho anteriormente para comprobar si el tiempo de ejecucin esta de acorde con el tiempo esperado. Los algoritmos de Prim y Kruskal fueron desarrollados en el lenguaje de programacin Java (compilador NetBeans 6.8). Las pruebas experimentales fueron ejecutadas en el sistema operativo de Microsoft Windows 7 Pro de 32 bits, procesador Intel Core2-Duo 76670 de 2.2 GHz y memria RAM de 2 GB.

Pruebas Kruskal Prim Nro. de Vrtices Tiempo(ms) Tiempo(ms) 5 73 24 10 81 38 20 141 45 30 252 75 40 290 89 50 340 110

La siguiente Tabla muestra los resultados experimentales realizados por los algoritmos de Prim y Kruskal para N vrtices.

- Conclusiones y Trabajos futuros.

Al concluir este reporte tcnico, en base a nuestras investigaciones y a nuestros resultados experimentales podemos citar formalmente las siguientes conclusiones:

comprob empricamente el correcto funcionamiento de los algoritmos de Prim y Kruskal. Se verifico que el anlisis terico de los algoritmos de Prim y Kruskal son validos, es decir las pruebas verifican su costo asinttico. La resolucin de este problema contribuye a la optimizacin de recursos especialmente en los sistemas distribuidos y de transporte. Se presento una perspectiva con un nivel complejo de acuerdo a las caractersticas del curso de Algoritmos y Estructuras de Datos III. Esperamos que este trabajo pueda servir de base para su extensin en un nivel introductorio para que pueda ser entendible a ms alto nivel en un futuro cercano.

- Referencias bibliogrficas

J. B. Kruskal: On the shortest spanning subtree and the traveling salesman problem. En: Proceedings of the American Mathematical Society. 7 (1956), pp. 4850

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 McGraw-Hill, 2001.ISBN 0-262-03293-7. Seccin 23.2: The algorithms of Kruskal and Prim, pp.567574

[4] Teorema [Cayley, 1989]

10

Potrebbero piacerti anche