Flujo Maximo en Una Red

22
  171 CAPÍTULO VII FLUJO EN REDES INTRODUCCIÓN En este capítulo estudiarem os varios problemas de Fl ujo en Redes. Estos problemas pueden t odos ser formulados como problemas de Progr amación Lineal y resueltos utiliz ando los métodos clásicos , sin embargo, los algori tmos que  presentaremos aquí son algoritmos que nos interesan por adaptarse directamente a cada problema tratado y por fundamentarse en propiedades de la estructura subyacente en toda red, a saber, el digrafo subyacente formado por los vértices y arcos de la misma. VII.1 BÚSQUEDA DE CAMINOS MÁS CORTOS EN R EDES En el capítulo V se estudiaron varios algoritmos considerando siempre cmin(s,v) < - ,    vV. Volvemos aquí sobre el mismo problema levantando esta exigencia, para lo cual incluiremos en los algoritmos a estudiar mecanismos para detectar la presencia de circuitos y poder detener la ejecución del algoritmo. Definiremos primero lo que llamamos una RED. Definición VII.1.1 Una Red R = (V,E,f 1 , … , f m ) es una tupla donde V y E son los vértices y arcos de un digrafo G = (V,E) sin bucles, llamado el digrafo subyacente y donde f 1 , … , f m  son funciones f i : E  que pueden representar magnitudes t ales como distancia, distancia, costo, capacidad, etc. Consideremos una red R = (V,E,d) donde la función d la llamaremos distancia. Mientras no se especifique lo contrario, supondremos que el di grafo subyacente G = (V ,E) es sin arcos múltiples. Dados dos vértices x, y en V, denotaremos por C x y  un cam ino del vértice x al vértice y. Recordemos que el costo de un camino C en una red es la suma de los costos de los arcos que conforman el camino, y se denota por d(C). Si a la función asociada a los arcos la llamamos distancia estaremos hablando de la distancia del camino. Definición VII.1.2 Un circuito en R = (V,E,d) se dice  Absorbente si s u costo o distancia es nega tivo. Definamos a continuación dos funciones I, T : E  V, las cuales asocian a cada arco sus vértices Inicial y Terminal respectivamente. Definición VII.1.3 Dados dos vértices x, y en una Red R=(V,E,d), si existe un camino más corto de x a y entonces la distancia de ese camino se llama  Distancia mínima de x a y. Así, la dist ancia mínima de un vértice a s i mismo, si existe, es nula . Sea s una raíz de R = (V,E, d) sin circuitos a bsorbentes, podemos definir otr a función π: V  R que asocia a cada vértice x la distancia mínima de s a x. Proposición VII.1.1 Sea R = (V,E,d) sin circuitos absorbentes y con una raíz s, entonces: e  E: π(T(e)) - π(I(e))  d(e). (I)

Transcript of Flujo Maximo en Una Red

