Fluxo Máximo em Rede Letícia Rodrigue Bueno UFABC
Definição do Problema podemo interpretar um grafo orientado como um fluxo em rede e reponder pergunta obre fluxo de materiai; Conidere que: material percorre itema com origem (onde material é produzido) até orvedor t (onde é conumido); origem produz material em alguma taxa fixa; orvedor conome material na mema taxa; fluxo do material em qualquer ponto do itema: taxa na qual material e move; Aplicaçõe: líquido fluindo por tubo, peça por linha de montagem, corrente por rede elétrica, informaçõe por rede de comunicação, etc;
Definição do Problema areta orientada: canal para o material; cada canal tem capacidade máxima; vértice ão junçõe de canai (material flui em acumulação, exceto por origem e orvedor); conervação do fluxo : taxa na qual material entra no vértice deve er igual à taxa em que deixa vértice; Objetivo: calcular maior taxa na qual material pode er enviado dede a origem até o orvedor em violar retriçõe de capacidade;
Definição do Problema grafo conexo orientado G = (V(G), E(G)); c(u, v) 0: capacidade de (u, v) E(G); e (u, v) / E(G), então c(u, v) = 0; f(u, v): fluxo da areta (u, v); Retrição de capacidade: f(u, v) c(u, v); origem (ou fonte) e orvedor (ou umidouro) t; por implicidade, auma: caminho de a t paando por v, v V(G); Objetivo: encontrar fluxo máximo de para t; 16 13 12 9 7 t v 2 v 4 4 14 20 11/16 10 4 8/13 12/12 4/9 10 1/4 15/20 7/7 t v 2 v 4 4/4 11/14
Algoritmo de Ford-Fulkeron (1956) algoritmo do caminho aumentante ; caminho aumentante: caminho com capacidade diponível; Ideia do algoritmo: enquanto exitir caminho aumentante de até t, envia fluxo por ee caminho; fluxo total que ai da origem, denotado por f, tem valor: f = v V(G) f(, v) método de Ford-Fulkeron é guloo (chamado método porque encontrar caminho aumentante não é epecificado);
Algoritmo de Ford-Fulkeron 16 13 12 0/12 20 0/16 0/9 10 4 0/10 0/4 9 7 t v 2 v 4 4 14 0/13 0/20 0/7 t v 2 v 4 0/4 0/14
Algoritmo de Ford-Fulkeron 16 13 12 9 7 t v 2 v 4 4 14 20 4/16 10 4 13 4/12 4/9 20 7 t v 2 v 4 4/4 10 4 4/14
Algoritmo de Ford-Fulkeron 12 13 8 4 4 10 4 5 20 4 7 t v 4 2 v 4 4 10 11/16 13 4/12 4/9 7/20 7/7 t v 2 v 4 4/4 7/10 4 11/14
Algoritmo de Ford-Fulkeron 8 5 4 11 5 3 11 13 13 7 4 7 t v 11 2 v 4 4 3 12/12 11/16 4/9 10 1/4 8/13 15/20 7/7 t v 2 v 4 4/4 11/14
Algoritmo de Ford-Fulkeron v 12 1 v 3 5 5 11 11 3 5 15 8 5 3 4 7 t v 11 2 v 4 4 11/16 12/13 12/12 9 19/20 7/7 t v 2 v 4 4/4 10 1/4 11/14
Algoritmo de Ford-Fulkeron v 12 1 v 3 5 1 11 9 19 11 3 12 1 3 7 t v 2 11 v 4 4 11/16 12/13 12/12 9 19/20 7/7 t v 2 v 4 4/4 10 1/4 11/14
Algoritmo de Ford-Fulkeron o algoritmo mantém a eguinte invariante: Retrição de capacidade: f(u, v) c(u, v); Anti-imetria oblíqua: f(u, v) = f(v, u). Se, na prática, x unidade vão de u para v e y unidade vão de v para u, temo f(u, v) = x y e f(v, u) = y x; Conervação de fluxo: exceto para e t, a quantidade de fluxo que entra em um vértice é igual ao fluxo que ai do vértice.
Algoritmo de Ford-Fulkeron rede reidual G f (V(G), E f ): rede com capacidade c f (u, v) = c(u, v) f(u, v) e nenhum fluxo; pode acontecer de um fluxo de v para u er permitido na rede reidual, embora não eja permitido na rede original: e f(u, v) > 0 e c(v, u) = 0 então c f (v, u) = c(v, u) f(v, u) = f(u, v) > 0.
Algoritmo de Ford-Fulkeron 1 Ford-Fulkeron(G,,t): 2 inicializar fluxo f como 0 3 enquanto caminho aumentante p faça 4 ampliar fluxo f ao longo de p 5 retorne f
Algoritmo de Ford-Fulkeron 1 Ford-Fulkeron(G,,t): 2 para cada (u, v) E faça 3 f[u, v] = 0 4 f[v, u] = 0 5 enquanto caminho aumentante p de para t em G f tal que c f (u, v) > 0 para toda areta (u, v) em p faça 6 c f (p) := min{c f (u, v) (u, v) p} 7 para cada (u, v) p faça 8 f[u, v] = f[u, v]+c f (p) 9 f[v, u] = f[v, u] c f (p)
Algoritmo de Ford-Fulkeron caminho (linha 5) pode er encontrado com BFS ou DFS em G f (V(G), E f ); Tempo de execução: uando BFS ou DFS, é poível encontrar caminho aumentante em O(n + m); cada caminho encontrado reulta em novo fluxo a er acrecentado na rede; como o incremento de fluxo ão empre 1, o algoritmo tem tempo de execução O(m f ); e uamo BFS para encontrar caminho aumentante: algoritmo de Edmond-Karp (epecialização do método de Ford-Fulkeron);
Fluxo Máximo E e houver vária origen e/ou vário orvedouro? Acrecente uma uper-origem com areta indo para toda a origen, onde cada nova areta tem capacidade infinita; Acrecente um uper-orvedouro recebendo areta de todo o orvedouro, onde cada nova areta tem capacidade infinita; Dea forma, qualquer fluxo na rede original correponde a um fluxo na rede modificada e vice-vera;
Bibliografia Utilizada CORMEN, T.H.; LEISERSON, C.E.; RIVEST, R.L. e STEIN, C. Introduction to Algorithm, 3 a edição, MIT Pre, 2009.