• No se han encontrado resultados

Árboles: Árbol Abarcador Minimal CSI / ITESM

N/A
N/A
Protected

Academic year: 2021

Share "Árboles: Árbol Abarcador Minimal CSI / ITESM"

Copied!
47
0
0

Texto completo

(1)

Árboles:

Árbol Abarcador Minimal

CSI / ITESM

´

(2)

Árboles Abarcador (Spanning Tree): Definición

Un árbol abarcador para un grafo G es un subgrafo de G

(3)

Árboles Abarcador (Spanning Tree): Definición

Un árbol abarcador para un grafo G es un subgrafo de G

que contien todos los vértices (abarca) y es árbol.

Resultado:

Todo grafo conexo tien un árbol abarcador.

´

(4)

Ejemplos árboles abarcadores para un grafo Considere el grafo: v1 v2 v3 v4 e1 e2 e3 e4

Árboles abarcadores son: v1 v2 e1 e2 e4 v1 v2 v3 v4 e1 e3 e4 v1 v2 v3 v4 e2 e3 e4

(5)

Grafos Con Peso (Weighted Graphs)

Un árbol con peso es un grafo donde cada lado tiene un número asociado o peso.

´

(6)

Grafos Con Peso (Weighted Graphs)

Un árbol con peso es un grafo donde cada lado tiene un número asociado o peso.

(7)

Grafos Con Peso (Weighted Graphs)

Un árbol con peso es un grafo donde cada lado tiene un número asociado o peso.

Normalmente, al peso de un lado e se le designa por w(e). La suma de todos los pesos de todos los lados de un grafo con peso se llama el peso del grafo.

´

(8)

Grafos Con Peso (Weighted Graphs)

Un árbol con peso es un grafo donde cada lado tiene un número asociado o peso.

Normalmente, al peso de un lado e se le designa por w(e). La suma de todos los pesos de todos los lados de un grafo con peso se llama el peso del grafo.

v1 v2

v3 v4

2

(9)

Grafos Con Peso (Weighted Graphs)

Un árbol con peso es un grafo donde cada lado tiene un número asociado o peso.

Normalmente, al peso de un lado e se le designa por w(e). La suma de todos los pesos de todos los lados de un grafo con peso se llama el peso del grafo.

v1 v2

v3 v4

2

3 8 6

(10)

Árbol Abarcador Minimal (Minimum Spanning Tree)

Un árbol abarcador minimal para un grafo G es

un árbol abarcador tal que cualquier otro árbol abarcador para G no tiene un peso total menor.

(11)

Árbol Abarcador Minimal (Minimum Spanning Tree)

Un árbol abarcador minimal para un grafo G es

un árbol abarcador tal que cualquier otro árbol abarcador para G no tiene un peso total menor. Considere el grafo: v1 v2 v3 v4 2 3 8 6 v1 v2 v3 v4 2 3 6

Peso árbol abarcador=11

v1 v2

v3 v4 2

8 6

Peso árbol abarcador=16

v1 v2

v3 v4

3 8 6

Peso árbol abarcador=17 ´

(12)

MST: Algoritmo de Kruskal

Entrada: Un grafo conexo con peso.

1 Inicialice T a tener todos los vértices de G y no tener

lados.

2 Sea E el conjunto de todos los lados de G y m := 0. 3 Mientras (m < n − 1) hacer

3a Encuentre en E el lado e más pequeño. 3b Borre e de E.

3c Si al añadir e a T no se forma un ciclo, entonces

añadir e a T.

3d Incrementar m en 1. Salida: T.

(13)

Algoritmo de Kruskal: Ejemplo v1 v2 v3 v4 1 3 2 2 3 1 Fase de Inicialización: v1 v2 v3 v4 1 3 2 2 3 1 m := 0 ´

(14)

Algoritmo de Kruskal: Ejemplo v1 v2 v3 v4 1 3 2 2 3 1 m := 0

Encuentre el lado más pe-queño: v1 a v2 peso: 1 v1 v2 v3 v4 1 3 2 2 3 1

