analisis y diseño de algoritmos tema: grafos andrés arcia universidad de los andes facultad de...

36
Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Upload: oscar-valeriano

Post on 23-Jan-2016

219 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Analisis y Diseño de AlgoritmosTema: Grafos

Andrés Arcia

Universidad de Los AndesFacultad de Ingeniería

Postgrado en Computación

Page 2: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Arboles de Expansión Mínima

• Usos de los AEM:– Circuiteria electrónica: se desea unir n pines con n-1

cables.– Cableado de la compañía telefónica, cable, etc.– Identificación de grupos en un conjunto de puntos.– Crear grafos esparcidos que dan bastante

información del grafo original.

• Soluciones posibles: O(ElgV)– Algoritmo de Kruskal.– Algoritmo de Prim.

heaps fibonacci ^ (|V| << |E|) => O(E + VlgV)

Page 3: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Definición

• Un árbol de expansión mínima de un grafo con pesos es el árbol de expansión cuyos arcos suman el peso mínimo.

Page 4: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

¿Cómo funciona?

• Estrategia:– Dado un grafo no dirigido, w : E -> R.– MST = Σ 1 arco seguro por vez.– Existe A AEM.

• ¿(u,v) A? si, entonces es seguro.

Page 5: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Algoritmo

1 A = Ф

2 while A does not form a MST

3 do find an edge (u,v) safe for A

4 A<-A U {(u,v)}

5 return A

Page 6: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Arcos Seguros

• Corte: (S, V-S) es una partición de V.

Blancos: parte del MST.Negros: aún por ser considerados.

Debe encontrarse un Arco Liviano del corte para incluirlo en la solución.

Respeta A

corte

A

Page 7: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Noción de Corte

Teorema:

Sea G = (V,E) un grafo conexo, con

w : ER. Sea A un subgrafo de E que se incluye en algún MST G. Sea (S, V-S) cualquier corte de G que respeta A y sea (u,v) un Arco Ligero que cruza (S,V-S). Luego (u,v) es seguro para A.

Page 8: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Noción de Corte

Prueba:Sea T un MST y A un subgrafo de T. Sea (u,v) T.

Deberiamos construir T´ que es el MST buscado.Se plantea T y un corte que respeta A. Hay un camino p de

u a v. Dado que u y v son opuestos, hay al menos otro arco (x,y) T que cruza el corte. Al cambiar (x,y) por (u,v) tenemos T’ que es un MST.

w(T’) = w(T) – w(x,y) + w(u,v)w(T’) <= w(T)Pero se supone que T es MST, por lo que w(T)<=w(T’), se

trata entonces del mismo arbol. T’ es un MST.A T’, pues A T y (x,y) A => A U {(u,v)} T’. Luego, como T’=T es un MST y (u,v) es seguro.

Page 9: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Análisis

• El loop 2-4 se ejecuta |V|-1 veces => O(V).

Tarea:

Hacer 24.1-4 y 24.1-7.

Page 10: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Algoritmo de Kruskal

KRUSKAL(G,w)1 A Ф2 for each vertex v V[G]3 do MAKE-SET(V)4 sort the edges E by nondecreasing weight w.5 for each edge (u,v) E in order6 do if FIND-SET(u) ≠FIND-SET(v)7 then AA U {(u,v)}8 UNION(u,v)

O(V)

O(ElgE)

O(ElgE)

Total: O(ElgE)

Page 11: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Ejemplo

a

b

h

i

c

g

d

f

e4

7

8

11

7

2

8

4

6

1 2

14

9

10

Page 12: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Algoritmo de Prim

PRIM(G,w,r)1 Q V[G]2 for each u Q3 do key[u] 4 key[r] 05 [r] NIL6 while Q≠Ф7 do EXTRACT-MIN(Q) 8 for each v Adj[u]9 do if v Q and w(u,v) < key[v]10 then [v]u11 key[v] w(u,v) O(lgV)

O(ElgV)

O(lgV)

O(V)

O(VlgV)

Total: O(Vlg V + Elg V) = O(E lg V)

heap binario

Page 13: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Ejemplo

• Para un ejemplo de implantación vea: http://students.ceid.upatras.gr/~papagel/project/adjoin.htm

Page 14: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Problema del Camino más Corto

Definición:

Dado un grafo dirigido G=(V,E) con una función de pesos w: ER, el peso de un camino p=<v0, v1, …, vk> es la suma de los pesos de los arcos:

w(p) = Σ(i=1, k, w(vi-1,vi))

y el camino mínimo sera:

