Árboles Generadores Mínimos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 13

Algoritmos para encontrar arboles generadores

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

Propiedad del corte

Sea G (V , E ) una grafica conexa, pesada, no dirigida y con todos


sus pesos distintos y positivos. Sea S V un subconjunto
cualquiera de vertices de G . Si e = (v , w ) es la arista de menor
peso tal que v S y w V \ S, entonces e esta en todo arbol
generador de peso mnimo para G .

Imgs/ciencias

Jos
e Galaviz Casas (Facultad de Ciencias, UNAM) Algoritmos para encontrar
arboles generadores mnimos

2009-I

4 / 11

Propiedad del corte

Sea G (V , E ) una grafica conexa, pesada, no dirigida y con todos


sus pesos distintos y positivos. Sea S V un subconjunto
cualquiera de vertices de G . Si e = (v , w ) es la arista de menor
peso tal que v S y w V \ S, entonces e esta en todo arbol
generador de peso mnimo para G .
La arista de menor peso que une un conjunto de v
ertices con
su complemento es siempre una arista segura

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

Por que jala? (1)


El arbol crece solo a causa de la lnea 11 con agregaVertice.
El vertice v que se agrega proviene de la lnea 10. Es el que
resulta mas barato de a
nadir de aquellos que no estan a
un en
T , el agm.
Los costos se incializan en , as que si resulta barato a
nadir
a v es porque ya pas
o por al menos una actualizacion de costo
(lneas 13 a la 15).
Esto solo pudo ocurrir cuando (lnea 12), v en algun momento
v resulto vecino de un vertice ya a
nadido a T .
As que v no esta en T , pero es vecino de, al menos un
vertice que s esta, digamos w .

As que la lnea 10 realmente esta diciendo que v es el


extremo de la arista (w , v ) tal que w T y v V \ T , que Imgs/ciencias
a
la sazon es la mas ligera que los une.
Jos
e Galaviz Casas (Facultad de Ciencias, UNAM) Algoritmos para encontrar
arboles generadores mnimos

2009-I

6 / 11

Por que jala?(2)

Por la propiedad del corte esta arista esta en todo agm.


De acuerdo con la lnea 7 esto se repite hasta que se vaca Q,
que comienza siendo todo V (lnea 1).
De Q se elimina exctamente un vertice en cada iteracion del
while (lneas 7 a 17).
As que el invariante del ciclo 717 es que en su i-esima
iteracion se han a
nadido i aristas e i + 1 vertices del agm.
Al final, se han a
nadido los n = |V | vertices de G y por tanto
n 1 aristas de E . Cada una de ellas necesariamente esta en
el agm.
As que acaban estando todas.

Imgs/ciencias

Jos
e Galaviz Casas (Facultad de Ciencias, UNAM) Algoritmos para encontrar
arboles generadores mnimos

2009-I

7 / 11

Propiedad del ciclo

Sea G (V , E ) una grafica conexa, pesada, no dirigida y con todos


sus pesos distintos y positivos. Sea C un ciclo cualquiera en G . Si
e = (u, v ) es la arista de peso maximo contenida en C entonces e
no pertenece a ning
un arbol generador de peso mnimo.

Imgs/ciencias

Jos
e Galaviz Casas (Facultad de Ciencias, UNAM) Algoritmos para encontrar
arboles generadores mnimos

2009-I

8 / 11

Propiedad del ciclo

Sea G (V , E ) una grafica conexa, pesada, no dirigida y con todos


sus pesos distintos y positivos. Sea C un ciclo cualquiera en G . Si
e = (u, v ) es la arista de peso maximo contenida en C entonces e
no pertenece a ning
un arbol generador de peso mnimo.
En un ciclo necesariamente alguna arista sobra (quieres tener
un
arbol) y esa es la de mayor peso en el ciclo (quieres tener
el
arbol m
as barato).

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

Por que jala?(1)


Las aristas se ordenan no decrecientemente. As que primero
se revisan (lnea 9) las mas baratas.
Originalmente (lnea 5) todos los vertices estaban en
conjuntos diferentes.
Dos vertices w y z estan en el mismo conjunto si
Se ha determinado que son adyacentes.
Se ha encontrado un camino para ir de w a q, un camino para
ir de z a p y resulta que p y q son adyacentes.

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

Por que jala?(2)


El arbol crece en la lnea 11, cuando se a
nade la arista (u, v ).
Esto solo se hace si lo permite el if de la lnea 10. Cuando
resulta que u y v pertenecen a conjuntos diferentes.
Nuevamente por el orden en el que son consideradas las
aristas, esto significa que (u, v ) es la mas barata de las aristas
que unen el conjunto de u con el de v .
De acuerdo con la propiedad del corte (u, v ) es entonces una
arista de cualquier agm.
As que el invariante del ciclo 914 es que en cada iteracion T
es el sunconjunto de las primeras aristas de G con peso menor
o igual al peso de la arista (u, v ).
Al final se han revisado todas las aristas, as que se han
considerado todos los pesos posibles y por tanto en T estan
todas las aristas del agm.
Jos
e Galaviz Casas (Facultad de Ciencias, UNAM) Algoritmos para encontrar
arboles generadores mnimos

2009-I

Imgs/ciencias

11 / 11

También podría gustarte