You are on page 1of 2

Teora de Grafos

Introduccin Los grafos constituyen una herramienta de gran utilidad en la resolucin de numerosos problemas en una gran variedad de reas. Por citar slo algunas de ellas mencionaremos: flujos en redes, rboles genealgicos, distribucin de espacios arquitectnicos, emparejamientos, programacin de actividades, anlisis de estructura, resultados de torneos, coloreado de mapas, coloreado de anlisis lingsticos, diversos juegos, circuitos electrnicos, etc. Los grafos se utilizan tambin para modelar trayectos como el de una lnea de autobs a travs de las calles de una ciudad, en el que podemos obtener caminos ptimos para el trayecto aplicando diversos algoritmos como puede ser el algoritmo de Floyd. Si bien su uso se remonta a muchos siglos atrs, su desarrollo actual puede considerarse iniciado con los trabajos de Euler. Es un rea de las matemticas en las que no existe una nomenclatura generalmente aceptada, tal vez por que son muchos los autores que han realizado aportaciones de inters, sin que haya una figura dominante. De hecho, hay todava numerosos problemas sin resolver, que se van ampliando a medida que se profundiza en su estudio. Vale aqu el principio: "Todo problema, por complicado que sea, al estudiarlo detenidamente se complica ms." Algunos nombres de matemticos que han hecho aportaciones importantes, tanto tericas como en forma de algoritmos son: Hamilton, Kirchoff, Konig, Tutte, Kuratowski, Menge, Verge, Girdle, Dijkstra, Ramsey, Fulkerson, Harari, etc. Hay numerosos artculos y libros sobre temas de grafos. En computacin La teora de grafos nos proporciona una formalizacin matemtica eficiente que promete ser muy til en el modelado analtico que nos hemos marcado como reto impulsados por los trabajos antes mencionados. Por otra parte, los grafos ya han sido aplicados con xito al estudio de otros aspectos de la computacin como, por ejemplo, el paralelismo de grano medio o grueso extrado por los compiladores. En este sentido, Padua y Wolfe llegan a afirmar que el cdigo paralelo ser tan bueno como lo sea el grafo de dependencias de datos correspondiente. Otros campos en los que trabajamos con grafos son: las estructuras de datos, el diseo de sistemas operativos, la descripcin de software, la lgica de los automatismos, etc. Ejemplo: Se describen tres algoritmos para la bsqueda de caminos en una red, basados en la generacin de un rbol en el que se hace una bsqueda exhaustiva, en amplitud en el primer algoritmo, y en profundidad en el segundo y tercero. El primer algoritmo permite encontrar todos los caminos ptimos entre dos vrtices, el segundo permite resolver este mismo problema as como el de hallar los caminos hamiltonianos con origen en un vrtice, o los ciclos de cualquier orden, en tanto que el tercero permite buscar todos los caminos o circuitos eulerianos de la red. En los dos primeros algoritmos puede imponerse la condicin adicional de evitar que determinados vrtices aparezcan en las soluciones. El primer algoritmo se considera ms adecuado para la bsqueda de caminos ptimos entre dos vrtices, en tanto que el segundo lo es para la bsqueda de caminos o de circuitos de cualquier orden, incluidos los hamiltonianos. Se presentan tambin dos algoritmos que permiten analizar la conectividad de la red, determinando el primero las posibles partes inconexas de la red, y el segundo permite detectar los puentes entre componentes.

Todos los algoritmos minimizan la memoria necesaria, que crece de forma lineal con el orden y tamao de la red, lo que permite su ejecucin total en memoria central incluso para grandes redes. La informacin se divide en una parte esttica, que puede ser generada una vez, almacenada y leda en aplicaciones sucesivas, y una parte dinmica, utilizada durante la ejecucin de los algoritmos. Se propone un esquema de almacenamiento para ambos tipos de datos muy compacto y que permite una utilizacin de los mismos muy efectiva, por los algoritmos descritos. Minimizan, asimismo, el nmero de operaciones, pues abortan la generacin del rbol en el momento en que se detecta que no conduce a la solucin. Algunos problemas pueden resolverse en tiempos reducidos, aun para redes grandes (caminos ptimos, conectividad, puentes), en tanto que otros llevan a una explosin combinatoria (ciclos hamiltonianos, circuitos eulerianos, ciclos largos). En estos ltimos, la bsqueda exhaustiva ha de sustituirse por heursticas adecuadas al problema que permitan obtener alguna solucin, tal como la expuesta en el problema del salto del caballo. Se indica una forma compacta para almacenar esta informacin, que es manejada con la mxima eficacia por los algoritmos. Considrese una red formada por un conjunto de N vrtices, identificados por los nmeros de 1 a N, conectados entre s, bien por arcos orientados, cada uno de ellos con un valor de recorrido (digrafo), o por arcos bidireccionales (grafo). En un digrafo, dos vrtices pueden estar conectados mediante uno o dos arcos, esto es, en uno o ambos sentidos, pudiendo ser distintos sus valores de recorrido, admitiendo la existencia de bucles (arcos que unen a un vrtice consigo mismo), en tanto que en un grafo slo puede haber un arco entre dos vrtices, los cuales han de ser distintos. Llamaremos orden al nmero de vrtices, y tamao al nmero de arcos. Dos vrtices conectados por un arco, o dos arcos con un extremo comn, diremos que son adyacentes. El grafo asociado a un digrafo es el resultante de transformar todos los arcos de ste en bidireccionales, suprimiendo los arcos duplicados y los que conectan un vrtice consigo mismo. Vamos a describir cuatro problemas clsicos de bsqueda de caminos orientados en digrafos, teniendo en cuenta el sentido de recorrido de los arcos, y dos sobre la conectividad en grafos, presentando para todos ellos algoritmos basados en la construccin de un rbol, que proporcionan soluciones eficaces a los mismos.

You might also like