(u,v) = min {w(p): u ~> v}, si hay camino de u a v, en otro caso será .

Page 15: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Variantes del Problema

Se requiere averiguar el camino más corto desde un nodo s V a cada uno v V-S.

• Problema de todos los caminos cortos a un destino simple (común). Solución: invertir la salida.

• Problema del camino más corto entre un par de nodos.

• Problema del camino más corto de todos los pares. Solución: Ejecutar el algoritmo para todos los pares desde cada nodo.

Page 16: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Arcos Negativos

Los caminos más cortos están bien definidos ssi no existen ciclos negativos. De otra manera no estará bien definido, pues cada vez que demos vuelta a ciclo el camino será más corto.

a b

-4

3

(a,b) = -

Page 17: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Caminos Cortos y Relajación

Para hacer más entendibles los algoritmos de caminos más cortos, es esencial comprender la técnica de relajación.

La Relajación es el método mediante el cual se hace decrecer la cota superior en el peso actual del camino más corto hasta que iguale a la cota del camino más corto.

Page 18: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

RelajaciónINITIALIZATION(G,s)1 for each vertex v V[G]2 do d[v] 3 [v] NIL4 d[s] 0

Relajar es mejorar la distancia de un nodo a otro. Dado (u,v) se pregunta si el camino calculado hasta ahora hasta v es mejor que el camino hasta u y luego w(u,v).

RELAX(u,v,w)1 if d[v] > d[u] + w(u,v)2 then d[v] d[u] + w(u,v)3 [v] u

5 9

5 7

5 6

5 6

2

2

2

2

Page 19: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Propiedades de la Relajación

• Una vez relajado (u,v), d[v] d[u] + w(u,v)

• Luego de la inicialización d[v] (s,v) vV.

• Si no hay camino entre sV y vV, luego de inicializar el grafo, d[v]=(s,v)=.

• Dado un camino s~>uv es un camino corto (s,v) si, d[u]=(s,u) antes de la llamada a RELAX y luego sera d[v]=(s,v).

Page 20: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Algoritmo de Dijkstra

Resuelve el camino mínimo para aquellos grafos dirigidos, con peso no negativo. Entonces se asume w(u,v)0 (u,v) E.

Al final del algoritmo se tiene que para todos los vértices d[v] = (s,v).

Page 21: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Algoritmo de Dijkstra

DIJKSTRA (G,w,s)1 INITIALIZE(G,s)2 SФ3 QV[G]4 while Q≠Ф5 do u EXTRACT-MIN(Q)6 S S U {u}7 for each vertex v Adj[u]8 do RELAX(u,v,w)

Page 22: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Ejemplo

10

1

5

2

2 39

7

4 6s

u v

x y

Page 23: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Análisis

Si EXTRACT-MIN es un arreglo lineal O(V). Como hay O(V) operaciones de ese tipo O(V2).Hay (E) operaciones con arcos.TOTAL: O(V2 + E) = O(V2).

Si utilizamos un heap binario, la operación DECREASE-KEY en RELAX y EXTRACT-MIN sería O(lgV).

TOTAL: O((V+E)lgV) = O(ElgV), si todos los nodos son alcanzables desde el origen.

Se puede mejorar aún más si Q se implanta con heaps de fibonacci. El costo amortizado de los |V| EXTRACT-MIN es O(lgV) y los |E| DECREASE-KEY serán O(1).

Page 24: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Algoritmo de Bellman - Ford

Resuelve caminos cortos desde un nodo en el caso general, aún con pesos negativos.

BELLMAN-FORD(G,w,s)1 INITIALIZE(G,s)2 for i1 to |V[G]| - 13 do for each edge (u,v) E[G]4 do RELAX(u,v,w)5 for each vertex (u,v) E[G]6 do if d[v] > d[u] + w(u,v)7 then return false8 return true

(V)

(V)

(E)

TOTAL: (VE)

Page 25: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Ejemplo

6-2

7

9

8-3

2

-4

7z

u v

x y

5

Orden de relajación: (u,v), (u,x), (u,y), (v,u), (x,v), (x,y), (y,v), (y,z), (z,u), (z,x).

0

Page 26: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

FuncionamientoLema:

Sea G(V,E) un grafo con peso w: ER, dirigido. Sea sV el vertice origen y sea s~>uv un camino corto en G para algun par de vertices u, v V. Suponga que G se inicia con INITIALIZE(G,s) y luego existe una secuencia de pasos de relajación RELAX(u,v,w). Si d[u]=(s,u) en cualquier momento previo de la llamada con (u,v), entonces d[v]= (s,v) todo el tiempo despues de la llamada.

