CIRCUITO DE EULER
Euler demostró que es sencillo determinar si existe un camino de Euler en el grafo, ya que todo lo que hay que hacer es verificar el grado de los nodos. Existen un teorema de la teoría de grafos que establece que un grafo tiene un camino de Euler si y solo sí es este es conexo y exactamente dos de sus nodos tienen grado impar. De manera similar, un grafo tiene un tour de Euler si y solo sí es conexo y todos sus nodos tienen grado par.
Basado en estos teoremas se puede verificar la existencia de un camino de Euler antes de intentar encontrar el camino, lo cual podría ahorrar una gran cantidad de procesamiento en la búsqueda de un camino que nunca logrará encontrarse. Además, la comprobación de grado de los nodos de un grafo es una tarea que fácilmente podría ser de complejidad lineal en el número de nodos del mismo.
Una técnica más adecuada es la de encontrar ciclos en el grafo, borrando de las listas de adyacencia las aristas que se encuentren y almacenando en un pila los nodos que se vayan encontrando, de tal manera de registrar los nodos del camino e imprimir sus enlaces, así como poder verificar caminos alternativos en cada nodo. Esta técnica puede encontrar un tour de Euler, si existe en el grafo, en tiempo lineal.
El siguiente ejemplo ilustra el funcionamiento de esta estrategia sobre un grafo de ejemplo. La secuencia de ilustraciones va de izquierda a derecha y de arriba hacia abajo. En cada una de las figuras podemos ver el grafo, las lista de adyacencia de cada nodo y la pila P que lleva registro del tour. El tour comienza en el nodo 0 y la primera arista a visitar es la 0-1. Nótemos que en la primera figura P dicha arista no aparece en las listas y que en P ya se encuentran los nodos 0 y 1.
Una vez que las listas de adyacencias estén vacías el algoritmo ha culminado su ejecución. La secuencia de nodos que se desapilan de P nos indican un tour de Euler posible para el grafo anterior: 0-6-4-3-2-4-5-0-2-1-0.
Ahora bien, supóngamos que en la sexta imagen no se hubiese viajado al nodo 2 sino al nodo 6, entonces en la séptima figura se hubiese viajado al nodo 0 y desde este último no podemos elegir más enlaces, lo mismo ocurre con el nodo 6. En estos casos el algoritmo desapila de P los nodos aislados y continua con el nodo 4, en cuyo caso el algoritmo culminaría cuando P contenga los identificadores: 0 1 2 0 5 4 3 2 4. Es evidente que desde 4 se puede alcanzar a 6 y a 0 porque estaban apilados luego de él en la pila, así que basta con apilarlos de nuevo en el orden en que apilados originalmente: 6 0. En esta variante del problema se obtendría un tour de Euler diferente al anterior: 0-6-4-2-3-4-5-0-2-1-0.
No hay comentarios:
Publicar un comentario