Edición de «Práctica 10: Matching - Flujo Máximo (Algoritmos III)»

De Cuba-Wiki
Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.

Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces publica los cambios para así efectuar la reversión.

Revisión actual Tu texto
Línea 73: Línea 73:


==Ejercicio 10.04:==
==Ejercicio 10.04:==
La propiedad vale para cualquier conjunto independiente y cualquier recubrimiento, no es necesario que sean máximo y mínimo respectivamente.
Si G tiene un conjunto independiente de n nodos, entonces cada uno esta en un clique distinto, y el cubrimiento minimo tiene por lo menos n cliques -> |I|<=|Rn|
 
Sean I y Rn un conjunto independiente y un recubrimiento de nodos. Para cada nodo de I hay al menos un eje en Rn que incide sobre él. Como I es independiente, a cada uno de sus elementos lo tocan ejes distintos. Entonces como máximo hay tantos nodos en I como ejes en Rn.


==Ejercicio 10.05:==
==Ejercicio 10.05:==
Probar que si G es bipartito, m <= <math>\alpha * \beta </math>, donde <math>\alpha</math>=#(conj. indep. maximo) y <math>\beta</math>=#(Recubrimiento minimo de aristas)
Probar que si G es bipartito, m <= <math>\alpha * \beta </math>, donde <math>\alpha</math>=#(conj. indep. maximo) y <math>\beta</math>=#(Recubrimiento minimo de aristas)
<br>Sea: <math>v \in \real</math>, y V1,V2 las particiones de G
<br><math>m \leq 2*m = \sum d(v) \leq max(|V1|,|V2|)* \beta \leq  \alpha * \beta </math>
Me parece que eso no esta bien.. que alguien chequee.. porque si tengo un bipartito K_33, tengo que alfa = 3 y beta = 3, entonces 2*9 <= 3*3 no es verdadero....
Otra solución es:
<br> P1 = conj nodos de 1era particion.
<br> P1 = conj nodos de 2da particion.
<br> Ca = conj de nodos aislados.
<br> m<=|P1||P2|
<br> alfa = max(|P1|,|P2|)+|Ca|
<br> beta = min(|P1|,|P2|)
<br> alfa*beta = |P1|*|P2|+min(|P1|,|P2|)*|Ca|
<br> por lo tanto:
<br> |P1|*|P2| = alfa*beta - min(|P1|,|P2|)*|Ca|
<br> m <= alfa*beta - min(|P1|,|P2|)*|Ca| <= alfa*beta.
Creo que esto tampoco esta del todo bien, no es cierto que <br> beta = min(|P1|,|P2|)


Sean V1, V2 las particiones de G.
Si tenes el grafo bipartito P1 = (1,2,3,4) , p2 = (5,6,7,8) con los ejes
<br> {(2,6),(3,6),(4,5),(4,7),(4,8)},
el recrubrimiento minimo se alcanza con los nodos 4 y 6, entonces beta = 2 != min(|P1|,|P2|) = 3 (el nodo 1 esta aislado). Igual no se me ocurre bien como hacerlo...


Uno se convence de que <math>\alpha \geq max(|V1|,|V2|)</math>. Multiplicando por <math>\beta</math> de los dos lados queda <math>\alpha.\beta \geq max(|V1|,|V2|).\beta</math>. Ahora hay que ver por qué eso es mayor a m.
otra forma


Como G es bipartito vale que <math>gr(v) \leq max(|V1|,|V2|)</math> para todo nodo. Sumando sobre los nodos del recubrimiento de aristas, Re, queda que <math>\sum gr(v) \leq max(|V1|,|V2|).\beta</math>. Como Re es un recubrimiento de aristas, sus nodos tocan todos los ejes, con lo cual <math>\sum gr(v) \geq m</math>, y listo.
<math>\alpha</math>=#(conj. indep. maximo) y <math>\beta</math>=#(Recubrimiento minimo de aristas)
<br><math>m \leq  \sum d(v) \leq \sum I =  \alpha * \beta </math>
 
la <math>\sum d(v) </math>, es de 1 hasta el cardinal del recubrimiento minimo de aristas.


==Ejercicio 10.06:==
==Ejercicio 10.06:==
Línea 156: Línea 180:


==Ejercicio 10.18:==
==Ejercicio 10.18:==
Matching maximo en grafo bipartito (V1 son las comisiones, V2 son las personas).
Para resolver esto con flujo maximo, se agrega una fuente artificial f y un sumidero artificial.
Se transforman los ejes en arcos de V1 a V2, se agregan arcos de s a todo v en V1, y arcos de todo v en V2 a t.
A cada arco se le asigna una capacidad de 1.
El flujo maximo es la cardinalidad del matching maximo, y los arcos entre V1 y V2 que tiene flujo = 1 son los correspondientes al matching en el grafo orginal.
Para mas detalle, ver [Cormen, Introduction to Algorithms, Cap 26 (Maximun Flow)]
==Ejercicio 10.19:==
==Ejercicio 10.19:==
Agregar s conectado a x1, x2, x3, con capacidad 5, 10, 5 respectivamente, y agregar t conectado a y1, y2, y3 con flujo entre [5..inf],[10..inf],[5..inf] respectivamente
Agregar s conectado a x1, x2, x3, con capacidad 5, 10, 5 respectivamente, y agregar t conectado a y1, y2, y3 con flujo entre [5..inf],[10..inf],[5..inf] respectivamente
Línea 182: Línea 197:


==Ejercicio 10.22:==
==Ejercicio 10.22:==
<br>a)Cambios los ejes por ejes direccionados en ambas vias con capacidad 1, y busco el flujo maximo.
<br>a)Con DFS sacando ejes usados
<br>b)
<br>b)Con DFS sacando vertices usados


==Ejercicio 10.23:==
==Ejercicio 10.23:==
Ten en cuenta que todas las contribuciones a Cuba-Wiki pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase Cuba-Wiki:Derechos de autor para más detalles). ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar Ayuda de edición (se abre en una ventana nueva)

Plantilla usada en esta página: