algoritmos y estructura de datos iii - dc.uba.ar · pdf fileproblema 11.2111.21 (a)11.21...

Post on 06-Feb-2018

220 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Práctica 11 - Ejercicios 11.21 / 11.22Algoritmos y Estructura de Datos III

Facultad de Ciencias Exactas y Naturales,Universidad de Buenos Aires

26 de Junio de 2013

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Enunciado

Problema 11.21Sea G un grafo conexo no orientado.(a) Mostrar que existen k caminos que no tienen aristas en

común entre s y t si y sólo si cualquier corte que separe sde t tiene al menos k arcos.

(b) Mostrar que existen k caminos sin vértices en común si ysólo si cualquier conjunto de vértices que desconecta s det tiene al menos k vértices.

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Repaso

1 Sea S ⊂ V un conjunto de vértices tal que: s ∈ S, t ∈ T , ysea T = V \ S:Los arcos del corte (S,T ) son las aristas que tienen unvértice en S y otro T

2 El problema de flujo se define sobre una red N = (V ,E)con s fuente, t sumidero y c : E → R+ capacidad de lasaristas

3 El flujo es una función f : E → R+ que nunca sobrepasa lacapacidad y cumple ley de conservación (todo lo queentra, sale, excepto para s,t)

4 El teorema MaximoFlujo-MinimoCorte nos asegura que elmáximo flujo de una red es el corte de capacidad mínima

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Solución

11.21 (a)Sea G un grafo conexo no orientado. Mostrar que existen kcaminos que no tienen aristas en común entre s y t si y sólo sicualquier corte que separe s de t tiene al menos k arcos.

Primero mostramos que el caso G no orientado puede serreducido a un caso con G′ orientadoResolvemos en G′ mostrando que esa solución nos sirvepara G

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Solución

Hacemos una transformación directa:V (G′) = V (G)

Si (u, v) ∈ E(G)⇒ (u, v), (v ,u) ∈ E(G′)

s

1

2

63

t5

4

s

1

2

63

t5

4

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Solución

Los caminos (disjuntos en aristas) en G pueden ser mapeadosa G′

s

1

2

63

t5

4

s

1

2

63

t5

4

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Solución

1 Queremos mapear conjuntos de caminos (disjuntos enaristas) de G′ a G:

2 Qué ocurre con dos caminos (disjuntos en aristas) queusan (u, v) y (v ,u) en G′?

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Solución

Observamos que cada par de caminos que usen ambas aristasse pueden reacomodar de manera sencilla

s

1

2

63

t5

4(1)

s

1

2

63

t5

4

ELIMINAR

(2)

s

1

2

63

t5

4

ELIMINAR

(3)

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Solución

11.21 (a)Mostrar que existen k caminos que no tienen aristas en comúnentre s y t si y sólo si cualquier corte que separe s de t tiene almenos k arcos.

1 Equivalencia entre cortes2 Cualquier corte en G nos separa el grafo en dos conjuntos

S y T3 Si cortamos las aristas mapeadas de G a G′ tales que

orientan de S a T , tendremos un corte del mismo tamaño

s

1

2

63

t5

4S

s

1

2

63

t5

4S

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Solución

LemaEl flujo máximo en un grafo dirigido H con capacidad 1 entodas sus aristas es igual a la máxima cantidad de caminosdisjuntos en aristas

Sea f un flujo máximo en H, |f | su valor y k la cantidad decaminos disjuntos en aristas:k ≤ |f |:

1 Sean k caminos (disjuntos en aristas): P1, . . . ,Pk2 Asignar f (e) = 1 si e ∈ Pi , f (e) = 0 sino3 Es facil verificar que esto es un flujo válido de valor k

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Solución

Sea f un flujo en H, |f | su valor, y k la máxima cantidad decaminos disjuntos en aristas:k ≥ |f |: Inducción en cantidad de aristas tal que f (e) = 1:

1 Si |f | ≤ 1 trivial, sino atravesar H desde s usando aristastal que f (e) = 1 (Por conservación podemos hacerlo).

2 Si encontramos camino C =< s, . . . , t >: Ponemosf (e) = 0∀e ∈ C. Ahora el flujo vale |f | − 1 y tenemos menosaristas con flujo 1, aplicamos HI: k ≥ |f | − 1 caminosdisjuntos en aristas. Agregando el nuevo camino con flujo 1en cada arista, tenemos |f | caminos disjuntos en aristas

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Solución

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Solución

Sea f la función de flujo, |f | el máximo flujo de H, y k lacantidad de caminos disjuntos en aristas:k ≥ |f |: Inducción en cantidad de aristas tal que f (e) = 1:

