informacionteorico.pdf

21
Ciencia de la computación y optimización en redes Problema de árbol generador mínimo

Upload: piere-andre

Post on 22-Jan-2016

2 views

Category:

Documents


0 download

DESCRIPTION

Este es un material de un curso de información teórica. Les ayuda a saber mas sobre algunos algoritmos matemáticos.

TRANSCRIPT

Page 1: InformacionTeorico.pdf

Ciencia de la computación

y optimización en redes

Problema de árbol generador mínimo

Page 2: InformacionTeorico.pdf

Árbol generador

Page 3: InformacionTeorico.pdf

Dado un grafo no dirigido G, el árbol generador de G es un subgrafo el cual es un árbol con todos los nodos conectados.

Ejemplo:

a

b

c

d

e

Los árboles generadores son:

a

b

c

d

e

a

b

c

d

e

a

b

c

d

e

Page 4: InformacionTeorico.pdf

Teorema: Todo grafo conectado tiene un árbol generador.

Un grafo con peso es un grafo, en el cual cada arco tiene un peso.

Grafo con peso:

Los árboles generadores son:

a

b

c

d

e

10

7

9

32

23

a

b

c

d

e

7

9

32

23

a

b

c

d

e

10

9

32

23

a

b

c

d

e

10

7 32

23

Page 5: InformacionTeorico.pdf

Dentro de todos los árboles generadores, un árbol generador mínimo es aquel de peso mínimo.

Árbol generador mínimo

Problema:

Dado a un grafo no dirigido G = (N, A) con pesos, diseñar un algoritmo que tiene como salida un árbol generador mínimo de G.

Page 6: InformacionTeorico.pdf

Ejemplo:

Los árboles generadores son:

a

b

c

d

e

10

7

9

32

23

a

b

c

d

e

7

9

32

23

Peso: 71

a

b

c

d

e

10

9

32

23

Peso: 74

a

b

c

d

e

10

7 32

23

Peso: 72

Page 7: InformacionTeorico.pdf

Modelos para árboles generadores mínimos

Sea G = (N, A, W) un grafo conectado no dirigido con peso,

Donde: n = |N| conjunto de nodos.

m = |A| conjunto de arcos.

wij W son los pesos o costo de cada arco y es de valor positivo.

Consideraciones:

Índices:

i, j: Nodos desde 1, hasta n.

Page 8: InformacionTeorico.pdf

Parámetros:

(1) N = |N|: Cantidad de nodos de la red.

(2) M = |A|: Cantidad de arcos de la red.

(3) wij W: Peso de cada arco (i,j).

(4) cij C: costo del arco (i,j).

(5) ui : Capacidad del arco (i,j).

(6) dij D: Demora en el arco (i,j).

(7) di : Grado límite del nodo i.

Variable de decisión:

(1) xij : Variable binaria, donde 1 si (i , j) A es seleccionado. Caso contrario 0.

(2) yij : Variable de grado valor en el arco (i,j).

Page 9: InformacionTeorico.pdf

Modelo de árbol generador mínimo

Sea MS el conjunto de arcos del subgrafo de G inducido por el conjunto de nodos S, es decir el conjunto de arcos con puntos finales en S.

El modelo de programación lineal entera esta dado por:

𝑀𝑖𝑛 𝑍 = 𝑤𝑖𝑗𝑥𝑖𝑗(𝑖,𝑗)∈𝐴

s.a.

𝑥𝑖𝑗(𝑖,𝑗)∈𝐴

= 𝑛 − 1

𝑥𝑖𝑗 ≤ 𝑆(𝑖,𝑗)∈𝑀𝑆− 1

𝑥𝑖𝑗 ∈ 0,1

Page 10: InformacionTeorico.pdf

1

2

4

5

8

9

11

12

3 7

6 10

Ejemplo (*):

Page 11: InformacionTeorico.pdf
Page 12: InformacionTeorico.pdf
Page 13: InformacionTeorico.pdf

1

2

4

5

8

9

11

12

3 7

6 10

Costo total: 272

Page 14: InformacionTeorico.pdf

Modelo de árbol generador mínimo capacitado

Es una extensión del modelo anterior.

𝑀𝑖𝑛 𝑍 = 𝑐𝑖𝑗𝑥𝑖𝑗(𝑖,𝑗)∈𝐴

s.a.

𝑥𝑖𝑗(𝑖,𝑗)∈𝐴

= 𝑛 − 1

𝑥𝑖𝑗 ≤ 𝑆(𝑖,𝑗)∈𝑀𝑆− 1