171CAPTULO VIIFLUJO EN REDESINTRODUCCINEnestecaptuloestudiaremosvariosproblemasdeFlujoenRedes.EstosproblemaspuedentodosserformuladoscomoproblemasdeProgramacinLinealyresueltosutilizandolosmtodosclsicos,sinembargo,losalgoritmosquepresentaremosaqusonalgoritmosquenosinteresanporadaptarsedirectamenteacadaproblematratadoyporfundamentarseenpropiedadesdelaestructurasubyacenteentodared,asaber,eldigrafosubyacenteformadoporlosvrtices y arcos de la misma.VII.1 BSQUEDA DE CAMINOS MS CORTOS EN REDESEn el captulo V se estudiaron varios algoritmos considerando siempre cmin(s,v) < -, vV.Volvemos aqu sobreelmismoproblemalevantandoestaexigencia,paralocualincluiremosenlosalgoritmosaestudiarmecanismosparadetectar la presencia de circuitos y poder detener la ejecucin del algoritmo.Definiremos primero lo que llamamos una RED.Definicin VII.1.1Una Red R = (V,E,f1, , fm) es una tupla donde V y E son los vrtices y arcos de un digrafo G = (V,E) sin bucles,llamado el digrafo subyacente ydonde f1, , fmsonfuncionesfi:E que pueden representar magnitudes talescomo distancia, distancia, costo, capacidad, etc.ConsideremosunaredR=(V,E,d)dondelafuncindlallamaremosdistancia.Mientrasnoseespecifiquelocontrario, supondremos que el digrafo subyacente G = (V,E) essin arcos mltiples.Dados dos vrtices x, y en V, denotaremos por Cxyun camino del vrtice x al vrtice y. Recordemos que el costo deun camino C en una red es la suma de los costos de los arcos que conforman el camino, y se denota por d(C). Si a la funcinasociada a los arcos la llamamos distancia estaremos hablando de la distancia del camino.Definicin VII.1.2Un circuito en R = (V,E,d) se dice Absorbentesi su costo o distanciaes negativo.Definamos a continuacin dos funciones I, T : E V, las cuales asocian a cada arco sus vrtices Inicial y Terminalrespectivamente.Definicin VII.1.3Dados dos vrtices x, y en una Red R=(V,E,d), si existe un camino ms corto de x a y entonces la distancia de esecamino se llama Distanciamnimade x a y.As, la distancia mnima de un vrtice a si mismo, si existe, es nula.Sea s una raz de R = (V,E,d) sin circuitos absorbentes,podemos definir otra funcin : V R que asocia a cadavrtice x la distancia mnima de s a x.Proposicin VII.1.1Sea R = (V,E,d) sin circuitos absorbentes y con una raz s, entonces:e E: (T(e)) - (I(e)) d(e).(I)172Demostracin:Sea e=(x,y),entonces C = Csx || dondeCsx es un camino de costo mnimo, esun caminode s a y, dedonde d(C) = (x) + d(e) (y).Proposicin VII.1.2SeaR = (V,E,d) como antes, s una raz de R y xV: (x) = distancia mnima de s a x en R, entonces la subredR(E), donde E = {e E / (T(e)) - (I(e)) = d(e)} tambin tiene raz s y todos los caminos de costo mnimo en Restn enR(E), la red inducida por E.Recprocamente,todo camino de s a x en R(E) es un camino de costo mnimo.Demostracin:SeaCszelcaminodecostomnimodesazenR,e=(x,y)unarcodeestecaminomnimo.Entonceslassubsecuencias Csx,Csyson caminos de costo mnimo a xeyrespectivamente. As: d(Csy)=(y)= dl(Csx)+d(e) =(x) + d(e), de donde vemos que todo arco perteneciente a un camino mnimo de s a cualquier otro vrtice x est en E.Sea ahora C un camino de s a cualquier vrtice x en R(E), veamos que este es un camino de costo mnimo.d(C) = eC d(e) = eC ((T(e)) - (I(e))) =(x) - (s)=(x)luego siendo la distancia de C igual a la distancia mnima de s a x, C es un camino de costo mnimo.Cabeobservarqueluegodeestademostracinpodemoscaracterizartodoslosarcossobreuncaminodecostomnimo como los arcos que verifican la desigualdad (I) de la Proposicin VII.1.1 como una igualdad.CorolarioVII.1.2.1Todo circuito en R(E) tiene distancia nula. Algoritmo GeneralEste algoritmo es bsicamente el mismo modelo general de bsqueda de caminos de costo mnimo presentado en elcaptuloV,alcualleagregamosahoraunmtodoparadetectarlapresenciadecircuitosabsorbentesenlaRutinadeeliminacin de Caminos. En cuanto a los atributos, es fcil ver que a cada camino Pj = Ext (Pi, xj) le debe correspondercomo atributo A(Pj) = A(Pi) + d(e), donde e = (xi,xj).Este atributo corresponde al costo del camino, es decir, la distanciadel vrtice inicial s a xj . La seleccin del prximo camino abierto a cerrar se har tomando el que tenga menor atributo.LaRutina de eliminacin de caminos quedara como sigue:Rutina de Eliminacin de Caminos para el Alg. General de Camino Mnima :ComienzoParatodo camino Pj obtenido por expansin de Pi a xj hacer:Sino existe camino Pk en la listacon igual vrtice final xj que PjentoncesAbrir Pjsino { ya existe otro camino listado hastaxj }SiA (Pk) > A (Pj) entoncesSixj est en el camino Pj entoncesComienzoEscribir ( Hay Circuito Absorbente );PARARFinsino ComienzoEliminar Pk;Abrir Pj; 173Fin;Fin.Estealgoritmogeneralpermitedetectarcircuitosabsorbentessiloshay,yencasocontrarioencuentralaarborescencia de distancias mnimas de raz s.Una segunda versin del algoritmo, la cual presentamos a continuacin utiliza el algoritmo de Dijkstra para encontraruna arborescencia inicial A de raz s, no necesariamente de distancias mnimas, y luego trata de mejorar esa arborescenciahasta que sea ptima o hasta detectar un circuito absorbente.Para mejorar la arborescencia inicial, el algoritmo se basa enlas Proposiciones VII.1.1 y VII.1.2.CaminoMinGeneral (V, E, I, T, d, s; VAR , A, EsRaiz, CircuitAbs, C){Entrada:V, E, I, T, d, s. Salida:, A, EsRaiz, CircuitAbs, C.EsRaiz y CircuitAbs son variables booleanas que indican respectivamente si s es o no raz y si existe o no uncircuito absorbente.En caso que ocurra esto ltimo, C sera tal circuito . A es un arreglo con las referencias alos antecesores de cada vrtice en el camino encontrado. El algoritmo de Dijkstra devuelve en un vector decostostalque(x),xenV,eselcostodelcaminomnimodesax.LavariablebooleanaEsRaizdevuelveverdadero si y slo si s es raz de G=(V,E).}ComienzoDijkstra (V,E,I,T,d,s; ,A,EsRaiz);CircuitAbs FALSO;Si (EsRaiz)entoncesComienzoE {eE / e = (A(x),x), xV};Mientras ( E: d() < (T())-(I()) ) y (no CircuitAbs) hacerSi(G=(V,E {}) contiene un circuito C ) entonces CircuitAbs VERDADEROsinoComienzox T();E E {} - {(A(x),x)};A(x) I(); (T()) - (I()) - d();(x) (x) - ;Para todo y descendiente de x en el rbol A hacer:(y) (y) - ;FinFinFin.Seobservaqueencadaiteracin delalgoritmovV (v)decreceestrictamente,asquenosevuelvenuncaaunaarborescenciahalladaanteriormente.SiendofinitoelnmerodearborescenciasdeR=(V,E,d),quedaaseguradalaterminacin del algoritmo.Para determinar si existe circuito absorbente basta mirar si T() es antecesor de I() en A, donde es el arco que seest agregando en ese momento.Por ser A una arborescencia, esto ltimo es muy sencillo pues existe un nico camino de sa x en A y basta recorrerlo en sentido inverso.VII. 2FLUJO MXIMOPrcticamente hablando, un problema de flujo mximo consiste, por ejemplo, en buscar la cantidad mxima de aguaque puede fluir, en un determinado momento, desde una estacin de bombeo hasta un reservorio, a travs de un sistema deacueductos.Podrarepresentartambinlacantidadmximadevehculosporunidaddetiempoquesoportaunaredvialentre dos ciudades.ParadefinirformalmenteelproblemadelFlujoMximorecordaremosqueenunaredR=(V,E,c),unVRTICEFUENTE es un vrtice s tal que no existe ningn arco eE, tal que T(e) = s. Se llama VRTICE SUMIDERO o POZO a unvrtice p tal que no existe ningnarco eE con I(e) = p.174Definicin VII.2.1Sea R = (V,E,c) una red con un vrtice fuente s yun vrtice sumidero p.Agreguemos a R un arco er = (p,s), conc(er)= +.El arco er se llama Arco de Retorno.Este arco se agrega a la red para efectos de facilitar la resolucin del problema, lo cual veremos a continuacin.Definicin VII.2.2Dada una red R = (V,E,c) con un vrtice fuente s, un vrtice sumidero p y la funcin c: E . SeaE

= E{er}.Una funcin f deE

en se llama un FLUJO sobre el digrafo subyacente G = (V,E

)si cumple la siguiente igualdad paratodo vrtice x en V se tiene que e E/ T(e)=x e E/ I(e)=xf(e) f(e) 0 = , es decir, todo el flujo que llega a un vrtice debe ser igualal flujo que sale del vrtice.Dada una red R = (V,E,c) con un vrtice fuente s y un vrtice sumidero p, donde la funcin c:E representa unacapacidad definida sobre los arcos, buscar el Flujo Mximo consiste en buscar un vector (f(e1), f(e2),...,f(em)) , E

= {e1,e2, ... , em} y m=| E

|, tal que:i) f sea un flujo sobre el grafo G(V,E

), dondeE

= E {(p,s)} = E {er}ii) 0 f(e) c(e), e E

.iii) f(er) = f((p,s))sea mximo bajo las condiciones (i) e (ii).Entreotrascosas,esporelloqueesnecesarioagregarelarcoderetorno,paraquelaleydeconservacinpuedacumplirse incluso para los vrtices s y p.Debido a esto mismo, el flujo por el arco de retorno, representa la cantidad totaldeflujoquepasaporlaredencualquiermomentoyesestacantidadf(er)laquesebuscamaximizaralresolverelproblema.Un flujo f en R = (V,E

,c) que satisface las condiciones (i) e (ii) se llama un flujo factible.Otros problemas, tales como la presencia de varios vrtices fuente (s1,..sk) y/o varios vrticessumidero(p1,..,pq),puedenser resueltosfcilmentellevndolosalcasoexpuestoanteriormante.Paraello bastaconagregarun vrticefuenteficticio so, o super-fuentey/oun vrtice pozo o sumidero ficticio po, o super-pozo,con arcos (so,si), i=1,..,k,(pj,po),j=1,..,k con capacidad infinita, adems del arco de retorno (po,so).Igualmente,problemastalescomolapresenciaderestriccionesdecapacidadsobrelosvrtices,locualpodrarepresentar limitaciones de capacidad de intersecciones, pueden tambin ser fcilmente resueltos bajo el esquema anterior,representandoacadavrticexcomodosnuevosvrticesxexunidosporunarco(x,x)concapacidadigualalacapacidad del vrtice x original.Este problema de Flujo Mximo puede ser formulado como un Problema de Programacin Lineal (P.P.L.).Para ellousaremosla Matriz de Incidencias del digrafo subyacente.Si denotamosM

la Matriz de Incidencias del digrafo G = (V,E

), el problema del flujo mximo se convierte en elsiguiente P.P.L.max f(er)s.a.M.f =0 dondef es el vector deflujof c ces el vector decapacidadf 0

VII.2.1 ALGORITMO DE FORD & FULKERSONEl algoritmo deFord&Fulkersones unalgoritmoparalabsqueda del flujomximoen unaredR=(V,E,c).Unaprimera idea para este algoritmo es:dado un flujo f incial factible, buscar un camino (elemental) C de s a p tal que ningnarco del camino est saturado, es decir que eC:f(e) < c(e).De conseguirse este camino,el flujo puede ser aumentadoen cada uno de los arcos en = Min eC [c(u) - f(u)] > 0. 175Sinembargoesteprocedimientopodrabloquearse,comoseveenlaFiguraVII.1,sinquesehayaencontradoelflujo mximo. figura VII.1Unasegundaideaconsisteenbuscarunacadena(elemental)Ctalque,siagregamoselarcoderetornoeraestacadena C, podemos dividir los arcos de C en:C+ = {eC / e tiene la misma orientacin que er en C}C-= {eC / e tiene orientacin contraria a er en C}Cada uno de los arcos en C debe ser tal que:SieC+ :f(e) < c(e)SieC-:f(e) > 0.Una cadena como la descrita anteriormante se llama una cadena de aumento.Una vez hallada esta cadena, el flujo atravs de la red puede aumentarse en:= Min { Min eC+ [c(e) - f(e)],Min eC- [f(e)] }>0haciendo:+-f(e)+ si e Cf(e)=f(e)- si e C Este ser un nuevo flujo factible ya que:i) Las restricciones de conservacin de flujo se mantienen sobre todos los vrtices, lo cual es facil ver ya que:- SiC no pasa por xV,es evidente que el flujo a travs de x se mantiene constante.- Si x es un vrtice tal que C pasa por l,habr exactamente dos arcos de C incidentes en x.En esta situacin sepueden presentar cuatro casos.Llamemos e1 y e2 los dos arcos incidentes en x, entonces:T(e1) = T(e2) = x I(e1)= I(e2)= x T(e1) = I(e2)= x I(e2)= T(e1) = x.En todos estos casos las modificaciones sobre el arco e1 compensan las modificaciones en el arco e2 de forma quelas leyes de conservacin de flujo se mantienen.ii) El nuevo valor del flujo f verifica de nuevo:0 f(e) c(e), eE,por la forma como se escoge .-(flujo,capacidad)-Valor Flujo Mximo = 412s p(1,1)(0,5)(2,4)(3,3)(3,)(1,2)176 SeaY un subconjunto de vrtices de R = (V,E,c).Sea(Y) = { eE/I(e) Y, T(e) Y T(e) Y, I(e) Y }el cociclo inducidopor el conjunto Y.Los arcos de (Y) los dividimos en dos subconjuntos +, -, donde:+(Y) = { eE / I(e) Y, T(e) Y }- (Y) = { eE / T(e) Y, I(e) Y }Definicin VII.2.1.1Se llama un Corte que separa s de pa un subconjunto K de arcos de R = (V,E,c) tal que, existe un subconjunto devrtices Y consY,pYcon K = +(Y).Es interesante notar que si K es un corte que separa s de p, entonces todo camino de s a p en R = (V,E,c) tiene unarco en K.Definicin VII.2.1.2Se define la Capacidad de un Corte Ken R = (V,E,c) como la suma de las capacidades de los arcos en K,es decir:c(K) = eK c(e).Proposicin VII.2.1.1Para todo flujo factible f en R = (V, E

,c) y para todo corte K que separa s de p se tiene que f(er) c(K).Demostracin:Sea Y un subconjunto de vrtices tal que K = +(Y).Sisumamoslasrestricciones deconservacindeflujosobretodos los vrtices en Y obtenemos:+ -e (Y) e (Y)f(e) f(e) 0 = Puesto que sY,pY,entonces er = (p,s) -(Y), de donde despejando se obtiene:{ }+ -re (Y) e (Y)- (p,s)f(e ) f(e) f(e) = pero 0 f(e) c(e), eE{ }-e (Y)- (p,s)f(e)0, y+e (Y)f(e)= e Kf(e) e Kc(e) luego f(er) c(K).En la prxima seccin presentaremos en detalle un algoritmo para resolver un problema ms general que el problemade flujo mximo dado en esta seccin y que podemos utilizar sin cambio alguno para resolver el problema de flujo mximo.VII.2.2FLUJO MXIMO EN REDES CANALIZADASLlamamos Red Canalizada a una red R = (V,E{er},b,c) con fuente s y pozo p, er = (s,p), en la cual adems de lafuncin capacidad que acota superiormente el flujo, tenemos otra funcinb: E > que corresponde a una cota inferiorpara el flujo por los arcos (por esto decimos que el flujo est canalizado). El problema consiste en hallar un vector f tal que:(i) f sea un flujo en el grafo (V,E{er})(ii) eE: b(e) f(e) c(e).(iii)f(er) sea mximo.Notequesib(e)=0,eE,entonceselproblemaanteriornoesmasqueelproblemadeflujomximovistoenlaseccin anterior. Note tambin que c(er) puede ahora no ser infinito. 177La solucin inicial trivial f(e) = 0, eE, puede no ser factible en este nuevo problema por lo que habr que disponerde un mecanismo para encontrar al menos una solucin inicial factible al problema.Esto se ver en la prxima seccin. Sinembargo, para el problema de flujo mximo de la seccin anterior se tiene que la solucin trivial es factible.Acontinuacinpresentamosunalgoritmoparadeterminarunflujomximoenunaredcanalizada.EstealgoritmorequierequeelflujofinicialseaunflujofactibleenR=(X,V,b,c).Cuandob(e)=0,eE,podemostomarcomoflujoinicial a f(e)=0, eE.MODIF es una variable booleana que toma el valorVERDADERO si el flujo f es modificado porelalgoritmo.ExisteFM,tambinbooleana,indicasiexisteunCortedecapacidadfinita,encuyocasoExisteFM=VERDADERO.FLUJOMAX(V, E, I, T, er, s, p, b, c, fi; VAR f, Y, MODIF, ExisteFM): { Ford & Fulkerson }{Entradas: V, E, I, T, er, s, p, b, c, fiSalidas: f, Y, MODIF, ExisteFM}ComienzoMODIF FALSO;f fi;ExisteFM VERDADERO;RepetirMARCAR(V,E,I,T,er,s,p,b,c,f; Y,A,epsilon);Si (pY y epsilon ) entoncesComienzox p;C+ {er};C- ;M ODIF VERDADERO;Mientras(xs)hacer:Comienzoe A(x);Si (x = T(e)) entoncesComienzoC+ C+ {e};x I(e);Finsino ComienzoC- C- {e};x T(e); Fin;Fin ;Para todoeC+ hacer : f(e) f(e) + epsilon ;Para todoeC- hacer:f(e) f(e) - epsilon ;Finhasta que(pYepsilon = );Si(epsilon = ) entonces ExisteFM FALSO ;DondeMARCAR(V,E,I,T,er,s,p,b,c,f; VAR Y,A,epsilon):{ Entradas: V,E,I,T,er,s,p,b,c,f. Salidas: Y,A,epsilonY es un conjunto de vrtices y A es un vector que asocia a cada vrtice un arco del cual l es extremo. Si alfinal del algoritmo pY entonces se puede aumentar el flujo a travs del camino de aumento quese reconstruyeapartir deA dela siguiente forma:x1eselotrovrticeextremodelarcoA(p),x2eselotro vrtice extremo de A(x1), etc. Si(s) es la cantidad mxima en que se desea incrementar el flujo del arco er}VariableExisteC : booleana;178ComienzoY {s};ExisteC VERDADERO;(s) c(er) - f(er);epsilon 0;Mientras (pY y ExisteC ) hacerSi (e=(x,y) / xY, yY, f(e) < c(e)) entonces {Marcado Directo }ComienzoY Y {y};A(y) e;(y) Min [ (x), c(e) - f(e)]Finsino {Marcado Inverso }Si (e=(x,y) / yY, xY, f(e) > b(e)) entonces ComienzoY Y {x};A(x) e;(x) Min [ (y), f(e) - b(e)] Fin sino ExisteC FALSO;Si (ExisteC) entonces epsilon (p);Fin ;{ MARCAR }Fin.{ Flujo Max }Justificacindel Algoritmo:i) Sea = { eE/ y Y con A[y] = e }(A e Y son salidas de Marcar).El grafo G(V,) es claramente un rbol.La cadena que une s a p en G = (V,) unido con er es un ciclo C donde C+son los arcos orientados como er y C- son los arcos orientados en sentido contrario a er.ii) Por la forma como se calcula , al modificar los valores de f(e) se mantiene la factibilidad.i) + ii) el flujo que se obtiene al final de cada iteracin es siempre factible y estrictamente mejor que el anterior,pues al f(er)le asignaf(er) + ,( > 0). puede ser infinito cuando exista un camino de aumento de costo no acotado en cuyo caso el flujo es no acotado.UnavezqueterminaelalgoritmoconpY,sepuedeverquehemosencontradouncorteKdesapconc(K)=f(er),lo cual segn la Proposicin VII.2.1.1 implica que f no puede aumentar ms (y adems no podremos conseguir otrocorte de capacidad menor).Veamos a continuacin que efectivamente se ha detectado tal corte:Sea Y el ltimo conjunto de vrtices marcados.Por construccin pY.Sea e = (x,y) +(Y) f(e) = c(e) (sino y = T(e) sera marcado en la marcacin directa).Sea e = (y,x) - (Y) f(e) = 0 (sino y = I(e) sera marcado en la marcacin inversa).TomandoK = +(Y)tenemosf(er) = eK c(e) =c(K).Proposicin VII.2.1.2 (Flujo Max - Corte Min)Elvalormximodef(er)paraunflujofactiblefenR=(V,E,c)esigualalacapacidaddeuncortedesapdecapacidad mnima. En particular f(er) ser no acotado si y slo si no existe en R = (V,E,c) un corte de capacidad finita quesepare s de p. 179Demostracin:Podemos remitirnos al hecho de que el problema de flujo mximo es un P.P.L. que tiene al menos una solucin:f(e)= 0, eE