Prueba:Sabiendo que d[u]= (s,u) en algún momento antes de relajar (u,v), y que esto se mantiene al dejar el arco (u,v):d[v] d[u] + w(u,v) = (s,u) + w(u,v) = (s,v)

Page 27: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

FuncionamientoLema:

Sea G(V,E) un grafo con peso y dirigido con origen s y función peso w:ER. Asuma que G no contiene ciclos negativos alcanzables desde s. Al terminar BELLMAN-FORD, se tiene d[v]= (s,v) vV y s~>v.

Prueba:Por inducción. Sea v un nodo alcanzable desde s, y p=<v0, v1, …, vk> un camino corto desde s a v, donde v0=s y vk=v. Como hay |V|-1 pasadas es suficiente probar por inducción.Base: d[v0]= (s,v0)=0, y se mantiene…Paso inductivo: d[vi-1]= (s,vi-1) luego de la (i-1)esima pasada, el arco (vi-1,vi) se relaja en la i-esima pasada. Por el lema anterior se concluye que d[vi]= (s,vi) y se mantiene…

Page 28: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Caminos Cortos en DAGs.

Si se relajan los arcos de un DAG con peso G(V,E) y de acuerdo con su orden topológico, se puede computar los caminos más cortos en (V+E). En los DAGs los caminos cortos siempre estan bien definidos pues no hay ciclos.

Page 29: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Caminos Cortos en DAGs.

DAG-SHORTEST-PATHS

1 Topologically sort the vertex of G

2 INITIALIZE(G,s)

3 for each vertex u taken in topollogically sorted order

4 do RELAX(u,v,w)

(V+E)

(E)

TOTAL: (V+E)

Page 30: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Ejemplo

0

r s tu

vx

5 2 7 -1 -2

6 1

3 42

Page 31: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Funcionamiento

Teorema:Si un grafo G=(V,E) tiene como origen s y no hay ciclos, al terminar el algoritmo DAG-SHORTEST-PATHS, d[v]=(s,v) v V y G es un árbol de caminos más cortos.

Prueba:1) d[v] = (s,v) v V. Si (s~>v) d[v]=(s,v)=.2) Suponga s~>v y el camino es p=<v0, v1, …, vk>, v0=s y vk=v. Como esta en orden topológico, p=(v0,v1), (v1,v2)…(vk-1,vk), y por inducción se puede demostrar que d[vi]=(s,vi) y al finalizar G es un árbol de caminos más cortos.

Page 32: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Restricciones Diferenciales y Caminos Cortos

Programación Lineal:En el problema general de la programación lineal se tiene una matriz mxn llamada A, un vector b de tamaño m y un vector x de n elementos que maximiza la función objetivo (i=1, n, cixi) dado las m restricciones de la forma Axb.

Page 33: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Restricciones Diferenciales

En la matriz, cada fila contiene 1, -1 y el resto 0.

Se plantea entonces: xi-xJbk.

donde: 1i,jn y 1km

Ejemplo:

1 0 -1

1 -1 0

-1 1 0

x1

x2

x3

4

1

-2

Page 34: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Funcionamiento

Lema:

Sea x=(x1, x2, …, xk) una solución de un sistema Axb y sea d una constante cualquiera. Luego x=(x1+d, x2+d, …, xk+d) tambien es una solución.

Prueba:

(xj+d) – (xi+d) = xj-xi

Page 35: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Grafos de Restricciones

Desde el punto de vista de los grafos, A puede ser interpretada como una matriz de incidencia dada por un grafo de n nodos y m arcos. Cada nodo vi corresponde a una de las n variables desconocidas. Cada arco corresponde a una de las m desigualdades que implica a dos variables.

V = {v0, v1, …, vn}

E = {(vi,vj): xj-xibk es una restricción} U {(v0,v1), (v0,v2),…,(v0,vn)}

w(vi,vj) = bk

w(v0,vi) = 0

Page 36: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Análisis

Observese que en la solución xi0.La solución será:x=((v0,v1), (v0,v1), …, (v0,vn)), si G no tiene

ciclos negativos, de lo contrario la solución no existe.

Esto sugiere usar BELLMAN-FORD. Dado que hay n+1 nodos y n+m arcos, se puede

resolver el sistema en O((n+1)(n+m)) = O(n2+nm).

Tarea:Hacer 25.5-1, 25.5-2 y 25-2.

¿Por qué funciona?

Porque se trata de distancias mínimas y estas cumplen una restricción de cota.