Redes de Flujo: Ford Fulkerson, Grafo Bipartito y Matching, Diseño de Encuestas, Selección de Proyectos Flashcards

1
Q

Explique cómo se pueden representar los problemas de Redes de Flujo

A

Los problemas de redes de flujo se pueden representar como grafos donde:

  • Los ejes transportan algún tipo de flujo
  • Los vértices actúan como conmutador de tráfico entre los diferentes ejes
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Qué es la capacidad?

A

La capacidad es la cantidad máxima que un eje puede transportar.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Qué es la fuente?

A

La fuente es el vértice que genera tráfico saliente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Qué es el sumidero?

A

El sumidero es el vértice que absorbe tráfico entrante.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Qué es el flujo?

A

El flujo es la cantidad transportada por un eje.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Explique la idea de un problema de Redes de Flujo. ¿A qué se le llama capacidad? ¿Qué tipos de nodos tiene el grafo resultante?

A

Dada una red de flujo, vamos a querer encontrar el flujo de máximo valor posible.

Sea G=(V,E) un grafo dirigido, para todo eje de E vamos a llamar Ce > 0 a su capacidad. Ce es un valor entero.

El grafo tiene un único vértice fuente s y un único vértice sumidero t. El resto son vértices internos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Qué es el flujo s-t?

A

El flujo es una función f que mapea a cada eje e a un valor real no negativo.

Se debe satisfacer que:
- Para cada eje, el flujo es mayor o igual a cero, y menor o igual a la capacidad: 0 <= f(e) <= Ce.
- Para cada eje del grafo, excluyendo a s y t, la cantidad de flujo generada en la fuente es igual a la cantidad de flujo que sale por el sumidero (flujo, no capacidad).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Cómo se realiza el corte del grafo?

A

Corte del grafo: se dividen los nodos del grafo en dos sets: A y B. Se dice que s pertenece a A y t pertenece a B.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Ford Fulkerson: Defina “grafo residual”

A

Dada una red de flujo G y un flujo f en G, definimos el grafo residual Gf a:

  • Los mismos vértices de G
  • Ejes hacia adelante: para cada eje en el que fe < Ce. Lo incluiremos con una capacidad residual Ce-fe.
  • Ejes hacia atrás: para cada eje e = (u,v) en el que fe > 0, incluimos e'=(v,u) con capacidad fe.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Ford Fulkerson: Defina “cuello de botella”.

A

Sea P un camino simple s-t en Gf en donde P no visita más de una vez al mismo vértice.
Definimos cuello de botella a la capacidad residual mínima de cualquier eje de P con respecto al flujo f.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Ford Fulkerson: Defina “camino de aumento”.

A

Llamaremos a P como “camino de aumento”. Podemos incrementar el cuello de botella al flujo de P.