.Adems si existe algn corte de capacidad finita, el problema es acotado y por lo tanto tiene solucin ptimafinita.En cuanto a la terminacin del algoritmo de Ford & Fulkerson (F&F), podemos ver que siempre que las capacidadesde los arcos sean nmeros racionales, podemos considerar que todas son mltiplos enteros de algn nmero en R.As, siexiste corte finito, al comenzar con f(e) = 0, eE, e ser siempre mltiplo de , luego los valores del vectorf para cadasolucin sern tambin mltiplos de , y f(er) aumenta en cada iteracin en un mltiplo de estrictamente mayor que cero.Este crecimiento al ser el problema acotado se detiene en un nmero finito de pasos.Porotrolado,conunaimplementacincomolapropuestaporEdmonds&Karp(1972),enlacuallascadenasdeaumentosebuscantratandoelconjuntodevrticesmarcadoscomounaCOLAyexaminandoprimerotodoslosarcosincidentesalvrticeenelPrincipiodelaColaantesdepasaraexaminarlosvecinosdelsiguientevrticeenlaCola,elprocedimientoMARCARresultasimilaralalgoritmodeDijkstra,yanmseficientepuesparamarcarunnuevovrticebastaconqueestecumplalascondicionesparaunamarcacinbienseadirectaoinversa,sinnecesidaddehacermscomparaciones.EstonosdaunordenO(n2)paraMARCAR.EncuantoalnmerodevecesqueesteprocedimientoesllamadoporFlujoMax,Edmonds&Karp(1972)encuentranunacotaO(n3)basandoseenlaimplementacinyamencionada.Con estos resultados, obtenemos una cota O (n5) para el algoritmo de Flujo Mximo.Silascapacidadesdelosarcossonnmerosirracionales,esposiblequeelalgoritmonopare,opeoran,queconverja a soluciones lejanas al ptimo (Ford & Fulkerson, 1962).Esto sin embargo, en los casos reales no ocurre puestoquesiempresepuedentomaraproximacionesracionaleslosuficientementebuenasyaquelosirracionalesnotienenunarepresentacin exacta en la computadora.En el caso que no exista corte finito, esto implica que existe al menos un camino Csp de s a p en el cual todos losarcostienencapacidadinfinita.SiendofinitoelnmerodecaminoselementalesyestandosiempreestecaminoCspnosaturado, es seguro que en la primera etapa de la marcacin (marcacin directa) este camino ser encontrado y se detectaral ser = infinito para tal camino.VII.3 FLUJOS FACTIBLESConsideremos una red R = (V,E,b,c) conb: E , c: E y b(e) c(e), eE.SedeseaencontrarunvectorfenRm(m=|E|),quellamaremosunflujofactibleenR=(V,E,b,c),elcualdebesatisfacer las siguientes condiciones:i) f es un flujo en G = (V,E).ii) b(e) f(e) c(e), eE.Veremosenloquesigueunmtodoquenospermitirencontrarunflujofactible,siemprequeesteexista,yunacondicin necesaria y suficiente para su existencia.Proposicin VII.3.1 (Teorema de Hoffman)Una condicin necesaria y suficiente para que exista un flujo factible en R = (V,E,b,c) es que: cociclo (Y) en (V,E): -e (Y)b(e)+e (Y)c(e) (II)Demostracin:Sea f un flujo factible en R = (V,E,b,c) y (Y) un cociclo, entonces, sumando todas las ecuaciones de conservacinde flujo sobre los vrtices en Y obtenemos:- +e (Y) e (Y)f(e) f(e) = , pero-e (Y)b(e) -e (Y)f(e)y +e (Y)f(e) +e (Y)c(e)de donde se obtiene la condicin(II) buscada.180Elsiguientealgoritmoesunalgoritmoconstructivo,elcualcuandonopuedeencontrarunflujofactibleponeenevidencia la existencia de un cociclo que no cumple la condicin de Hoffman, lo cual demuestra la suficiencia de la misma.Algoritmo para encontrar un Flujo Factible.FlujoFact(V, E, I, T, b, c; VARf, Y, ExistFF){Entradas: V, E, I, T, b, cSalidas: f, Y, ExistFF.La variable booleana ExisteFF ser verdadera sy y slo si existe un flujo factible en (V,E,b,c).}ComienzoExistFFVERDADERO;f 0 ;{Flujo Inicial = 0 , eE }RepetirINDIC e / f(e)>c(e) [f(e)-c(e)] + e / f(e) c() ) entoncesComienzoI(er) p y;T(er) s x;c (er) f() - c();1;FinSino { = (x,y) E / f() < b() }ComienzoI(er) p x;T(er) s y;c(er) b() - f();-1;Fin ;Para todo eEhacer:Comienzob

