Análisis más estricto del algoritmo de Borůvka modificado


11

El algoritmo de Borůvka es uno de los algoritmos estándar para calcular el árbol de expansión mínimo para un gráfico , con .G=(V,E)|V|=n,|E|=m

El pseudocódigo es:

MST T = empty tree
Begin with each vertex as a component
While number of components > 1
    For each component c
       let e = minimum edge out of component c
       if e is not in T
           add e to T  //merging the two components connected by e

Llamamos a cada iteración del bucle externo una ronda. En cada ronda, el bucle interno corta el número de componentes al menos a la mitad. Por lo tanto, hay a lo sumo rondas . En cada ronda, el bucle interno mira cada borde como máximo dos veces (una vez de cada componente). Por lo tanto, el tiempo de ejecución es como máximo .O(logn)O(mlogn)

Ahora supongamos que después de cada ronda, eliminamos todos los bordes que solo conectan vértices dentro del mismo componente y también eliminamos los bordes duplicados entre componentes, de modo que el bucle interno solo mire algunos bordes m '<m, que son los bordes de peso mínimo que conecte dos componentes previamente desconectados.

¿Cómo afecta esta optimización al tiempo de ejecución?

Si de alguna manera supiéramos que en cada ronda, reduciría el número de aristas a la mitad, entonces el tiempo de ejecución mejoraría significativamente: .T(m)=T(m/2)+O(m)=O(m)

Sin embargo, si bien la optimización reducirá drásticamente el número de bordes examinados (solo 1 borde en la ronda final, y como máximo # de componentes elige 2 en general), no está claro cómo / si podemos usar este hecho para ajustar el análisis del tiempo de ejecución.


En el peor de los casos (una cadena), eliminaría exactamente un borde por ronda, por lo que no puede usar ese hecho para mejorar los límites de un gráfico general. Sin embargo, podría considerar, por ejemplo, solo gráficos completos.
Xodarap

@Xodarap si es un camino simple (¿es eso lo que quiere decir con cadena?), Entonces en la primera ronda selecciona al menos la mitad de los bordes. Estos bordes se eliminan de las rondas posteriores. G
Joe

Tenga en cuenta que puede usar una de las estructuras de búsqueda de unión altamente optimizadas para mejorar este algoritmo.
Raphael

Respuestas:


5

Es posible crear casos de prueba para gráficos generales en los que el paso de Borůvka no reduciría a la mitad el número de aristas en cada paso, aunque reduzca a la mitad el número de vértices. Una nota interesante es que la optimización que sugiere funciona para gráficos planos. Esto se debe a los gráficos planos i, e . Y, en general, conduce a una aceleración de la clase de familias menores de gráficos cerrados.|E|3|V|6|E|=O(|V|)

Referencia:

  • Tesis de maestría, Claude Anderson (en la página 100 se describe la entrada del peor caso para el algoritmo de Borůvka). [enlace]

  • "Dos algoritmos de tiempo lineal para MST en clases menores de gráfico cerrado". Archivum mathematicum 40 (3): 315–320, 2004. [enlace]

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.