𝑤𝑖𝑗𝑥𝑖𝑗 ≤ 𝑢𝑖 , ∀𝑖

𝑛

𝑗=1

𝑥𝑖𝑗 ∈ 0,1 , ∀ 𝑖, 𝑗 ∈ 𝐴

Page 15: InformacionTeorico.pdf

Modelo de árbol generador mínimo de grado restringido

Dada una red, el problema es hallar un árbol generador mínimo, donde los limites superiores de la cantidad de arcos para un nodo se satisfacen.

Este problema es NP-Difícil.

𝑀𝑖𝑛 𝑍 = 𝑤𝑖𝑗𝑥𝑖𝑗(𝑖,𝑗)∈𝐴

s.a.

𝑥𝑖𝑗(𝑖,𝑗)∈𝐴

= 𝑛 − 1

𝑥𝑖𝑗 ≤ 𝑆(𝑖,𝑗)∈𝑀𝑆− 1

𝑦𝑖𝑗 ≤ 𝑑𝑖 , ∀𝑖

𝑛

𝑗=1

𝑥𝑖𝑗 , 𝑦𝑖𝑗 ∈ 0,1 , ∀ 𝑖, 𝑗 ∈ 𝐴

Page 16: InformacionTeorico.pdf

Algoritmos para árbol generador mínimo

Instancia: Un grafo no dirigido G = (N, A).

Una función peso c: A(G) R.

Hallar: Hallar el árbol generador en G de peso mínimo, o decidir que G no es conectado.

Problema:

Page 17: InformacionTeorico.pdf

Teorema 1: Sea (G, c) una instancia del problema del árbol generador mínimo, sea además T un árbol generador en G. Entonces las siguientes afirmaciones son equivalentes:

a) T es óptimo.

b) Para cada e = {x,y} A(G) – A(T), no hay arco en el camino xy en T que tenga mayor costo que e.

c) Para cada e A(T), e es un arco de costo mínimo de (V(C)), donde C es una componente conectada de T – e.

En 1956 Kruskal propuso un algoritmo voraz (greedy) para hallar el árbol generador mínimo.

Page 18: InformacionTeorico.pdf

Entrada: Grafo no dirigido conectado G = (N,A), peso c: A(G) R.

Salida : Árbol generador T de peso mínimo.

1) Ordenar los arcos tal que c(e1) ≤ c(e2) ≤ . . . ≤ c(em).

2) T := (V(G), ).

3) PARA (i:= 1:m)

4) SI (T + ei no contiene circuito)

5) T := T + ei .

FIN SI

FIN PARA

Teorema 2: El algoritmo de Kruskal trabaja correctamente.

Algoritmo de Kruskal

Page 19: InformacionTeorico.pdf

En el algoritmo de Kruskal:

Los arcos pueden ser ordenados : O(m log m).

La prueba de un circuito en el grafo de n nodos: O(n).

Como esto se repite m veces, entonces la complejidad total es:

O(m log m) + m*O(n) = O(m log m) + O(mn)

= O(max {m log m, mn})

= O(mn)

donde n = |N(G)| ;

m = |A(G)|.

Teorema 3: El algoritmo de Kruskal puede ser implementado en un tiempo de O(m log n).

Page 20: InformacionTeorico.pdf

Entrada: Grafo no dirigido conectado G = (N,A), peso c: A(G) R.

Salida : Árbol generador T de peso mínimo.

1) Escoger un nodo v N(G).

2) T:= ({v}, ).

3) MIENTRAS ( N(T) ≠ N(G) )

4) Escoger un arco e G (N(T)) de peso mínimo

5) T := T + e .

FIN MIENTRAS

Teorema: El algoritmo de Prim trabaja correctamente, siendo su tiempo de ejecución O(n2).

Algoritmo de Prim

Corolario: El algoritmo de Prim implementado con un heap de Fibonacci soluciona el problema del árbol generador mínimo en un tiempo O(m + n log n).

Page 21: InformacionTeorico.pdf

Ejercicio: Fecha de entrega: 02/11/12

1) Investigar aplicaciones del problema de árbol generador mínimo (entrega impreso).

2) Implementar el modelo de árbol generador mínimo capacitado y el modelo de árbol generador mínimo de grado restringido, usando el lenguaje algebraico GLPK Lab. Usar los datos de la red del ejemplo (*)(entrega en laboratorio).

3) Implementar el algoritmo de Kruskal o de Prim, usando los datos de la red ejemplo (*). Comparar la complejidad computacional del algoritmo elegido con los resultados obtenidos en su implementación, es decir el tiempo de procesamiento (entrega en laboratorio).