(e) Min [ b(e), f(e) ]c(e) Max [ f(e), c(e) ]f

(e) f(e);Fin ;f

(er) 0;b

(er) 0;FlujoMax (V,E,I,T,er,s,p,b

, c , f

; f

, Y, MODIF, ExistFM);Si ( f

(er) =c(er) )entonces { El flujo se pudo cambiar }Comienzof() f

() - *f

(er);Para todo e E / e hacerf(e) f

(e);Finsino ExistFFFALSO;{ El flujo no cumple la condicin de Hoffman }Fin hasta que (INDIC = 0no ExistFF).Fin.{FlujoMax } 181Observaciones:Si INDIC = 0 entoncesf es un flujo factible.Las nuevas cotasb

,cse definen de forma tal que f =f

sea factibleen R = (V,E {er},b

,c )para poder llamar a FLUJOMAX que requiere un flujo inicial factible.El algoritmo anterior se detiene cuando INDIC = 0, es decir cuando se tiene un flujo f factible, o cuando ExistFFesfalso.En este segundo caso,sea Y el ltimo conjunto de vrtices marcados que devuelve FLUJOMAX :a) Si = 1 entonces:e+(Y) - {}:f(e) =f

(e) =c(e) c(e) e-(Y):f(e) =f

(e) =b

(e) b(e) f() =f

() - *f

(er) > c()b)Si = -1 entonces:c)e+(Y):f(e) =f

(e) =c(e) c(e) e-(Y) - {}: f(e) =f

(e) =b

(e) b(e)f() =f

() - *f

