stringtranslate.com

Algoritmo de Edmonds

En teoría de grafos , el algoritmo de Edmonds o algoritmo de Chu–Liu/Edmonds es un algoritmo para encontrar una arborescencia de expansión de peso mínimo (a veces llamada ramificación óptima ). Es el análogo dirigido del problema del árbol de expansión mínimo . El algoritmo fue propuesto de forma independiente primero por Yoeng-Jin Chu y Tseng-Hong Liu (1965) y luego por Jack Edmonds (1967).

Algoritmo

Descripción

El algoritmo toma como entrada un gráfico dirigido donde es el conjunto de nodos y es el conjunto de aristas dirigidas, un vértice distinguido llamado raíz y un peso de valor real para cada arista . Devuelve una arborescencia en expansión con raíz en de peso mínimo, donde el peso de una arborescencia se define como la suma de los pesos de sus aristas, .

El algoritmo tiene una descripción recursiva. Sea la función que retorna una arborescencia de expansión con raíz en de peso mínimo. Primero eliminamos cualquier borde cuyo destino sea . También podemos reemplazar cualquier conjunto de bordes paralelos (bordes entre el mismo par de vértices en la misma dirección) por un solo borde con peso igual al mínimo de los pesos de estos bordes paralelos.

Ahora, para cada nodo que no sea la raíz, encuentre la arista que ingresa a con el peso más bajo (con los lazos rotos arbitrariamente). Denote la fuente de esta arista por . Si el conjunto de aristas no contiene ningún ciclo, entonces .

De lo contrario, contiene al menos un ciclo. Elija arbitrariamente uno de estos ciclos y llámelo . Ahora definimos un nuevo grafo dirigido ponderado en el que el ciclo se "contrae" en un nodo de la siguiente manera:

Los nodos de son los nodos de no en más un nuevo nodo denotado .

Para cada borde en , recordamos a qué borde corresponde.

Ahora, encuentre una arborescencia de expansión mínima de usando una llamada a . Como es una arborescencia de expansión, cada vértice tiene exactamente una arista entrante. Sea la única arista entrante a en . Esta arista corresponde a una arista con . Elimine la arista de , rompiendo el ciclo. Marque cada arista restante en . Para cada arista en , marque su arista correspondiente en . Ahora definimos como el conjunto de aristas marcadas, que forman una arborescencia de expansión mínima.

Observe que se define en términos de , con estrictamente menos vértices que . Encontrar un gráfico de un solo vértice es trivial (es simplemente él mismo), por lo que se garantiza que el algoritmo recursivo terminará.

Duración del programa

El tiempo de ejecución de este algoritmo es . Una implementación más rápida del algoritmo debido a Robert Tarjan se ejecuta a tiempo para gráficos dispersos y para gráficos densos. Esto es tan rápido como el algoritmo de Prim para un árbol de expansión mínima no dirigido. En 1986, Gabow , Galil , Spencer y Tarjan produjeron una implementación más rápida, con un tiempo de ejecución .

Referencias

Enlaces externos