(15)

Algoritmo de Kruskal: Ejemplo v1 v2 v3 v4 1 3 2 2 3 1 m := 0

Encuentre el lado más pe-queño: v1 a v2 peso: 1 v1 v2 v3 v4 1 3 2 2 3 1 No forma un ciclo en T: ´

(16)

Algoritmo de Kruskal: Ejemplo v1 v2 v3 v4 1 3 2 2 3 1 m := 0

Encuentre el lado más pe-queño: v1 a v2 peso: 1 v1 v2 v3 v4 1 3 2 2 3 1 No forma un ciclo en T: se añade a T y m := m + 1

(17)

Algoritmo de Kruskal: Ejemplo v1 v2 v3 v4 1 3 2 2 3 1 m := 1

Encuentre el lado más pe-queño: v3 a v4 peso: 1 v1 v2 v3 1 v4 3 2 2 3 ´

(18)

Algoritmo de Kruskal: Ejemplo v1 v2 v3 v4 1 3 2 2 3 1 m := 1

Encuentre el lado más pe-queño: v3 a v4 peso: 1 v1 v2 v3 1 v4 3 2 2 3 No forma un ciclo en T:

(19)

Algoritmo de Kruskal: Ejemplo v1 v2 v3 v4 1 3 2 2 3 1 m := 1

Encuentre el lado más pe-queño: v3 a v4 peso: 1 v1 v2 v3 1 v4 3 2 2 3 No forma un ciclo en T: se añade a T y m := m + 1 ´

(20)

Algoritmo de Kruskal: Ejemplo v1 v2 v3 v4 1 1 3 2 2 3 m := 2

Encuentre el lado más pe-queño: v1 a v4 peso: 2 v1 v2 v3 v4 2 3 2 3

(21)

Algoritmo de Kruskal: Ejemplo v1 v2 v3 v4 1 1 3 2 2 3 m := 2

Encuentre el lado más pe-queño: v1 a v4 peso: 2 v1 v2 v3 v4 2 3 2 3 No forma un ciclo en T: ´

(22)

Algoritmo de Kruskal: Ejemplo v1 v2 v3 v4 1 1 3 2 2 3 m := 2

Encuentre el lado más pe-queño: v1 a v4 peso: 2 v1 v2 v3 v4 2 3 2 3 No forma un ciclo en T: se añade a T y m := m + 1

(23)

Algoritmo de Kruskal: Ejemplo v1 v2 v3 v4 1 1 2 3 2 3 m := 3

El algoritmo termina pues m (3)

es igual a n − 1 (4 − 1 = 3).

´

(24)

MST: Algoritmo de Prim

Entrada: Un grafo conexo con peso.

1 Tome un vértice v de G y sea T el grafo con un vértice y

sin ningún lado.

2 Sea V el conjunto de todos los vértices de G excepto v. 3 Desde i igual 1 hasta n − 1 hacer:

3a Encuentre un lado e que conecte un vértice de V con

alguno de T y que sea lo más pequeño posible. Sea

w el extremo de e que está en V.

3b Añada el vértice w y el lado e al grafo T. 3c Borre el vértice w de V.

(25)

Algoritmo de Prim: Ejemplo v1 v2 v3 v4 1 3 2 2 3 1 Fase de Inicialización: v1 v2 v3 v4 1 3 2 2 3 1 i := 0 ´

(26)

Algoritmo de Prim: Ejemplo v1 v2 v3 v4 1 3 2 2 3 1 i := 0;

Determinar el menor la-do que une un vértice de T (rojos) con otro de V (negros): el menor lado es v1 − v2 v1 v2 v3 v4 3 2 1 2 3 1 Se añade el vértice y el lado y se aumenta i.

(27)

Algoritmo de Prim: Ejemplo v1 v2 v3 v4 1 3 2 2 3 1 i := 1;

