Según lo indicado por el comentario de Rafael y el comentario de j_random_hacker , la respuesta es positiva. De hecho, cualquier MST es accesible por cualquier algoritmo MST con algunas excepciones menores.
Para un gráfico , dos funciones de peso en todos los bordes (a números reales) se definen como (débilmente) compatibles con la comparación (entre sí) si podemos extender el orden débil estricto en los bordes inducido por cualquiera de las funciones de peso al mismo estricto orden total. Es decir, podemos diseñar reglas de desempate consistentes con cada función de peso para que el resultado de la comparación de cualquiera de los dos bordes por una función de peso y sus reglas de desempate sea el mismo que el resultado de la otra función de peso y su empate. rompiendo las reglas.sol
Lema 1 : Deje yw1w2 dos funciones de peso. Las siguientes cinco declaraciones son equivalentes entre sí.
- y w 2 son compatibles con la comparación.w1w2
- En cualquier conjunto de bordes, hay un borde más claro común por y por w 2 .w1w2
- En cualquier conjunto de aristas, hay una arista más pesada común por y por w 2 .w1w2
- Existe una función de peso que asigna pesos distintos a bordes distintos de manera que w 3 es compatible con w 1 y w 2 .w3w3w1w2
- para cualquier borde y e 2 de modo que e 1 sea más ligero que e 2 en una función de peso, e 1 es tan ligero o más ligero que e 2 en la otra función de peso.mi1mi2mi1mi2mi1mi2
La prueba del lema 1 se deja como un ejercicio fácil.
Lema 2 : deje que dos funciones de peso y w 2 sean tales que si e 1 < w 1 e 2 , entonces e 1 < w 2 e 2 . Entonces son compatibles con la comparación.w1w2mi1<w1mi2mi1<w2mi2
(Sugerencia para) Prueba: Un enfoque es verificar la condición 5 del lema 1. Otro enfoque es verificar la condición 2 del lema 1 mostrando que en cualquier conjunto de bordes, un borde más claro por también es un borde más claro por w 1 ,w2w1
Un algoritmo basado en la comparación en un gráfico se define como compatible con la comparación si para cualquiera de las dos funciones de peso (débilmente) compatibles con la comparación en todos los bordes, podemos ejecutar el algoritmo con una función de peso de una manera que se pueda repetir sin ningún cambio con la otra función de peso. En particular, esas dos ejecuciones del algoritmo tendrán la misma salida.sol
Tenga en cuenta que la mayoría, si no todos, los algoritmos MST se pueden establecer en dos tipos. El primer sabor supone que los bordes distintos de tienen pesos distintos, que se utiliza cuando la principal preocupación es encontrar un MST (que de hecho es también el MST único). El segundo sabor permite que distintos bordes de G tengan los mismos pesos. Por supuesto, en esta respuesta, donde la principal preocupación es encontrar todos los MST, solo nos interesarán los algoritmos de MST en el segundo sabor.solsol
Un algoritmo MST compatible con la comparación puede encontrar todos los MST.
Para probar la proposición anterior, solo necesitamos adaptar ligeramente la sección "Kruskal puede encontrar cada MST" en el cálculo del número de MST . Para cualquier MST de G con función de peso w 1 , elija un peso positivo que sea más ligero que la diferencia absoluta entre cualquier par de pesos de borde desiguales. Si restamos ese peso del peso de cada borde en m sin cambiar los pesos de otros bordes, obtenemos una nueva función de peso, digamos, w 2 . Si el borde e 1 es más claro que e 2 por w 1 , e 1 debe ser más claro quemetrosolw1metrow2mi1mi2w1mi1 por w 2 también. Por el Lema 2, w 1 y w 2 son compatibles comparación. Tenga en cuenta que m es el MST único con w 2 . (Una forma de mostrar esta singularidad es demostrar que cada vez que se reduce el peso de un borde MST, cualquier MST con la nueva función de peso debe contener ese borde). Por lo tanto, cualquier ejecución del algoritmo en w 2 encontrará m . Debido a que el algoritmo es compatible con la comparación, podemos ejecutar el algoritmo de la misma manera con w 1 o con w 2 . Dado que esa ejecución encontrará el MST único, m conmi2w2w1w2metrow2w2metrow1w2metro , encontrará m también con w 1 .w2metrow1
Cada algoritmo MST es compatible con la comparación
La proposición anterior suena demasiado amplia. Bueno, por cada algoritmo MST, me refiero a cualquier algoritmo MST general basado en la comparación que he visto, excluyendo aquellos aparentemente patológicos como incorrectos o que tienen pasos innecesarios. Dado que un algoritmo MST compatible con la comparación puede encontrar todos los MST, cada algoritmo MST puede encontrar todos los MST. En particular, cada uno de los cuatro algoritmos clásicos de MST , a saber, los algoritmos de Borůvka, Prim, Kruskal y de eliminación inversa pueden encontrar todos los MST.
Aquí hay tres algoritmos MST más compatibles con la comparación.
- el algoritmo delete-heavy-edge. Comience con todos los bordes. Encuentre repetidamente un ciclo y retire uno de sus bordes más pesados hasta que no quede ningún ciclo.
- el algoritmo add-non-heavy-edge. Comience con el conjunto vacío. Iterar a través de todos los bordes. Se agrega cada borde y, si se forma un ciclo, elimine uno de los bordes más pesados.
- el algoritmo de reemplazo por borde más ligero. Comience con cualquier árbol de expansión . Encuentra el ciclo en T más un borde de correo no en T . Si una ventaja t en ese ciclo es más pesado que el correo , eliminar t de T y añadir electrónico a T . Repetir hasta que no podamos reducir el peso de T más.TTmiTtmitTmiTT
El siguiente algoritmo MST no es compatible con la comparación.
- el algoritmo de Kruskal sesgado en grado, que es el algoritmo de Kruskal con la siguiente modificación. Supongamos que cuando vamos a eliminar un borde con el peso mínimo de como en la descripción de Wikipedia del algoritmo de Kruskal , tenemos múltiples bordes con el peso mínimo para elegir. El borde que elegimos eliminar será un borde cuya suma de grados de sus dos vértices es la más grande entre todas las opciones. Este algoritmo no puede ser compatible con la comparación, ya que no encuentra el MST { a b , b c , c d } del gráfico con los vértices a , b , c y el borde a bS{ a b , b c , c d}a , b , ca bde peso y bordes b c , c d , d b de peso 2 . Este algoritmo se considera patológico debido a esa modificación innecesaria.1b c , c d, dsi2
Tenga en cuenta que los ocho algoritmos MST mencionados anteriormente se basan en la comparación.
¿Cómo mostrar un algoritmo es compatible con la comparación?
Usaré el algoritmo de Kruskal como ejemplo. Aquí está la descripción del algoritmo de Kruskal (en el segundo sabor) en un gráfico no dirigido conectado ponderado .sol
- cree un gráfico que tenga los mismos vértices que G pero sin aristas. Entonces F es un bosque de árboles separados de un solo vértice.FsolF
- S
- SF
- F
w1w2solSw1w2
Un algoritmo es compatible con la comparación si, en términos generales, se puede describir en tres tipos de pasos.
- hacer algo que no implique peso.
- seleccionar una arista con el peso mínimo en un conjunto de aristas dado
- seleccionar una arista con el peso máximo en un conjunto dado de aristas
Esta condición suficiente cubre los algoritmos Borůvka, Prim, Kruskal, reverse-delete, delete-heavy-edge y add-non-heavy-edge. Tenga en cuenta que para cumplir con esta condición suficiente, es posible que tengamos que cambiar ciertas descripciones de un algoritmo sin afectar el conjunto de MST alcanzables. Debido a la excepción de que el algoritmo de Kruskal con sesgo de grado es compatible con la comparación, permítanme enfatizar que esta condición suficiente se describe en términos sueltos