aumento(f,P):
	Sea b = cuelloDeBotella(P,f)

	Para cada eje e=(u,v) in P:
		Si e = (u,v) eje hacia adelante:
			f(e) += b en G

		Sino:
			e' = (v,u)
			f(e') -= b en G

	retornar f
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Ford Fulkerson: Explique el pseudocódigo y la complejidad.

A
f(e) = 0 para todo eje e en G

Mientras haya un camino s-t en Gf:
         Sea P un camino s-t simple en Gf
         f' = aumento(f,P)

         Actualizamos f para ser f'
         Actualizamos Gf para ser Gf'

Retornar f

Complejidad temporal: O(|E| * F), siendo |E| la cantidad de aristas y F el flujo máximo (la suma de todas las capacidades que salen de la fuente).
Además: En F iteraciones como límite, terminará la ejecución.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Resolver:

Ford-Fulkerson

Nodo_i Nodo_f Capacity
S A 10
S C 10
A B 4
A C 2
A D 8
B T 10
C D 9
D B 6
D T 10

A

Flujo máximo: 19

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Variante Ford Fulkerson: Explique la variante de circulación con demandas

A

La diferencia en este caso es que cada nodo puede ser productor o consumidor de flujo.
Un nodo que no es ni productor ni consumidor, se le llama conmutador.

Sea una red de flujo G=(V,E):
Cada vector v tiene una demanda dv entera

  • Si dv > 0, entonces v demanda dv de flujo (es un sumidero).
  • Si dv < 0, entonces v produce dv de flujo (es una fuente).
  • Si dv = 0, entonces v es un vertice interno.

El problema requiere determinar si existe una circulación que cumpla con las condiciones de demanda.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Ford-Fulkerson, circulación con demandas: Definir “condición de demanda”.

A

Se define una condición de demanda como: para cada vector v: f_in(v) - f_out(v) = dv.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Ford-Fulkerson, circulación con demandas: Explique la reducción del problema a uno de flujo máximo

A

Lo que vamos a hacer es crear una “super fuente” y un “super sumidero”. Los vamos a llamar S* y T*.
Entonces:

  • Para cada vector con dv > 0, creamos el eje e=(v,T*) con capacidad C(e) = dv.
  • Para cada vector con dv < 0, creamos el eje e=(S*,v) con capacidad C(e) = -dv.

Básicamente, creamos una fuente y a cada vértice con demanda negativa (productor), lo enchufamos con esa fuente, y el valor del flujo del eje va a ser la misma demanda (positiva).
Lo mismo con el sumidero: creamos uno y a cada vértice con demanda positiva (consumidor) lo enchufamos a ese sumidero, y el valor del flujo del eje va a ser el mismo que el de la demanda.

Luego, resolvemos el flujo máximo.

17
Q

Ford-Fulkerson: Explique la variante de circulación con demandas y límite inferior.

A

Se agrega una nueva condición: ciertos ejes tienen que tener un flujo mínimo.

Lo que se hace es reducir primero al problema de circulación con demandas y luego al problema de flujo máximo.

Vamos a crear un G* ficticio en donde forzamos que los ejes con límite tengan ese valor.
Cada eje entonces cambiará su capacidad en Ce-Le y cada vértice cambiará su demanda en dv-Lv, siendo:

Lv = Sumatoria (e in v) Le + Sumatoria (e out v) Le

donde Lv va a ser la sumatoria del límite inferior de todos los ejes que ingresan a ese nodo v, menos la sumatoria del límite inferior de todos los ejes que salen del nodo v.

18
Q

Grafo Bipartito y Matching: Explique el problema

A

Dado un grafo G=(V,E) no dirigido, es bipartito si se puede dividir V=X+Y tal que cada eje de E sale de X y llega a Y.

Un matching M en G es el subconjunto de ejes tal que cada nodo aparece como mucho en un eje.

Queremos encontrar el set M del mayor tamaño posible.

19
Q

Grafo Bipartito y Matching: Resolviendo con flujo máximo.

A

Podemos construir una red de flujo G' tal que las capacidades de cada eje es de 1, y agregamos un nodo s y otro nodo t, tratando de ir de los nodos de X a Y de la siguiente forma:

S -> X -> Y -> T

Si obtenemos el flujo máximo s-t, el valor del mismo es igual al tamaño del matching máximo.

Luego, podemos usar el flujo mismo para recuperar el matching: aquellos ejes que van de X a Y con un flujo en 1 (para utilizar una sola vez cada eje) forman pareja.

La suma del flujo de los ejes que salen de s indican la cantidad de parejas formadas: si hay k ejes, sabemos que tenemos k parejas formadas.

20
Q

Diseño de Encuestas: Explique el problema

A

Sean:
- k productos que vende una empresa
- n clientes que realizaron compras a la empresa.

Se desea construir una encuesta de satisfacción personalizada.

Se tienen las siguientes restricciones:
- Cada cliente puede responder únicamente por producto que haya comprado.
- El cliente i puede responder consultas entre ci y ci' productos.
- El producto j debe tener entre pj y pj' respuestas de clientes.

21
Q

Diseño de Encuestas: Explique el análisis del problema, ¿qué tipo de grafo podemos construir? ¿Con qué restricciones?

A
  • Cada cliente compró un subconjunto de productos.
  • Cada producto fue comprado por un subconjunto de cleintes.

Esto se puede modelizar como conjuntos disjuntos. Existe una relación entre un elemento i del conjunto “cliente” y j del conjunto producto si i compró a j.

Con esto podemos construir un grafo bipartito, usando los conjuntos y la relación entre ellos.

Para construir las encuestas, se deben cumplir con las restricciones:
- Para el cliente i, tenemos que elegir un subconjunto x de sus “relaciones” tal que Ci ≤ |x| ≤ Ci'.
- Para el producto j tenemos que elegir un subconjunto y de sus “relaciones” tal que Pj ≤ |y| ≤ Pj'

22
Q

Diseño de Encuestas: Transformando el problema en uno de Flujo Máximo. ¿Cómo se interpretan los resultados?

A
  1. Cada cliente y producto es un nodo
  2. Cada relación cliente-producto define un eje de capacidad 1 entre el cliente y el producto.
  3. Agregamos un nodo ficticio s y otro nodo ficticio t.
  4. Por cada cliente i, agregamos un eje s-i con capacidad Ci' y límite inferior Ci.
  5. Hacemos lo mismo para t: agregamos un eje de los productos a t, con capacidad Pi' y límite inferior Pi.
  6. Agregamos un eje t-s con capacidad sumatoria(Ci') y límite inferior sumatoria(Ci).

Todos los nodos tendrán inicialmente demanda cero. Pero como tiene límites, van a eventualmente adaptar esa demanda.

Este problema se reduce a un problema de circulación con demanda. Al final:
- El flujo en eje s-t contiene la cantidad total de preguntas a realizar.
- El flujo de cada s-cicontiene cuántas preguntas debe contestar el cliente i.
- El flujo de cada pj-t contiene cuántas preguntas se realizan al producto j.
Aquellos ejes ci-pj con flujo 1 corresponden a preguntar al cliente i sobre el producto j.

23
Q

Selección de Proyectos: Describir el problema

A

Tengo un conjunto de proyectos, donde para hacer unos, tengo que previamente hacer otros.

Cada proyecto i cuenta con un retorno económica de pi (número positivo o negativo) y puede tener un subconjunto de problemas que son prerequisitos para su ejecución.

Queremos seleccionar un subconjunto de proyectos que maximice la ganancia.

24
Q

Selección de Proyectos: Explique qué es un grafo de precedencia.

A

Podemos representar las relaciones entre proyectos en un grafo G=(V,E), donde los ejes dirigidos representan las precedencias:

p1 -> p3 indica que el proyecto 1 debe realizarse antes que el proyecto 3.

25
Q

Selección de Proyectos: Explique el concepto de Factibilidad de Proyectos

A

Un subconjunto de proyectos A de P es factible si los prerequisitos de cada proyecto en A también pertenecen a A.

26
Q

Selección de Proyectos: Explique el concepto de Ganancia

A

Dado un subconjunto de proyectos factibles A, llamaremos Ganancia de A a la suma de los retornos de cada uno de los proyectos que lo compone.

Ganancia(A) = sumatoria(pi)

Para todos los proyectos con retorno positivo, llamaremos tope ganancia C a la suma de los retornos de esos proyectos:

C(A) = sumatoria(pi) ; si pi > 0
27
Q

Selección de Proyectos: Construcción de Red de Flujos

A
  1. Agregamos un nodo s como fuente y otro nodo tcomo sumidero. Vamos a tener un nodo por cada proyecto.
  2. Por cada nodo i con pi > 0, agregar un eje s-i con capacidad pi.
  3. Por cada nodo i con pi < 0, agregar un eje i-t con capacidad -pi
  4. Por cada relación j que precede a i, agregar un eje i-j con capacidad C+1 (tope ganancia).

De esta forma, se “invierte” el gráfico. Aquellas tareas con ganancia positiva, van a priorizarse. Las relacinoes van a invertirse. La capacidad de esos ejes invertidos va a ser la capacidad máxima.
La capacidad de los nodos con ganancia negativa al nodo sumidero es el valor absoluto de la ganancia.

28
Q

Selección de Proyectos: Explique el corte mínimo

A

Afirmamos que el corte mínimo s-t corresponde a la ganancia máxima obtenida. Siendo C(A',B') el corte mínimo, los proyectos en A' - {s} corresponden a los proyectos a ejecutar para maximizar la ganancia.

C(A',B') = C - Ganancia(A')
29
Q

Resuelva: Ford Fulkerson

Eje Capacidad
S-A 5
S-C 20
A-B 5
A-D 10
B-T 5
C-B 5
C-F 8
D-C 2
D-E 10
F-G 9
G-T 8
E-T 10

A

Solución: 18

30
Q

Resolver:

Demanda y Límite

Nodo     Destino     Capacidad     Demanda(Nodo)     Límite
A               F                        10                -20                           5
A               B                        10                -20                      no tiene      
B               C                        30                 0                          no tiene
F               B                        10                0                              2          
C               -                             -               30                              -
A

Solución: 20

31
Q

Resolver: Grafo bipartito y Matching

Conjunto A: [a,b,c,d,e]
Conjunto B: [1,2,3,4,5]

Ejes: [(a,1), (a,2), (b,1), (c,2), (c,3), (d,3), (d,4), (d,5), e,5)]

A

Solución:

[(a,2), (b,1), (c,3), (d,4), (e,5)]

32
Q

Resolver

Selección de Proyectos

p1-> p3
p1 -> p4
p2 -> p4
p2 -> p5
p5 -> p6

Ganancias:
(p1, p2, p3, p4, p5, p6) = (-3, -1, 5, 3, 1, -4)

A

Ganancia(A) = 4

Corte mínimo = Ganancia máx obtenida = 9 - 5 = 4