Árbol de expansión mínimo: Kruskal y Prim

Conecta todos los puntos entre sí con la menor longitud de carretera posible. Kruskal empieza por las carreteras más cortas y descarta las que cerrarían un ciclo; Prim hace crecer una sola red desde A y elige siempre la carretera más barata que sale de ella. Avanza paso a paso con cualquiera de los dos algoritmos: verás por qué se acepta o se rechaza cada carretera. Arrastra los puntos y el árbol se reconstruirá.

Cargando simulación interactiva...

Lección

La teoría — Árbol de expansión mínimo: Kruskal y Prim

Un árbol de expansión de un conjunto de puntos es un conjunto de carreteras que conecta todos los puntos entre sí sin contener ciclos; con n puntos siempre tiene n − 1 carreteras. El árbol de expansión mínimo es el árbol de expansión de menor longitud total. Un corte divide los puntos en dos grupos, y una carretera cruza el corte cuando sus extremos pertenecen a grupos distintos. Un árbol de Steiner también puede utilizar enlaces que no coinciden con ninguno de los puntos.

Qué significa cada símbolo

n
el número de puntos
w(u, v)
la longitud, en km, de la carretera recta entre u y v
S
los puntos de un lado de un corte; en el algoritmo de Prim, la red construida hasta ese momento
Supone
Las carreteras son rectas, su coste es igual a su longitud y puede conectarse cualquier par de puntos. Si no hay dos distancias iguales, el árbol de expansión mínimo es único. Cuando hay empates, como en el triángulo y el cuadrado, varios árboles pueden compartir la longitud mínima y los dos algoritmos pueden elegir árboles distintos.

La más barata del corte, no la más cercana desde aquí 🖖

Pulsa Doce pueblos y recorre el algoritmo de Kruskal paso a paso. Examina las 66 carreteras posibles empezando por las más cortas. Por eso K–L, de 13,89 km, se acepta de inmediato, mientras que C–D y B–C se rechazan: el camino rojo ya conecta sus extremos. Cambia a Prim, que hace crecer una sola red desde A. Elige las carreteras en otro orden, deja K–L para el final, rechaza las mismas dos y termina con las mismas 11 carreteras y los mismos 199,04 km. Ambos siguen una misma regla, la propiedad del corte. Divide los puntos en dos grupos como quieras: si no hay dos carreteras de igual longitud, la más corta que une ambos grupos pertenece al árbol de expansión mínimo. Si la excluyes, el camino del árbol entre sus extremos tendrá que cruzar la separación por alguna carretera más larga; al intercambiarlas, el árbol se acorta. En cada paso de Prim, la red sombreada ocupa uno de los lados de un corte. Pulsa ahora Vecino más próximo. Es el bucle de Prim con un solo cambio: busca desde el último pueblo alcanzado, no desde la red entera. En el tercer paso elige D–F, de 17,96 km, aunque A–C, de 17,67 km, cruza el corte. Pasa de largo ante A–C siete veces más y termina con un 10,76% de longitud adicional. Otakar Borůvka, el primero en resolver el problema, lo formuló en 1926 pensando en la red eléctrica del sur de Moravia. Habló de puntos cuyas «distancias mutuas son diferentes»: la misma condición que impide que Kruskal y Prim discrepen.

La red más corta no ofrece trayectos cortos 🖖

Pulsa Pueblos en círculo. Diez pueblos rodean un lago y el árbol recorre la orilla salvo por un tramo: el hueco más ancho, entre J y A. En línea recta, los separan 25,89 km; por el árbol, 128,30 km, una distancia 4,96 veces mayor, pues la única ruta entre ambos atraviesa toda la red. La línea morada discontinua señala la pareja; arrastra cualquier pueblo y la página encontrará el nuevo peor caso. Un árbol de expansión mínimo reduce al máximo la longitud total, pero no garantiza nada sobre la distancia entre dos pueblos concretos. Construir también la carretera de 25,89 km convertiría el trayecto de A a J en un recorrido directo. Decidir si compensa añadirla exige estudiar los viajes: es el problema del camino más corto, que continúa en la página dedicada al algoritmo de Dijkstra.

Un enlace puede mejorar el árbol, y nadie ha demostrado hasta qué punto 🖖

Pulsa Tres localidades. Están separadas por 40 km, así que el árbol mide 80,00 km. Un enlace central donde confluyen tres carreteras a 120° permite conectarlas con 69,28 km, un 13,40% menos, es decir, 1 − √3/2. Pulsa Cuatro en un cuadrado: dos enlaces ahorran un 8,93%. Vuelve al triángulo y arrastra C hacia A y B. En cuanto el ángulo de C supera los 120°, el enlace se desplaza hasta C; a partir de ahí, ningún enlace aporta ventaja. Hallar los mejores enlaces es el problema del árbol de Steiner. En 1968, Edgar Gilbert y Henry Pollak conjeturaron que el triángulo equilátero representa el peor caso: para ningún conjunto de puntos del plano puede un árbol de Steiner medir menos de √3/2 de su árbol de expansión mínimo. Du y Hwang publicaron una demostración en 1990. En 2010, Innami y otros tres investigadores aportaron indicios de que su paso fundamental era incorrecto. Ivanov y Tuzhilin, que señalaban lagunas en la prueba desde 2002, escribieron en 2012 que la conjetura seguía abierta. Una recopilación de 2025 sobre problemas abiertos de árboles de Steiner aún la incluye. Nadie sabe si alguna disposición de puntos permite ahorrar más que el 13,40% del triángulo.

Problema resuelto al detalle

  1. Dos enlaces para un cuadrado 4 pasos

    ¿Dónde se sitúan los enlaces y cuánto mide la carretera? Pulsa Cuatro en un cuadrado: las localidades ocupan los vértices de un cuadrado de 40 km, con un árbol de expansión de 120,00 km y una red con enlaces de 109,28 km. Calcula esa longitud exacta y comprueba la primera idea de casi todo el mundo: una X que pase por el centro.

    Abre este problema en la herramienta

    1. Cuando tres carreteras confluyen en un enlace de una red mínima, forman ángulos de 120°. De no ser así, los tres vectores unitarios dirigidos a lo largo de ellas no sumarían cero, y desplazar el enlace en la dirección de su suma reduciría la longitud total.

    2. Coloca ambos enlaces sobre la recta que atraviesa el centro del cuadrado. Cada uno atiende los dos vértices más cercanos y una carretera central une los enlaces. Cada ramal forma 120° con esa carretera, es decir, 60° con la recta que la contiene. Debe cubrir 20 km en perpendicular, la mitad del lado; por tanto, su longitud es 20/sin 60° y avanza 20/tan 60° en la dirección de la carretera.

    3. Cuatro ramales y una carretera central que ocupa la parte de los 40 km que no cubren dos de ellos.

    4. La X: cuatro carreteras desde los vértices hasta el centro, cada una igual a media diagonal, 20√2 km.

    Respuesta

    40(1 + √3) = 109,28 km, con cada enlace a 11,55 km del lado correspondiente; la X mide 113,14 km. La X mejora el árbol de expansión, pero no supera a la red con enlaces, porque sus carreteras forman ángulos de 90° y no de 120°. Hay dos redes con exactamente esta longitud: la que aparece en la página y la misma girada 90°. El ahorro es 1 − (1 + √3)/3 = 8,93%, menor que el 13,40% del triángulo.

Ruta de aprendizaje

Por qué un algoritmo es correcto

Referencias (3)