1 Si |f | ≤ 1 trivial, sino atravesar H desde s usando aristastal que f (e) = 1 (Por conservación podemos hacerlo).

2 Si encontramos camino C =< s, . . . , t >: Ponemosf (e) = 0∀e ∈ C. Ahora el flujo vale |f | − 1 y tenemos menosaristas con flujo 1, aplicamos HI: tenemos |f | − 1 caminosdisjuntos en aristas. Agregando el nuevo camino con flujo 1en cada arista, tenemos |f | caminos disjuntos en aristas

3 Si encontramos un ciclo C′ en el recorrido: Ponemosf (e) = 0∀e ∈ C′. El valor del flujo |f | no cambia.

4 Hay menos aristas con flujo 1, podemos aplicar HI:Tenemos |f | caminos disjuntos en aristas

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

11.21 (a)Mostrar que existen k caminos que no tienen aristas en comúnentre s y t si y sólo si cualquier corte que separe s de t tiene almenos k arcos.

1 ⇒) Si existen k caminos sin aristas en común entoncestenemos un flujo de capacidad k

2 Si tenemos un flujo de capacidad k, entonces cualquiercorte tiene al menos capacidad k.

1 ⇐)Si cualquier corte que separa s de t tiene al menos karcos, en particular el corte mínimo tiene al menos k arcos

2 Si el corte mínimo tiene k arcos, luego el flujo máximotiene valor k (grafo de capacidad unitaria)

3 Si tenemos un flujo de valor k, luego tenemos k caminosdisjuntos en aristas

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Solución

11.21 (b)Mostrar que existen k caminos sin vértices en común si y sólosi cualquier conjunto de vértices que desconecta s de t tiene almenos k vértices.

Usamos la misma idea que antes: Transformar a G′

dirigido y resolver ahi:V (G′) = V (G)Si (u, v) ∈ E(G)⇒ (u, v), (v ,u) ∈ E(G′)

Caminos disjuntos en vértices en G y G′ son trivialmenteiguales

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Solución

Vamos a reusar el resultado anteriorConstruimos un nuevo grafo H a partir de G′, cada vértice(excepto s, t) se convierte en una arista:

1 ∀v ∈ V (G′) : vin, vout ∈ V (H) ∧ (vin, vout) ∈ E(H)2 ∀(u, v) ∈ E(G′) : (uout , vin) ∈ E(H)

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Solución

s

1

2

43

t

s

43

t

1in 1out

2in 2out

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Solución

Remover (vin, vout) ∈ H tiene el mismo efecto que removerv ∈ G′

El camino < u, v ,w >∈ G′ esta representado por< uout , vin, vout ,win >∈ H.Asignamos en H capacidad 1 a todas las aristasVimos anteriormente que si tenemos flujo |f|=k tenemos kcaminos disjuntos en aristas en H, y hay un conjunto de karistas que separan s y t (corte).Un camino en H debe tener la forma:< s, v0in, v0out , v1in, v1out , . . . , vlin, vlout , t >, quecorresponde al siguiente camino en G′:< s, v0, v1, . . . , vl , t >Como cada camino es disjunto en aristas, cada arista esutilizada una vez en H ⇒ en el camino correspondiente aG′ cada vértice corresponde a un sólo camino. Enconsecuencia hay k caminos disjuntos (en vértices) en G′

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Enunciado

Problema 11.22(a) Cómo se puede calcular el número de caminos disjuntos

en las aristas que se pueden trazar entre s y t, para s y tvértices dados?

(b) idem a. para caminos sin vértices en común

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Enunciado

Problema 11.22 (a)Ya vimos que el máximo flujo es igual a la máximacantidad de caminos disjuntos en aristas en el grafomodificado (dirigido con capacidad 1)Puedo aplicar Ford-FulkersonLa complejidad es O(|E | · f ), donde f es el máximo flujo. Elmáximo flujo puede acotarse por n.

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Enunciado

Problema 11.22 (b)Ya vimos que podemos transformar el problema decaminos disjuntos en vértices a caminos disjuntos enaristasPodemos hacer la transformación del grafo, y aplicar flujo.Las transformaciones se pueden hacer en O(|V |+ |E |) porlo que la complejidad depende del algoritmo de flujo.

Práctica 11 - Ejercicios 11.21 / 11.22

Problema 11.21 11.21 (a) 11.21 (b) Problema 11.22 FIN

Fin

DUDAS

Práctica 11 - Ejercicios 11.21 / 11.22

top related