[anterior]
[home]
[siguiente]
3.2. Árboles
Definición. Un árbol es un grafo acíclico conexo.
Teorema. Las siguientes proposiciones son equivalentes para un grafo G:
1. G es un árbol
2. Cualesquiera dos puntos de G se unen por una trayectoria única
3. G es conexo y p = q + 1
4. G es acíclico y p = q + 1
Definición. Un grafo con pesos en los arcos es G = (V, X) con un conjunto {w1, ..., wq} asociado a los arcos.
Ejemplo: En una zona aislada existe un conjunto V = {v1, ..., vp} de comunidades. También existen caminos entre comunidades, de modo que el grafo es conexo. Ahora se quiere proveerlos de una red eléctrica, con la limitación de que los postes deben ir junto a los caminos (por economizar). Encontrar la red eléctrica que minimice el largo total a establecer.
Pre-solución. Basta un árbol (¿por qué?). Entonces buscamos un subgrafo (árbol) de recubrimiento de G de costo mínimo, donde el costo es la suma de los pesos, que en este caso son los largos de los caminos que serán parte del árbol.
Para encontrar un árbol de recubrimiento mínimo hay varios algoritmos. Mostraremos uno de ellos.
Algoritmo de Prim
Input: Un grafo conexo con pesos G = (V, X), con V = {v1, ..., vp}
Output: Un árbol de recubrimiento mínimo T
Método: Expandir el conjunto U Í V desde {v1} a V usando el arco de mínimo peso de U a V-U.
1. Sea t ¬ v1, T ¬ Æ, y U ¬ {v1}
2. Sea w(t, u) ¬ min v Î V-U {w(t, v)}
3. T ¬ T È {e} donde e = tu tiene peso w(t, u)
4. U ¬ U È {u}
5. Si U = V entonces pare.
6. Para cada v Î V-U, sea w(t, v) ¬ min{w(t, v), w(u, v)}
7. Vaya al paso 2
Ejemplo. Con el grafo

1. t ¬ v1, T ¬ Æ, y U ¬ {v1}
2-3. w(t, u) = 3, T ¬ T È {v1 v3} (podría haberse elegido cualquiera de v3, v4 o v5)
4-5. U ¬ U È {v1}, continuamos
6. w(t, v2) = 2, w(t, v4) = 3, w(t, v5) = 3 y continuamos
2-3. w(t, u) = 2 y T ¬ T È {v2 v3} = {v1 v3, v2 v3}
4-5. U ¬ U È {v2} = {v1, v3, v2} y continuamos
6. w(t, v4) = 1, y w(t, v5) = 3 y continuamos

Si continuamos, obtenemos:

U = {v1, v3, v2, v4, v5}
T = {v1v3, v3v2, v2v4, v4v5}
Costo total: 3 + 2 + 1 + 2 = 8
El algoritmo de Prim tiene complejidad tiempo O(|V|2).
El problema de encontrar el árbol de recubrimiento mínimo con pesos para digrafos es mucho más difícil. De hecho, no se conoce un algoritmo polinomial para resolver este problema.
[anterior]
[home]
[siguiente]