Determinar el menor la-do que une un vértice de T (rojos) con otro de V (negros): el menor lado es v2 − v4 v1 v2 v3 v4 3 2 3 2 1 Se añade el vértice y el lado y se aumenta i. ´

(28)

Algoritmo de Prim: Ejemplo v1 v2 v3 v4 1 2 3 2 3 1 i := 2;

Determinar el menor la-do que une un vértice de T (rojos)con otro de V (negros): el menor lado es v3 − v4 v1 v2 v3 v4 3 2 1 Se añade el vértice y el lado y se aumenta i.

(29)

Algoritmo de Prim: Ejemplo v1 v2 v3 v4 1 2 1 3 2 3 i := 3;

El algoritmo termina pues

i (3) es igual a n−1 (4−1 = 3).

´

(30)

Algoritmo de Paseos Cortos

Entrada: Un grafo conexo con peso y un vértice de él vo. 1 Defina V el conjunto de todos los vértices de G.

Etiquete los vértices de V con l(v) = ∞ y

P athT o(v) = ². Etiquete a l(v0) = 0.

3 Mientras V no sea vacío hacer:

3a Elija el vértice de V con menor índice posible.

Llámero vi.

3b Para cada uno de los vértices vj de V adyacentes a

vi hacer: Si l(vi) + w(vo, ij) < l(vj) entonces hacer

l(vj) = l(vi) + w(vi, vj) y P athT o(vj) = P athT o(vi) · vi.

3c Borre el vértice vi de V.

(31)

Ejemplo de Paseos Cortos v1 v2 v0 v3 v4 v5 1 4 7 5 2 2 3 6 1 Inicialización v l(v) P athT o(v) oferta v0 0 ² v1 ∞ ² v2 ∞ ² v3 ∞ ² v4 ∞ ² v5 ∞ ² ´

(32)

Ejemplo de Paseos Cortos: v0 v1 v2 v0 v3 v4 v5 1 4 7 5 2 2 3 6 1

Vértice con mínimo índice

v0: afectación posible a los

adyacentes v l(v) P athT o(v) oferta de v0 v0 0 ² v1 ∞ ² 1 v2 ∞ ² v3 ∞ ² v4 ∞ ² 4 v5 ∞ ²

(33)

Ejemplo de Paseos Cortos: v0 v1 v2 v0 v3 v4 v5 1 4 7 5 2 2 3 6 1 Vértices afectados: v l(v) P athT o(v) oferta v0 0 ² v1 1 v0 v2 ∞ ² v3 ∞ ² v4 4 v0 v5 ∞ ² ´

(34)

Ejemplo de Paseos Cortos: v0 v1 v2 v0 v3 v4 v5 1 4 7 5 2 2 3 6 1 Vértices afectados: v l(v) P athT o(v) oferta v0 0 ² v1 1 v0 v2 ∞ ² v3 ∞ ² v4 4 v0 v5 ∞ ² v0 sale

(35)

Ejemplo de Paseos Cortos: v1 v1 v2 v0 v3 v4 v5 1 7 5 2 4 2 3 6 1

Vértice con mínimo índice

v1: afectación posible a los

adyacentes v l(v) P athT o(v) oferta de v1 v0 0 ² v1 1 v0 v2 ∞ ² 8 v3 ∞ ² v4 4 v0 3 v5 ∞ ² 6 ´

(36)

Ejemplo de Paseos Cortos: v1 v1 v2 v0 v3 v4 v5 1 7 5 2 4 2 3 6 1 Vértices afectados: v l(v) P athT o(v) oferta v0 0 ² v1 1 v0 v2 8 v0v1 v3 ∞ ² v4 3 v0v1 v5 6 v0v1

(37)

Ejemplo de Paseos Cortos: v1 v1 v2 v0 v3 v4 v5 1 7 5 2 4 2 3 6 1 Vértices afectados: v l(v) P athT o(v) oferta v0 0 ² v1 1 v0 v2 8 v0v1 v3 ∞ ² v4 3 v0v1 v5 6 v0v1 v1 sale. ´