(er) < b().En ambos casos:0 = +e (Y)f(e)--e (Y)f(e) >+e (Y)c(e)- -e (Y)b(e)de donde podemos concluir que fno factible un cociclo (Y) que no cumple la condicin de Hoffman.VII.4FLUJO DE COSTO MNIMOSe plantea el problema de Flujo de Costo Mnimo de la siguiente manera:Sea R = (V,E,a,b,c)cona: E , b: E , c: E , b(e) c(e),eE.Se desea encontrar un vector ftal que:i) f sea un flujo en G=(V,E)ii) b(e) f(e) c(e), eE.iii) eE [a(e) * f(e)] sea mnimo.As como el problema de Flujo Mximo, el problema de Flujo de Costo Mnimo, tambin puede formularse como unP.P.L. Si M es la matriz de incidencia de G entonces:min at * fs.a. M.f =0f bf cAntesdevercomoresolveresteproblema,veremoscomootrosproblemasconocidos,puedenplantearsecomoproblemas de flujo de costo mnimo.182a) Camino Mnimo de s a p en R = (V,E,d).En este caso el planteamiento lo hacemos construyendo una nueva redR = (V, E {er}, a,b,c), dondeer = (p,s), a(er) = 0, b(er) = 1, c(er) = eE : a(e) = d(e), b(e) = 0, c(e) = b) El problema de Flujo Mximo de s a penR = (V, E {er}, b, c), con er=(p,s), se puede reducir al problema deflujo de costo mnimo como sigue: Construiremos la nueva red R=(V, E {er}, a,b,c), dondeer = (p,s) a(er) = -1, b(er) = 0, c(er) = eE : a(e) = 0, b(e) = b(e), c(e) = c(e).c) Problema de Transporte.Supongamos N fuentes con capacidades ai,M destinos con demandas bj, y costos unitarios de transporte cijdela fuente ial destinoj.La formulacin como P.P.L. de este problema es:Min ij cij Xijs.a. j xijai, i j xij bj, j xij0,i,j.Construimos entonces la siguiente red R=(FD{(p,s)},E1E2E3,a,b,c) donde:F = { cjto. de vrtices correspondientes a cada fuente}D = { cjto. de vrtices correspondientes a cada destino}s = super-fuente,p = super-destino o sumidero.E1 = {(s,Fi) / Fi es una fuente}E2 = {(Dj,p) / Dj es un destino}E3 = {(Fi,Dj) / Fi es una fuente,Dj es un destino} ij i j 3c si e=(F,D ) Ec(e)=0 en otro caso j j 2b si e=(D ,p) Eb(e)=0 en otro caso i i 1a si e=(s,F ) Ea(e)=0 en otro caso er = (p,s): a(er) = 0, b(er) = bj,c(er) = ai 183Definicin VII.4.1Dado un flujo f factible en una red R = (V,E,a,b,c), podemos construir una red R =(V, , d)donde = ,donde y son construidos como sigue:Si f(e) < c(e)entonces creare con: I(e) = I(e), T(e) = T(e), d(e) = a(e).Si f(e) > b(e)entonces creare con :I(e) = T(e),T(e) = I(e), d(e) = -a(e)Proposicin VII.4.1Un flujo factible f en R = (V,E,a,b,c)es de costo mnimo si y slo si la red R (f) no tiene circuitos absorbentes.Demostracin.Supongamos que R (F) si tiene un circuito absorbente C,llamemos C+ = C ,C- = C .Llamemos + = arcos en E asociados a arcos en C+, - = arcos en E asociados a arcos en C-. Por ser C un circuitoabsorbente se tiene que eC d(e) < 0.PeroeC d(e) = eC+ d(e) + eC- d(e) = e+ a(e) - e- a(e) < 0Sea = Min { Mine+ [c(e) - f(e)],Mine- [ f(e) - b(e)] }>0Podemos entonces construir un nuevo flujo g como:g(e) =f(e) + , si e+g(e) =f(e) - , si e-g(e) =f(e), si e(+-)=.El costo de este flujo es:a * g= e Ea(e)*g(e)= ea(e)*(f(e)+)++ea(e)*(f(e)-) + ea(e)*f(e)= =e E e ea(e)*f(e) a(e) a(e)+ (+ ( < a * fde donde se observa que g tiene menor costo que f.Porotrolado,si R (f)notienecircuitosabsorbentes,entonces,agregandolosarcosnecesariosparaqueunciertovrtice s, escogido arbitrariamente, sea una raz de R(f) y dando a estos arcos una distancia sufientemente grandeM>>0,podemos asegurar que existen caminos mnimos desde s hasta cada vrtice x de R(f).De esta manera, podemos asociar los valores:(x) = distancia mnima de s a x, xV, tales que:e:(T(e)) - (I(e)) d(e).Plantearemos a continuacin el dual del problema de flujo de costo mnimo:max 0.X + b.Y - cZs.a.X.E + Y - Z = a, Y,Z 0Definamos:t(e) = (T(e)) - (I(e)) , (e) = Max [0, a(e) - t(e)]y (e) = Max [0, t(e) - a(e)]As,184si e : (T(e)) - (I(e)) =(T(e)) -(I(e)) d(e) =a(e)t(e) a(e)si e: (T(e)) -(I(e)) = (I(e)) - (T(e)) d(e) = -a(e) t(e) a(e)Veamos que si las variables duales(X, Y, Z) toman los valores (, , ), esto es una solucin factible. (e) 0, eE, pues sia(e) - t(e) < 0 entonces(e) = 0. (e) 0, eE, pues sit(e) - a(e) < 0 entonces(e) = 0.La restriccin dual se transforma en: (T(e)) - (I(e)) + (e) - (e) = a(e)y es fcil verificar que esta igualdad siempre se cumple.Ahora slo falta ver que las soluciones (, , ), para el dual,y f para el primal, cumplen las condiciones de holguracomplementaria y que por lo tanto ambas son ptimas a sus respectivos problemas:f(e) > b(e)t(e) a(e)(e) = 0f(e) < c(e)t(e) a(e)(e) = 0 (e) > 0a(e) > t(e)f(e) = b(e) (e) > 0t(e) > a(e)f(e) = c(e).Elalgoritmoquepresentamosacontinuacin,conocidocomoalgoritmoPrimal,encuentrasujustificacinenlaProposicin VII.4.1.FlujoCostoMin;{Entradas: V, E, I, T, a, b, c, fi;Salidas: f, Y, ExisteFCM }.Variable Circuitabs : Booleana;ComienzoFlujoFact (V,E,I,T,b,c,fi;f,Y,ExisteFCM);Si (ExisteFCM) entoncesRepetir Construir R =(V,,d) como en la definicin VIII.4.1, con = ; { aplicar CaminoMinGeneral a R }CaminoMinGeneral (V,, , T , d, s; , A, EsRaiz, CircuitAbs, C); Si (CircuitAbs) entoncesComienzoC+ C ;C- C ;+ arcos de E asociados a C+;- arcos de E asociados a C-; Min {Mine+ [c(e)-f(e)], Mine- [f(e)-b(e)]}; { > 0 }Si( ) entoncesPara todoe EhacerSegn e hacerComienzoe+: f(e) f(e) + ;e-:f(e) f(e) - ;e : f(e) f(e);Fin ; sino ExisteFCMFALSO;Fin ; 185hasta que (no CircuitAbs)(no ExisteFCM);sino ExisteFCM FALSOFin.VII.5 FLUJO MXIMO DE COSTO MNIMOSea R = (V, E {er}, a, c)con er = (p, s)y a: E +, c: E +, donde + representa a los reales no negativos.El problema de hallar el flujo mximo de costo mnimo en R = (V, E, a, c) consiste en buscar un vector f tal que:i) f sea un flujo en G(V,E {er})ii) 0 f(e) c(e), eE.iii) f(er) sea mximo.iv) eE a(e)*f(e) sea mnimo bajo i), ii) y iii).Es decir, se busca entre todos los flujos factibles en R = (V,E {er}, a, c) aquellos con f(er) mximo, y entre ellosaquelquetengaelcostomnimo.Tenemosentoncesunamezcladedosproblemasyavistos:FlujoMximoyFlujodeCosto Mnimo.Sean F = maxf(er) sobre R = (V,E {er}, a, c)yA = eE a(e) + 1.ExistendosformasdellevarelproblemadeFlujoMximodeCostoMnimoaunproblemadeFlujodeCostoMnimo :a) Podemos considerarR=(V, E , a, b, c) donde:E = E {er};a(er) = -A; c(er) = ; eE: (a(e) = a(e), c(e) = c(e)); eE: b(e) = 0As,dando el valor negativo - A 0, entonces e:I(e) = T(e),T(e) = I(e), d(e) = -a(e).Observacin:En este caso R (f) no tendr arcos asociados a er.Definicin VII.5.2LlamamosunaSolucinParcialalproblemadeFlujoMximodeCostoMnimo,aunasolucinptimaalproblema P(v), v+ definido como:186min a * fs.a.M * f = 0f(e)c(e), eEf(er) vf(e) 0, eEDonde M es la matriz de incidencias de (V, E {er})El dual D(v) de este problema sera entonces:max w = v.(er) - ec(e).(e)s.a.(T(e)) - (I(e)) - (e) a(e), eE(s) - (p) +(er)=0(e) 0,eEProposicin VII.5.1Si (, ) es solucin ptima de D(v) entonces:(e) = Max eE [0; (T(e)) - (I(e)) - a(e)]Demostracin:(e) debesermayoroiguala0,eE,adems,enD(v)cada(e)apareceenunanicarestriccin:larestriccinasociada al arco e.Luego se puede despejar:(e) (T(e)) - (I(e)) - a(e)como -c(e)0es el coeficiente de (e) en la funcin objetivo, concluimos que el mnimo valor que puede tomar (e) es MaxeE [0;(T(e)) - (I(e)) - a(e)] que corresponde a su cota inferior.Proposicin VII.5.2Sea f una solucin factible a P(v), entonces:f es solucin ptima a P(v) si y slo si R (f) no tiene circuitos absorbentes si y slo si xV puede hallarse valores(x) tal que:(1)0 < f(e) < c(e) (T(e)) - (I(e)) = a(e)(2)(T(e)) - (I(e)) > a(e) f(e) = c(e)(3)(T(e)) - (I(e)) < a(e) f(e) = 0.Demostracin:Supongamosque R (f)tieneuncircuitoabsorbenteC,veremosqueenesecasofnopuedesersolucinptimaaP(v).Por ser C un circuito absorbente:eC [d(e)] < 0. Sean C+ = C , C- = C + = {eE/ eC+ } , - = {eE/ eC- }e+ a(e) - e- a(e) < 0, ademse- f(e) > 0 , ye+ f(e) < c(e)luego = Min { Min e+ [c(e) - f(e)],Min e- [f(e)]} > 0,y entonces el nuevo flujo g:g(e) =f(e) + , si e+ 187g(e) =f(e) -, si e-g(e) =f(e), si e+-es factible a P(v)ysucosto :a*g = eE a(e)*g(e) =ea(e)*(f(e)+)+ + ea(e)*(f(e)-) + ea(e)*f(e) = e Ea(e)*f(e)+ e e a(e)- a(e)+ ( ( >0, de forma que el vrtice s sea una raz y entonces podemos asegurar que existe distancia mnima de s a x,xV.En otras palabras, podemos encontrar valores (x), xV tales que:(T(e)) - (I(e)) d(e), eEAs, si eentonces (T(e)) - (I(e)) d(e) = a(e).(*)si e entonces (T(e)) - (I(e)) d(e) = -a(e)(I(e)) - (T(e)) -a(e)(T(e)) - (I(e)) a(e) (**).Luego,si 0 < f(e) < c(e),por (*) y (**):(T(e)) - (I(e)) = a(e)q.e.d. (1)si (T(e)) - (I(e)) > a(e),negando (*) e f(e) = c(e) q.e.d(2)si (T(e)) - (I(e)) < a(e),negando (**) e f(e) = 0 q.e.d. (3)Supongamos por ltimo que disponemos de valores (x), xV,que satisfacen las condiciones (1), (2), (3).Definamosg(e)= Max [ 0,(T(e)) - (I(e)) - a(e)], eEyg(er) = (s) - (p)Entonces (,g) es solucin factible de D(v), el dual de P(v).Las condiciones de holgura complementaria entre P(v) y D(v) seran:i) f(e) < c(e) g(e) = 0.ii) f(e) > 0 (T(e)) - (I(e)) - g(e) = a(e)i)g(e) > 0f(e) = c(e)ii) (T(e)) - (I(e)) - g(e) < a(e) f(e) = 0Al verificar que efectivamente f y(,g) satisfacen estas condiciones, se habr demostrado que cada una de ellas essolucin ptima a su respectivo problema.i) Sig(e) > 0 ( por definicin)(T(e)) - (I(e)) > a(e) ( por (2) )f(e) = c(e)ii) Si (T(e)) - (I(e)) - g(e) < a(e)( por definicin) g(e) = 0 (T(e)) - (I(e)) < a(e)( por (3) )f(e)= 0.i) Negando i ): Si g(e) = 0f(e) < c(e).ii) Negando ii ):Si f(e) > 0 (T(e)) - (I(e)) - g(e) = a(e)VII.5.1ALGORITMOS PARA EL PROBLEMA DE FLUJO MXIMO DE COSTO MNIMOFormularemosacontinuacindosversionesdelalgoritmodebusquedadeFlujoMximodeCostoMnimo,conocidotambincomoPrimal_DualypropuestoporFord&Fulkerson,basadasencadaunadelascondicionesdelaProposicin VII.5.2.188Primera Versin.Se busca partiendo de fo:f(e) = 0, eE,construir una secuencia f 1, f 2, , f k, factibles en R = (V,E {er}, a,c),dondecadafi (er)crezcamontonamentehastaalcanzarelvalormximof k (er)=F.Cadasolucinparcialf iserptima al problema P(f i (ur)).Al construir R (f i) entonces sta ser sin circuitos absorbentes.Para pasar de f i a f i+1, se busca el camino ms corto de s a p en R (f i).Este camino corresponder a una cadena deaumento de s a p de costo mnimo en R = (V, E {er},a,c) ,y su distancia corresponder al aumento mnimoencosto porunidad de flujo.Si no existe camino de sapen R (f i), entonces noexistecadenadeaumentoenR=(V,E {er},a,c),luego f i es ptimo.El algoritmo, presentado de manera informal, sera el siguiente:PRIMAL-DUAL (VERSIN 1): {Flujo Mximo de Costo Mnimo I};{ Entradas: V, E, I, T, s, p, a, c, er; Salidas: f, ExisteFMCM }.Comienzof(e) 0, eE ;Camino VERDADERO;ExisteFMCM VERDADERO;Mientras( Camino y ExisteFMCM)hacer:ComienzoCONSTRUIR R (f);Si (C tal que C es un Camino Mnimo de s a p (Csp) en R(f) )entoncesComienzo-SeaelconjuntodearcosquecorrespondenaC{er}enR=(V,E{er},a,c),con=+- donde + es el conjunto de arcos de con la misma direccin que er; Min [ Min e+ [c(e)-f(e)], Min e- [f(e)]]; { >0 }Si ( = )entoncesExisteFMCM FALSOsinoPara todo eEhacerSegne hacerComienzoe+: f(e) f(e) + ;e-: f(e) f(e) - ;Fin ;FinsinoCamino FALSO;Fin ;Fin.Ejemplo de construccin de R (f ):Dada la red de la figura VII.2 donde los pares sobre los arcos son (a(e), c(e)), s=1, p=5.41(3,, 2)(8, 10)(1, 7)(6, 8)(2, 3)(0, )23(3, 3) 5(0, 6)e rfigura VII.2 189Para el flujo f(1,2)=f(2,3)=f(3,4)=f(4,5)=f(5,1)=2; f(1,3)=f(3,2)=f(2,4)=0, R( f )sera:Segunda Versin (para el problema de Flujo Mximo de Costo Mnimo).Veremos a continuacin una presentacin algo distinta del mismo algoritmo(ademslamsutilizada). Esta otrapresentacinestbasadaenlasegundapartedelaProposicinVII.5.2.Ladiferenciaesencialesquelabsquedadelcamino ms corto de s a p en R (f) se simplifica gracias al conocimiento de los valores de (x) de la iteracin anterior.Dispondremos en cada iteracin de una solucin fptima de P(f(er)),con valores de (x) que satisfacen:(1) 0 < f(e) < c(e)(T(e))- (I(e)) = a(e).(2) (T(e)) - (I(e)) > a(e)f(e) = c(e).(3) (T(e)) - (I(e)) < a(e)f(e) = 0.Cada iteracin consta de dos etapas:i) Cambio de flujo.Se construye R=(V,E,c)dondeE = { eE/ (T(e)) - (I(e)) = a(e) }y en esta red se busca el flujo mximo.Noteque los arcos sobre esta red son aquellos que estaran en la arborescencia de distancias mnimas en R (f). Evidentemente fno es un flujo en R, pero sin embargo, el procedimiento de bsqueda de cadenas de aumento y de modificacin del flujopermanece vlido al ser trasladado a R.ii) Cambio de las variables duales().Cuando no se puede aumentar ya el flujo ( con f solucin ptima de P(f(ur)),sea Y el ltimo conjunto de vrticesmarcados por FlujoMax, tenemos que:sY, pY.e+(Y) E f(e) = c(e)e- (Y) E f(e) = 0SeanA+ = { e+(Y) / (T(e)) - (I(e)) < a(e) }A- = { e- (Y)/ (T(e)) - (I(e)) > a(e) }Si A+ = e+(Y):(T(e)) - (I(e)) a(e)f(e) = c(e)A- = e-(Y): (T(e)) - (I(e)) a(e)f(e) = 0Por lo tanto, si A+ A- = entonces +(Y) es un corte saturado y el flujo actual es ptimo a P(F).Si A+ A- entonces, sea = Min { Min eA+ [a(e) - (T(e)) + (I(e))] , Min eA- [(T(e)) - (I(e)) - a(e)]}41-38 36223-350 1 -2 0figura VII.3190Es claro que > 0 y as los valores(x) =(x),si xY(x) = (x) + ,si xYsatisfacen (1), (2) y (3) y adems representan las distancias mnimas de s a x en la nueva red R (f).El segundo algoritmo para resolver el problema del Flujo Mximo de Costo Mnimo es entonces:FlujoMaxCostoMin (Versin 2):{Flujo Mximo de Costo Mnimo II};{ Entradas: V, E, I, T, s, p, er, a, c; Salidas: f, ExisteFMCM }.Comienzof(e) 0, eE;Dijkstra ( V,E,I,T,a,s;,A,EsRaiz); { Valores iniciales de , con a(e) > 0, e }Si (EsRaiz)entoncesRepetirExisteFMCM FALSO;E { eE/ (T(e)) - (I(e)) = a(e) };FlujoMax (V, E, I, T, er, s, p, b, c, f; f, Y, MODIF, ExisteFM);Si (ExisteFM) entonces { Existe un flujo mximo en la red }ComienzoA+ { e+(Y)/ (T(e)) - (I(e)) < a(e) };A- { e-(Y)/ (T(e)) - (I(e)) > a(e) };ExisteFMCM VERDADERO;Fin;Si ( A+ A- )y (no ExisteFMCM) entoncesComienzo+ Min eA+[a(e) - (T(e)) + (I(e))];{ Si A+ = entonces+ = }- Min eA-[(T(e)) - (I(e)) - a(e)]; {Si A- = entonces- = }Min {+, -};{ > 0 }Para todo xV tal que xYhacer:(x) (x) + ;Fin ;hasta que (no ExisteFMCM) (A+ A- = );sino ExisteFMCM FALSO;Fin.La terminacin de ambos algoritmos la justifican los mismos argumentos que el algoritmo de Flujo Mximo en el cual sebasan.VII.6EJERCICIOS1.UseelalgoritmoCaminoMinGeneralparaencontrarladistanciayelcaminomscortodelvrtice6acualquiervrtice del siguiente grafo: 1912.Use el algoritmo CaminoMinGeneral para encontrar el camino ms corto del vrtice 6 a cualquier vrtice del grafodel ejercicio 1 modificando el costo del arco (6,8) por 14. Existe un circuito absorvente?.3.El siguiente grafo contiene un circuito absorvente?. Aplique el algotirmo CaminoMinGeneral.4.Determinar una solucin ptima del problema de flujo mximo en la siguiente red. Encontrar un corte de capacidadmnima.5.Considere la siguiente red donde las capacidades son los nmeros en las aristas:123456789182-10545615472 524figura VII.43-502-4 -26 -2 -1-1511 3-13-32 -1-1 4-312-18 -2figura VII.510201010354845736175223510102010u rfigura VII.619241(3, 0, 2)(8, 0, 10)(1, 0, 7)(6, 0, 8)(2, 0, 3)(0, 6, )figura VII.923(3, 0, 3)a)Determine un flujo mximo de s a p.b)Proponga una variante simple del algoritmo de Ford y Fulkerson que se aplique de manera directa en el casode redes no orientadas.6.En la red siguiente los dos nmeros asociados a cada arco corresponden el primero y el segundo respectivamente auna cota inferior y una cota superior del valor del flujo en ese arco.7.Halle un flujo de costo mnimo enla siguiente red donde al lado decada arco se representa (a(e), b(e),c(e)):8.Resuelva el siguiente problema de transporte:AijB1 = 15 B2 = 20 B3 = 30 B4 = 35C1 = 25 8 5 6 7C2 = 25 8 2 7 6C3 = 50 9 3 4 89.Determine un flujo mximo de costo mnimo en la red del ejercicio 7, tomando a s=1, p=4 y reemplazando la terna de(p,s) por (0,0,6) (todo los b(e) deben ser cero como se muestra). Utilice los dos algoritmos dados.21353321144u rs pfigura VII.7ps(0, 2)(0, 2)(1, 2)(0, 3)(0, 2)(0, )figura VII.812a)Determine un flujo factible partiendo del flujo cero.b)A partir del flujo f(s,1)=f(1,2)=f(2,p)=f(ur)=2,f(1,p)=f(s,2)=0, aplique el algoritmo de Ford yFulkerson para hallar un flujo mximo.