Escolar Documentos
Profissional Documentos
Cultura Documentos
ndice
1- Definio e Conceitos Bsicos sobre Grafos 1.1 Conceitos Bsicos 1.2 Caractersticas Estruturais 2- Conceituao de Redes 3- Minimizao de Redes 3.1 Algoritmo de Kruskal 3.2 Algoritmo de Prim 4- Algoritmos de Caminho Mnimo 4.1 Algoritmo de Dijkstra 4.2 Algoritmo de Ford, Bellman e Moore 4.3 Caminho mais Confivel 4.4 Algoritmo de Floyd 4.5 Algoritmo de Dantzig 4.6Algoritmo de K-caminhos mnimos 4.7Desempenho dos Algoritmos 5- Algoritmos de Fluxo Mximo 5.1 Conceitos Bsicos 5.2 Algoritmo de Aumento de Fluxo 5.3 Algoritmo de Ford /Fulkerson 5.4 Algoritmo de Dinic 5.5 Algoritmo DMKM 5.6 Modificaes na Estrutura da Rede 5.7 Anlise dos Algoritmos 6- Algoritmos de Custo Mnimo 6.1 Algoritmo Busacker e Gowen 6.2 Anlise dos Algoritmos de custo Mnimo 7 - Roteirizao Bibliografia Lista de Exerccios
pag 1 1 2 2 4 4 6 6 7 9 11 12 13 13 14 15 15 17 19 20 21 22 23 24 24 26 27 28 29
e) Uma cadeia uma seqncia de arcos (orientados ou no). O tamanho de uma cadeia o nmero de arcos que a compem. f) Um caminho uma cadeia em que todos os arcos tem a mesma direo. g) Um ciclo uma cadeia cujo vrtice inicial e final o mesmo ( cadeia fechada). h) Um circuito um caminho cujo vrtice inicial e final o mesmo.
2 -Conceituao de Rede
De uma forma geral uma rede um grafo com um ou mais valores associados a cada arco e algumas vezes ao ns. G = {X,A} R = {X,A,} (grafo) ( rede)
onde X = conjunto de ns ( X = n ); A = conjunto de arcos (A = m); = parmetros associados aos elementos do conjunto A
Exemplos de Rede: Ns ou Vrtices intersees aeroportos estaes de bombeamento Arcos rodovias linhas areas dutos Fluxo veculos avies fluidos
Os principais valores associados aos arcos a(i,j) so: a capacidade de fluxo u(i,j) que corresponde a capacidade mxima de fluxo que pode passar no arco; o custo c(i,j) no arco que pode ser considerado como um valor monetrio, a distncia percorrida ou o tempo de viagem no arco. fluxo no arco f(i,j);
Os problemas de otimizao de redes compreendem basicamente: Minimizao de Redes (rvore mnima) Caminho Mnimo Fluxo Mximo Custo Mnimo Roteirizao
Os problemas de Minimizao de Redes so aqueles em que se busca uma interligao de pontos de uma rede de forma que a soma total dos valores (custos) dos arcos utilizados para lig-los seja a menor possvel. Os problemas de Caminho Mnimo compreendem a determinao do caminho ou rota de menor tamanho (distncia, tempo ou um custo qualquer) entre dois ns de uma rede. Os problemas de Fluxo Mximo se referem s situaes em que se deseja avaliar a quantidade mxima de fluxo que pode ser enviada de um n de origem a um n de destino na rede. Os problemas de Custo Mnimo visam determinar os caminhos entre um par de ns (origem e destino) pelos quais deve ser distribudo um determinado fluxo com o menor custo possvel. Os Problemas de Roteirizao compreendem a busca de um itinerrio que se inicia e termina num mesmo ponto da rede passando por determinados pontos ou arcos desta rede. Para resolver estes problemas utilizam-se procedimentos chamados de algoritmos de resoluo, descritos a seguir. 4
3 - Minimizao de Redes
Os algoritmos de Minimizao de Rede (Minimum Spanning Tree Problem) tratam da determinao da rvore de valor mnimo em problemas de interligao de redes de comunicao, luz, gua, esgoto, dutovias, rodovias etc; com o objetivo de atender a todos os pontos de consumo(ns da rede) com um consumo mnimo de meios. Em problemas deste tipo a rede no orientada. Dois algoritmos podem ser utilizados: algoritmo de Kruskal algoritmo de Prim
Exemplo1: A rede a seguir representa as possveis ligaes rodovirias entre seis regies. Desejase verificar quais as ligaes que devero ser implantadas visando interligar todas as regies, porm, com uma quilometragem total mnima de estradas construdas. Os valores sobre os arcos representam as distancias entre as regies (x 102).
2
2
6
6 3
3
1 3
5
5
Fig1- Rede do exemplo 1 Passo 0 : Colocando os arcos em ordem crescente de tamanho tem-se: A* = { (3,4),(3,2),(1,2),(3,5),(6,5),(1,4),(3,6),(3,1),(2,6)} A= Passo 1 : A= {(3,4)} A* = {(3,2),(1,2),(3,5),(6,5),(1,4),(3,6),(3,1),(2,6)} Passo 2: Como n= 6 e o nmero de elementos de A menor que n-1, ento volta-se ao passo2; Passo 1: A = {(3,4),(3,2)} A* = { (1,2),(3,5), (1,4), (6,5), (3,6),(3,1),(2,6)} Passo 2: A n-1, passo2 Passo 1: A = { (3,4),(3,2), (1,2)} A* = {(3,5),(1,4),(6,5),(3,6),(3,1),(2,6)} Passo 2: A n-1, passo2 Passo 1: A = { (3,4),(3,2), (1,2), (3,5)} A* = {(1,4),(6,5),(3,6),(3,1),(2,6)} Passo 2: A< n-1, passo2 Passo 1: A = { (3,4),(3,2), (1,2), (3,5),(6,5}, o arco (1,4) no pode fazer parte do conjunto pois a sua incluso na rvore forma um crculo. A* = {(1,4),(3,6),(3,1),(2,6)} Passo 2: A= n-1, ento j encontramos a rvore mnima representada na figura a seguir, que possui um total de 12x102 km:
2
2
6
3
3
1
Assim, os algoritmos de Caminho Mnimo determinam a rota de menor tempo, distncia ou custo entre um par ou pares de origem e destino.
O Caminho timo aquele que apresenta uma seqncia de arcos conectando o n de origem e o n de destino de tal forma que a soma dos valores dos arcos no caminho minimizada.
Se o caminho mnimo entre um par de ns ento qualquer caminho que parte deste caminho tambm mnimo
Existem diferentes formulaes para um problema de caminho mnimo que so: a) de um n para outro n; b) de um n para todos os outros ns da rede; c) entre todos os ns da rede e d) K- caminhos mnimos entre dois ns. Existem basicamente dois tipos de estrutura de algoritmos para clculo de caminhos mnimos : rvores e matrizes. Nos algoritmos em rvore, determinam-se os caminhos mnimos de um n para todos os outros ns da rede ou simplesmente entre um par de ns. Neste tipo de algoritmo, a soluo obtida construindo-se passo a passo uma rvore de caminhos mnimos. Para se obter os caminhos mnimos de todos os ns para todos os outros ns da rede, utilizam-se os algoritmos com estrutura de matriz e neste caso os caminhos mnimos entre todos os pares de ns so obtidos simultaneamente. Na literatura pesquisada ( ver bibliografia) encontramos os seguintes algoritmos mais comumente utilizados, com estrutura em rvore: Dijkstra e Ford/Moore, e os algoritmos em matriz: de Floyd, Dantzig e Double Sweep.
O conceito de fechado e aberto est associado a impossiblidade de se encontrar um caminho melhor do que o j encontrado, assim enquanto o n no fechado ( ou rotulado) ainda possvel encontrar um caminho de menor valor da origem at este n.
Frmula de Recorrncia: d(x)i = min { d(x)i-1, d(y) + d(y,x)} (1) onde: d(x) i- tamanho do caminho da origem S at o n x ( na iterao corrente). d(y) - tamanho do caminho da origem S at o n fechado (y) d(y,x)- tamanho do arco (y,x)
Estrutura do algoritmo: Passo 1: Atribui-se um valor d(x) para cada um dos vrtices do grafo sendo: d(s)= 0 e d(x)= para todo n x s Considere y o ltimo n rotulado (fechado). Inicialmente o n s o nico rotulado e y= s. Passo 2 : Para cada n x no-fechado (aberto) redefine-se d(x) conforme a expresso 1. O n aberto que possuir o menor valor d(x) fechado e faz-se y = x. Passo 3 : Se o n de destino t foi fechado ento pare, um caminho de s para t foi encontrado. Se o t ainda no foi fechado volte ao passo2.
Os ns rotulados (fechados) formam uma arborescncia de raiz s e o caminho de s para qualquer n x contido em qualquer caminho um caminho mnimo de s para x. Assim se deseja-se saber os caminhos com origem em s para todos os demais ns da rede, tem-se que prosseguir com algoritmo at que todos os ns sejam rotulados. O algoritmo de Dijkstra foi desenvolvido em 1959 e posteriormente Dantizg (1960) e Nicholson (1960) desenvolveram o algoritmo de duas rvores de Dijkstra (Dijkstra two-tree algorithm), cuja idia construir rvores de caminhos mnimos de um n origem s e de um n de destino t simultaneamente. Logo, ao se chegar a um n comum o caminho mnimo entre s e t foi encontrado. Esta idia mostrou ser interessante do ponto de vista de tempo computacional, conforme foi constatado posteriormente por Helgason (1988).
1. No passo 2, aplica-se a expresso 1 em todos os vrtices, no somente nos ns no rotulados (abertos). Assim, tanto os ns j rotulados quanto os no rotulados podem ter seus valores reduzidos. 2. Se um n rotulado teve seu valor reduzido, ento desconsidere (desrotule) o arco anteriormente incidente este n. 3. Termine o algoritmo somente depois que todos os vrtices foram rotulados e se no no houver modificaes no valor dos caminhos. Algumas modificaes foram posteriormente sugeridas por outros autores como Steenbrink, Esopo e Pape (1980) para melhorar o desempenho computacional deste algoritmo. No mtodo de Ford (1956), Moore(1957) e Bellman ( 1958), um n pode ser considerado piv inmeras vezes pois a cada iterao um caminho descoberto. Esta fonte de ineficincia em tempo de processamento para chegar a soluo pode ser reduzida pelas seguintes heurticas sugeridas por Esopo e Pape: 1 - Se um n n qualquer nunca foi rotulado ele deve ser o ltimo a ser considerado piv. Caso contrrio, se o n n j foi rotulado ou examinado deve ser considerado como um dos primeiros a ser pivoteado. 2 - A razo para se colocar um n j examinado de piv para reexaminar aqueles que alcanam n imediatamente, reduzindo o tempo de chegar a soluo final. Resumo do procedimento de Esopo e Pape: 1. d(s)= 0 s o n rotulado (piv), ento y=s;
10
2. min d(s,j) j o novo piv, ento y=j; 3. se algum n que foi piv modificado ento o prximo a ser avaliado. Seno toma-se o n de valor mnimo como piv.
Ps2
2
P2t
Figura 3 - Rede de comunicao (Exemplo 2) Probabilidade C(s,1,2.t) estar ativo = Ps1. P12. P2t Assim determinar o caminho mais confivel de s a t em R equivale a maximizar Pij
( i , j ) C '
Seja P =
( i , j ) C '
ij
Fazendo-se: 11
log P = log
( i , j ) C '
P = log P
ij
(i , j ) C '
i, j
log P
(i , j ) C '
i, j
log P
( i , j ) C '
i, j
Desta forma, o problema acima pode ser entendido como um problema de caminho mnimo. Num problema de encontrar um caminho de menor risco, deve-se atribuir a cada arco a probabilidade de no ocorrncia de algum tipo de evento de risco. E assim maximizar a probalidade de no ocorrncia do evento.
onde dijk o caminho entre os ns i e j na k-sima matriz de iterao. Determina-se inicialmente uma matriz D0 cujo os valores correspondem aos tamanhos dos arcos se estes existem seno os valores so . Depois calcula-se D 1 de D 0 e D 2 de D1 at se obter Dn de D n-1 . A matriz Dn a matriz final que apresenta os caminhos mnimos entre todos os ns da rede. A idia bsica deste algoritmo verificar a cada iterao se a incluso de um n k intermedirio no caminho de i para j pode reduzir o tamanho de um caminho j determinado:
k j i
12
Estrutura do Algoritmo Passo 1 - Numere os vrtices do grafo de 1,2..n. Defina a matriz D0 , cujos valores d0ij correspondem ao tamanho (valor) dos arcos i,j se existir o arco no grafo; caso contrrio considere dij = , e faa os elementos da diagonal da matriz, dii=0 para todo i. Passo 2 - Para cada k = 1..n determine sucessivamente os elementos da matriz Dk a partir dos elementos da matriz Dk-1 utilizando a expresso 2. Este processo repetido at k=n, e neste caso o valor do caminho mnimo de todos os pares i,j do grafo esto definidos na matriz Dn.. Note que diiK = 0 para todo i e para todo k, consequentemente, os elementos da diagonal das matrizes no necessitam ser calculados. Alm disso, dikk-1 = dikk e dkik-1 = dkik para todo i= 1,2..n. Ou seja, os elementos da linha e da coluna k da matriz Dk so iguais ao da matriz Dk-1, isto acontece porque o vrtice/n k no pode ser um n intermedirio de um caminho que se inicia ou termina nele mesmo, desde que no existam ciclos negativos. Assim, em cada matriz Dk somente (n-1)(n-2) elementos que no esto nem na diagonal nem na k-sima linha e coluna precisam ser calculados. Para se identificar os ns que fazem parte dos caminhos cujos valores so dados pela matriz Dn , tem-se por opo guardar a cada iterao os arcos do caminho ou utilizar uma matriz que guarda a cada iterao o penltimo n que forma aquele caminho, Logo, a partir desta matriz por um processo de roteamento pode-se identificar os ns que formam aquele caminho.
Matriz de Roteamento: Tambm chamada de matriz de uni-roteamento, a Matriz de Roteamento permite a descrio do caminho mnimo entre cada par de vrtice, e baseia-se no princpio de que um vrtice k pertence a um caminho dij se e somente se dik + dkj = dij . Considerando-se que a matriz de roteamento formada pelos penltimos vrtice dos caminhos entre os pares de vrtice do grafo e definido-se este elemento como k , fazse: rij =k (elemento da matriz de roteamento) dij = ? rik = .......rikm =i Ou seja, vai-se substituindo o penltimo vrtice a cada caminho at que se chega ao n inicial i do caminho procurado. 13
Se considerarmos que um caminho tem m ns intermedirios, iniciando-se pelo penltimo k, vamos chegar ao n de origem , ao encontrarmos o elemento km. Centro de um Grafo O centro de um grafo corresponde ao vrtice x do grafo que apresenta a menor das distncias mximas aos demais vrtices do grafo. Este centro definido a partir do resultado do algoritmo de Floyd, verificando-se na ultima matriz (Dn ) para cada vrtice qual o vrtice que tem o menor valor da maior distncia aos demais vrtices do grafo. Mediana de um grafo A mediana de um grafo corresponde a um vrtice x com o menor somatrio das menores distancias aos demais vrtices do grafo. Para obt-la utiliza-se o algoritmo de Floyd somando-se os valores de cada linha da matriz final do algoritmo e o vrtice que corresponde a mediana aquele que tem a menor soma. _
Estrutura do algoritmo: Passo 1: Numere os vrtices do garfo de 1,3..n. Defina a matriz D0 , conforme descrito para o algoritmo de Floyd. Passo 2 : Para k = 1..n determina-se a cada iterao os elementos de uma matriz Dk = k x k da seguinte forma: dkkj = min { d0ki + dk-1ij } dkik = min { dk-1ij + d0jk } dkij = min { dkik + dkkj , dk-1ij } para: i= 1,2..k-1 e j = 1,2..k-1 (3) para: i= 1,2..k-1 e j = 1,2..k-1 (4) para i= 1,2..k-1 e j = 1,2..k-1 (5)
Para identificar os ns que compem cada caminho, utiliza-se o mesmo processo de roteamento definido no algoritmo de Floyd.
14
16
1 s 2 Com base nos conceitos acima, os problemas de Fluxo Mximo podem ser traduzidos em um problema de Programao Linear numa rede (X,A,c ) da seguinte forma:
max V
f
i
si
f is = V
i
Para o n de destino:
f
i
ti
f it = V
i
Para qualquer n s ou t:
f
i
ji
f ij = 0
i
Para todo arco: 0 f(i,j) c(i,j) Onde: f(i,j) - fluxo no arco (i,j) c(i,j) - capacidade de fluxo do arco(i,j) V - fluxo mximo na rede As trs primeiras restries referem-se lei de conservao de fluxo e a terceira a de viabilidade de passagem de um fluxo num arco qualquer do grafo. O princpio geral de um algoritmo de Fluxo Mximo a determinao de caminhos de aumento de fluxo, conforme veremos a seguir.
17
C=5
C=3
C=4
C= 6
Ao se alocar um fluxo num caminho da rede a capacidade dos arcos utilizados modificada _ passa a ser uma capacidade residual dada pela diferena entre a capacidade real do arco e o fluxo corrente no arco. No caso do arco gargalo, como o fluxo no caminho dado pelo valor da sua capacidade, diz-se que ele est saturado e, no caso a sua capacidade residual zero. Portanto, para utilizao de um algoritmo de aumento de fluxo faz-se necessrio entender o desenvolvimento de uma rede residual.
Rede Residual Intuitivamente, dada uma rede e um fluxo passando nesta rede, a rede residual consiste dos arcos que ainda admitem uma quantidade de fluxo, ou seja, que no foram saturados. Os arcos numa rede capacitada podem ser divididos em dois conjuntos: I conjunto dos arcos que podem ter seu fluxo aumentado; R- conjunto dos arcos nos quais o fluxo pode ser reduzido; Conceitualmente, temos: conjunto I formado pelos arcos que possuem f(x,y)< c(x,y), pois estes arcos podem ter seu fluxo aumentado de r(x,y)= c(x,y)-f(x,y), que a capacidade residual do arco. 18
conjunto R formado pelos arcos que possuem f(x,y)>0, tambm chamados de reduzveis.
Um arco a(x,y) que tenha 0< f(x,y) < c(x,y) ,pertence a ambos os conjuntos I e R. Dentro destes conceitos uma rede residual construda da seguinte maneira: se um arco a(x,y)I, ento construa este arco na rede residual rotulando-o com a sua capacidade residual r(x,y)= c(x,y)-f(x,y) ; se a(x,y) R, ento construa um arco reverso a(y,x) na rede residual rotulando-o com r(y,x)= f(x,y), a capacidade de reduo.
f=2
s
f=2
1
f=2
2
f=2
f=2
f=2
s
r=2
1
r=2
2
r=2
f=2
Estrutura do algoritmo de aumento de fluxo: Este algoritmo utiliza um processo de rotulao em que cada n recebe dois rtulos: e(x) - representa a quantidade mxima de fluxo adicional no caminho pesquisado de S para o n x. p(x) o n antecessor de x no caminho pesquisado.
Quando se encontra o n de destino t o valor de e(t) representa a quantidade mxima de fluxo no caminho encontrado. 19
Passo1 - Construa uma rede residual correspondente ao fluxo corrente ( fluxo atual vivel). Comece rotulando s com: e(s)= e p(s) = 0. Todos os outros ns so inicialmente no-rotulados e todos os arcos so no-marcados. Passo 2 Selecione um n x que ainda no foi rotulado. Se no existe nenhum ento pare, neste caso no existe possibilidade de encontrar caminhos de aumento de fluxo de s para t. Caso contrrio v para o passo 3. Passo 3 - Se o arco a(x,y) um arco que pertence ao conjunto I ento rotule y com e(y) = min{e(x),r(x,y)} e p(y)=x. Se o n t rotulado, ento um caminho de aumento de fluxo de s para t foi encontrado, caso contrrio volte ao passo2.
Estrutura do algoritmo: Passo 1 Considere s o n fonte (origem do fluxo) e t o n de destino. Selecione qualquer fluxo vivel de s para t, isto qualquer conjunto de valores de f(x,y), que satisfaa as restries de capacidade e de continuidade de fluxo (ver pag. 16 ). Se tal fluxo inicial no conhecido faa o fluxo inicial f(x,y)=0 para todo arco a(x,y). Passo 2 - Construa a rede residual relativa ao fluxo corrente. Passo 3 - Utilize o algoritmo de aumento de fluxo. Se nenhum caminho entre s e t for encontrado pare; o fluxo corrente mximo. Caso contrrio aloque este fluxo no caminho encontrado, apague todos os rtulos e volte ao passo 2.
Modificaes devidas a Edmonds -Karp Para assegurar que o algoritmo de Fluxo Mximo chega a uma soluo tima aps um nmero finito de caminhos de aumento de fluxo, Edmond e Karp sugeriram que no passo 3 para encontrar um caminho de aumento de fluxo, os ns fossem inicialmente 20
pr-rotulados a partir da origem na ordem em que fossem aparecendo. Assim, a origem recebe o rtulo 1, os ns incidentes a esta recebem rtulo 2 e assim por diante. Se o processo de rotulao feito desta forma, o caminho de ns marcados (primeiro rotulado, primeiro considerado) conectando qualquer n de origem para o destino conter to poucos arcos quanto possvel.
Rede em Nveis Uma rede em nveis RN = (XN,AN) uma rede acclica obtida da rede original, na qual todos os ns XL so particionados em nveis (ou camadas) X1, X2 .. XN . O primeiro nvel, X1, contm apenas a fonte s , ou seja, X1 ={s}.O segundo nvel, X2, contm todos os ns que so imediatamente sucessores de s. O terceiro nvel consiste de todos os ns que so imediatamente sucessores dos ns do segundo nvel. E assim sucessivamente, o i-simo nvel Xi consiste de ns que esto uma distncia de i-1 nveis de s. O nvel Xn corresponde ao n de destino t, ou seja, Xn = {t}. Assim todo n de uma rede em nveis est num caminho de s para t e todos os caminhos so do mesmo cumprimento ( em termos do nmero de arcos).
21
Estrutura do Algoritmo de Dinic Passo 1 -Definir uma rede em nveis considerando o fluxo corrente. Se este fluxo existir considera-se a rede residual correspondente. Caso contrrio o fluxo inicial zero. Se no for possvel definir uma rede em nveis, pare; a rede j foi saturada e F o fluxo mximo e v para o passo 3. Passo 2 Saturar a rede em nveis, ou seja, saturar todos os caminhos possveis de st, definindo-se um fluxo de saturao Fr ( r= iterao). Volte ao passo 1. Passo 3 Somar os fluxos de cada iterao F = F1 + F2 ....
Procedimento para encontrar um Fluxo de Saturao na Rede em Camadas 1. Para cada n v da rede em camadas verifica-se o fluxo mximo (inpot (v)) que chegar ao n e a quantidade mxima de fluxo que pode sair do mesmo (outpot (v)). 2. potencial de cada n ento definido como o menor entre o total de entrada (inpot (v)) e o total de sada (outpot (v)). 3. Identifica-se o n r de menor potencial ( poten (r) ). E toma-se r como o n de referncia. 4. Distribui-se nos arcos de sada ( sucessores) do n r a quantidade de fluxo= poten(r) e puxamos dos arcos anteriores ( antecessores) do n r a mesma quantidade de modo a alcanar os ns s e t. Feito isto estabelecemos um fluxo de saturao.
22
5. Retira-se da rede todos os arcos saturados da rede em nveis. O efeito da retirada ser a reduo do potencial de vrios ns da rede e nmero de arcos. Atualiza-se os valores do potencial dos ns e inicia-se uma nova iterao. Os procedimentos definidos por Dinic, Malhotra e outros visam otimizar o tempo computacional do algoritmo de Fluxo Mximo.
1- Vrias Fontes e/ou vrios destinos: Considera-se uma fonte nica fictcia ligando-se atravs de arcos tambm fictcios s fontes (origens) da rede real, o mesmo se faz quando existem vrios destinos criandose um destino nico , como na figura abaixo: S1 T1 T S2 T2
S3
A capacidade dos arcos que ligam a fonte fictcia s fontes reais igual a capacidade destas fontes quando as mesmas forem centros produtores; o mesmo se define para o destino no caso de serem centros consumidores. Se no houver estes valores ento a capacidade destes arcos pode ser considerada como infinita. 2 - N com Capacidade Na maioria dos problemas de Fluxo Mximo as capacidades so atribudas aos ns, porm podem existir problemas nos quais os ns tenham capacidades, ou mesmo,
23
custos. Neste caso, estes ns devem ser substitudos por um arco com capacidade igual ao do n.
Ck
Ck k k
3- Redes com limites inferiores Em algumas situaes existem limites inferiores (lij) de capacidade associados aos arcos, significando que no mnimo lij unidades de fluxo devem passar do n i para o n j. Isto complica a utilizao do algoritmo pois inicialmente no se tem um fluxo vivel igual a zero. Para encontrar um fluxo inicial vivel, de tal forma que se possa utilizar o algoritmo de fluxo mximo, estende-se a rede utilizando da seguinte maneira: 1. 2. 3. 4. acrescente a rede dois ns (u e v); acrescente um arco de t para s tendo capacidade infinita; seja a(i,j) um arco com limite inferior diferente de zero, lij; crie um arco de u para j com capacidade lij e um arco de i para v com a mesma capacidade; 5. considere a capacidade do arco a(i,j) = cij - lij; como todos os arcos tem na rede estendida limite inferior igual a zero, o algoritmo de fluxo mximo pode ser aplicado. Resolvendo-se o fluxo mximo de u para v obtm-se um fluxo vivel inicial.
atravs de caminhos com um nmero mnimo de arcos, ento estaremos dimuindo o tempo de procura. As modificaes introduzidas por Dinic fizeram com que o algoritmo original passasse a ter um desempenho de ordem O(n2m) , tornando-o mais simples e mais eficiente particularmente quando a rede densa. Posteriormente a modificao introduzida por Malhotra et ali, fez com o algoritmo passasse a ter um desempenho de ordem O(n3).
Etapas do algoritmo:
25
Passo1 - Encontra-se um caminho mnimo de s para t utilizando um algoritmo de caminho mnimo e v pra o passo2. Se no for possvel encontrar um caminho - pare, no h soluo para o problema. Passo 2 - Envia-se tantas unidades de fluxo quantas forem possveis de s para t neste caminho. Se o fluxo v foi atingido - pare. Caso contrrio, v para o passo 3 Passo 3 - Modifica-se a rede em funo do fluxo alocado em cada caminho encontrado e volte ao passo 1.
Rede Modificada Chama-se de Rede modificada a rede G* com a mesma estrutura de G mas com as capacidades modificadas u*ij e os custos modificados C*ij definido como segue. 1- Se existe um fluxo fij 0 alocado num arco qualquer a(i,j), constri-se um arco fictcio de sentido inverso com capacidade igual ao fluxo fij ; isto : u*ji = fij se fij > 0;
2- Associa-se este arco fictcio um custo -cij , ou seja, o mesmo custo do arco existente porm com valor negativo. Este custo negativo porque a utilizao de um arco de sentido inverso significa uma reduo do fluxo que passa no arco original e, portanto trata-se de uma reduo de custo. c*ji = -cij se fij >0
3- Se num arco qualquer est alocado um fluxo fij,, e este no est saturado, ento, a capacidade deste arco passa a ser capacidade residual u*ij = uij - fij . O custo de enviar uma unidade de fluxo no arco no saturado o mesmo custo do arco original. Isto : c*ij = cij se fij 0
Esta forma incremental de alocar fluxos foi originalmente proposta por Busacker e Gowen. Este procedimento tambm chamado de mtodo dual de resolver problema de custo mnimo, uma vez que a primeira soluo vivel obtida uma soluo tima.
sob o ponto de vista de uma indstria, este algoritmo poderia ser utilizado para definir a melhor forma de transporte numa rede (unimodal ou multimodal) para chegar com o produto ao destino ( centro consumidor/depsito)
7 Roteirizao
Um problema de roteirizao compreende a definio de um itinerrio a partir de um ponto de uma rede passando por vrios outros pontos desta rede e retornando ao ponto inicial. O ponto inicial pode ser entendido como um depsito de uma indstria ou transportadora e, os outros pontos da rede como sendo os clientes ( pontos de entrega ou coleta). Assim, um caminho sai do depsito com mercadorias que devem ser entregues aos clientes a partir de um itinerrio programado que compreende a seqncia de clientes/entregas a serem feitas e retorna ao depsito inicial. Existem diferentes mtodos de roteirizao que compreendem heursticas para se chegar a uma soluo prxima da tima, um destas heursticas conhecida como o problema do caixeiro viajante.
7.1 Problema do Caixeiro Viajante Um itinerrio timo aquele que minimiza a distncia ou o tempo total percorrido. Para se obter este itinerrio/ roteiro utiliza-se um algoritmo conhecido como Problema do Caixeiro Viajante. Trata-se de uma heurstica de resoluo do problema que compreende a construo de uma tour atravs da insero de pontos a cada iterao.
Passos do Algoritmo: Passo 0 - Selecione um vrtice i qualquer da rede e identifique o vrtice j mais prximo a este e forme uma subtour: i - j i. Passo 1 - A cada iterao encontre um vrtice k que no esteja na subtour e que est mais prximo a qualquer vrtice da subtour. Se houver mais de uma possibilidade de insero deste vrtice k na subtour v para o passo 2. Passo 2 Identifique o arco (i,j) na subtourque minimiza a relao : d(i,k) + d(k,j) d(i,j). Insira este vrtice k entre i e j _ ou seja , substituindo o arco (i,j) pelos arcos ( i,k) e ( k,j), e volte ao Passo 1. Repita este processo at que todos os vrtices ( clientes) faam parte da tour.
27
Observe que no passo 2 ( iterativo) a insero do n cada se faz removendo o arco (i,j) de forma a minimizar o total de acrscimo com a incluso de (i,k) e (k,j) na tour.
Bibliografia:
BOAVENTURA NETTO, P. O. (1996) Grafos: Teoria, Modelos, Algoritmos , Editora Edgar Blucher Ltda, So Paulo. BAZARAA M.S., JARVIS J.J., SHERALI H. D., 1990, Linear Programming and
Network Flows, 2nd. Ed., John Wiley & Sons.
EDMONDS,J. E KARP, R.M., 1972, Theoretical Improvements in Algorithmic Efficiency for Network Flow Problems, J.ACM 19 ,pp248-264. KENNINGTON J. L., HELGASON R.V., 1988, Algorithms for Network
Programming, John Wiley & Sons.
MINIEKA E.(1990)Optimization Algorithms for Networks and Graphs, Ed. Marcel Dekker Inc. 1st and 2nd ed. NEWELL G.F., 1980, Traffic Flow On Transportation Network, MIT Press. POTTS R.B. , OLIVER R.M., 1972, Flows in Transportation Networks, Academic Press , New York. SHEFFI Y., 1985, Urban Transportation Network : Equilibrium Analysis with
Mathematical Programming Models, Prentice Hall Inc., Englewood Cliffs, N.J.
SHIER D. R., 1976, Interactive Methods for Determining the K- Shortest Paths in a Network, Networks, No 6,pp 205-229. STEENBRINK P.A., 1974, Optimization of Transport Networks, Ed. John Wiley & Sons. SYSLO M.M., NARSINGH D., KOWALIK J.S. 1983, Discrete Optimization Algorithms With Pascal Programs, Prentice Hall, Inc. Englewood Cliffs.. TAAFFE E. J., GAUTHIER H.L., 1973, Geography of Transportation, Foundation of Economic Geography Series, Prentice Hall, Inc., Englewood Cliffs, N.J. YEN J.Y., 1971, Finding the K- shortest Loopless Paths in a network, Management Science, vol.17, No 11, Jul.
28