Árboles Generadores Mínimos
Árboles Generadores Mínimos
Árboles Generadores Mínimos
mnimos
Jose Galaviz Casas
Departamento de Matem
aticas,
Facultad de Ciencias,
Universidad Nacional Aut
onoma de M
exico.
2009-I
Imgs/ciencias
Jos
e Galaviz Casas (Facultad de Ciencias, UNAM) Algoritmos para encontrar
arboles generadores mnimos
2009-I
1 / 11
Contenido
Algoritmo generico
Prim-Dijkstra.
Algoritmo de Kruskal
Imgs/ciencias
Jos
e Galaviz Casas (Facultad de Ciencias, UNAM) Algoritmos para encontrar
arboles generadores mnimos
2009-I
2 / 11
Algoritmo generico
Entrada: grafica G (V , E ) conexa, pesada, no dirigida, con pesos
distintos w y positivos en sus aristas.
Salida: un arbol que contiene a todos los vertices V , tal que la
suma de los pesos de sus aristas es menor o igual que la de
cualquier otro arbol que contenga a todos los vertices.
AGM(G , w )
1 T
2 while T no sea un arbol generador do
3
e encuentraAristaSegura(G \ T )
4
T T {e}
5 endwhile
6 end
Imgs/ciencias
Jos
e Galaviz Casas (Facultad de Ciencias, UNAM) Algoritmos para encontrar
arboles generadores mnimos
2009-I
3 / 11
Imgs/ciencias
Jos
e Galaviz Casas (Facultad de Ciencias, UNAM) Algoritmos para encontrar
arboles generadores mnimos
2009-I
4 / 11
Imgs/ciencias
Jos
e Galaviz Casas (Facultad de Ciencias, UNAM) Algoritmos para encontrar
arboles generadores mnimos
2009-I
4 / 11
Algoritmo de Prim-Dijkstra
PrimDijkstra(G , w , s)
1 QV
2 T
3 for v Q do
4
costo[v ]
5 endfor
6 costo[s] 0
7 while Q 6= do
8
//el vertice mas barato de agregar
9
//(de acuerdo con costo) que no esta en T
10
v eliminaMin(Q, costo)
11
T .agregaVertice(v )
12
for u G .vecinos(v ) do
13
if (u Q) (w (v , u) < costo[u]) then
14
costo[u] w (v , u)
15
endif
16
endfor
17 endwhile
18 end
Jos
e Galaviz Casas (Facultad de Ciencias, UNAM) Algoritmos para encontrar
arboles generadores mnimos
Imgs/ciencias
2009-I
5 / 11
2009-I
6 / 11
Imgs/ciencias
Jos
e Galaviz Casas (Facultad de Ciencias, UNAM) Algoritmos para encontrar
arboles generadores mnimos
2009-I
7 / 11
Imgs/ciencias
Jos
e Galaviz Casas (Facultad de Ciencias, UNAM) Algoritmos para encontrar
arboles generadores mnimos
2009-I
8 / 11
Imgs/ciencias
Jos
e Galaviz Casas (Facultad de Ciencias, UNAM) Algoritmos para encontrar
arboles generadores mnimos
2009-I
8 / 11
Algoritmo de Kruskal
Kruskal(G (V , E ), w )
1 T
2 S
3 // se construyen conjuntos triviales
4 for v V do
5
S.agregaConjunto(v )
6 endfor
7 E .ordenaCreciente()
8 // recorrido en orden creciente de peso
9 for (u, v ) E do
10
if S.conjunto(u) 6= S.conjunto(v ) then
11
T .agregaArista(u, v )
12
S.union(u, v )
13
endif
14 endfor
15 end
Jos
e Galaviz Casas (Facultad de Ciencias, UNAM) Algoritmos para encontrar
arboles generadores mnimos
Imgs/ciencias
2009-I
9 / 11
El if de la lnea 10 no permite a
nadir la arista (u, v ) siempre
que u y v pertenezcan al mismo conjunto. Esto significa que
a
nadir la arista resultara en un ciclo. Como el resto de las
aristas del ciclo se a
nadieron antes, por el primero de los
puntos de esta lista, eso significa que la arista (u, v ) sera la
mas pesada del ciclo, lo que, de acuerdo al principio del ciclo,Imgs/ciencias
significa que (u, v ) no puede estar en el arbol.
Jos
e Galaviz Casas (Facultad de Ciencias, UNAM) Algoritmos para encontrar
arboles generadores mnimos
2009-I
10 / 11
2009-I
Imgs/ciencias
11 / 11