(38)

Ejemplo de Paseos Cortos: v4 v1 v2 v0 v3 v4 v5 1 2 1 7 5 4 2 3 6

Vértice con mínimo índice

v4: afectación posible a los

adyacentes v l(v) P athT o(v) oferta de v4 v0 0 ² v1 1 v0 v2 8 v0v1 v3 ∞ ² v4 3 v0v1 v5 6 v0v1 4

(39)

Ejemplo de Paseos Cortos: v4 v1 v2 v0 v3 v4 v5 1 2 1 7 5 4 2 3 6 Vértices afectados: v l(v) P athT o(v) oferta v0 0 ² v1 1 v0 v2 8 v0v1 v3 ∞ ² v4 3 v0v1 v5 4 v0v1v4 ´

(40)

Ejemplo de Paseos Cortos: v4 v1 v2 v0 v3 v4 v5 1 2 1 7 5 4 2 3 6 Vértices afectados: v l(v) P athT o(v) oferta v0 0 ² v1 1 v0 v2 8 v0v1 v3 ∞ ² v4 3 v0v1 v5 4 v0v1v4 v4 sale.

(41)

Ejemplo de Paseos Cortos: v5 v1 v2 v0 v3 v4 v5 1 2 1 3 6 7 5 4 2

Vértice con mínimo índice

v5: afectación posible a los

adyacentes v l(v) P athT o(v) oferta de v5 v0 0 ² v1 1 v0 v2 8 v0v1 7 v3 ∞ ² 10 v4 3 v0v1 v5 4 v0v1v4 ´

(42)

Ejemplo de Paseos Cortos: v5 v1 v2 v0 v3 v4 v5 1 2 1 3 6 7 5 4 2 Vértices afectados: v l(v) P athT o(v) oferta v0 0 ² v1 1 v0 v2 7 v0v1v4v5 v3 10 v0v1v4v5 v4 3 v0v1 v5 4 v0v1v4

(43)

Ejemplo de Paseos Cortos: v5 v1 v2 v0 v3 v4 v5 1 2 1 3 6 7 5 4 2 Vértices afectados: v l(v) P athT o(v) oferta v0 0 ² v1 1 v0 v2 7 v0v1v4v5 v3 10 v0v1v4v5 v4 3 v0v1 v5 4 v0v1v4 v5 sale. ´

(44)

Ejemplo de Paseos Cortos: v2 v1 v2 v0 v3 v4 v5 1 2 1 3 2 6 7 5 4

Vértice con mínimo índice

v2: afectación posible a los

adyacentes v l(v) P athT o(v) oferta de v2 v0 0 ² v1 1 v0 v2 7 v0v1v4v5 v3 10 v0v1v4v5 9 v4 3 v0v1 v5 4 v0v1v4

(45)

Ejemplo de Paseos Cortos: v2 v1 v2 v0 v3 v4 v5 1 2 1 3 2 6 7 5 4 Vértices afectados: v l(v) P athT o(v) oferta v0 0 ² v1 1 v0 v2 7 v0v1v4v5 v3 9 v0v1v4v5v2 v4 3 v0v1 v5 4 v0v1v4 ´

(46)

Ejemplo de Paseos Cortos: v2 v1 v2 v0 v3 v4 v5 1 2 1 3 2 6 7 5 4 Vértices afectados: v l(v) P athT o(v) oferta v0 0 ² v1 1 v0 v2 7 v0v1v4v5 v3 9 v0v1v4v5v2 v4 3 v0v1 v5 4 v0v1v4 v2 sale.

(47)

Ejemplo de Paseos Cortos: Conclusión

Caminos más cortos desde v0:

v1 v2 v0 v3 v4 v5 1 2 1 3 2 6 7 5 4 v l(v) P athT o(v) v0 0 ² v1 1 v0 v2 7 v0v1v4v5 v3 9 v0v1v4v5v2 v4 3 v0v1 v5 4 v0v1v4 ´

Referencias

Documento similar