1
1- Definio e Conceitos Bsicos sobre Grafos
Um grafo G = (X,A) uma estrutura composta por um conjunto X de elementos
chamados vrtices ou ns e um conjunto A de pares de vrtices, chamados arcos ou
arestas.
a) Orientado e no orientado
b) Valorado e no valorado
Um grafo valorado, quando existem valores atribudos a cada um dos seus arcos.
Exemplo disto ocorre quando se est representando uma rede viria e se atribui a
cada arco os valores correspondentes s distncia entre intersees ( vrtices).
c) Planar e no-planar
2
e) Uma cadeia uma seqncia de arcos (orientados ou no). O tamanho de uma
cadeia o nmero de arcos que a compem.
g) Um ciclo uma cadeia cujo vrtice inicial e final o mesmo ( cadeia fechada).
a) Um grafo conexo quando existe uma cadeia entre todos os pares de vrtices do
grafo ( fracamente conexo).
c) Grafo completo aquele onde cada n est conectado com todos os outros ns do
grafo.
e) Um subgrafo uma parte de um grafo, obtido pela supresso de vrtices e dos arcos
adjacentes a estes vrtices.
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} (grafo)
R = {X,A,} ( rede)
onde
X = conjunto de ns ( X = n );
A = conjunto de arcos (A = m);
= parmetros associados aos elementos do conjunto A
3
Exemplos de Rede:
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
Este algoritmo compreende a cada passo a seleo de um arco, iniciando-se pelo arco
de menor valor e prosseguindo com a adio de arcos em ordem crescente de valores
construindo uma arvore, de modo a no formar ciclos com os arcos j selecionados. O
processo se encerra quando a rvore que esta sendo construda possuir n-1 arcos
conectados.
Passo 0 Coloque os arcos em ordem crescente de valor. Estes arcos fazem parte de
um conjunto de arcos no conectado A*. O conjunto A de arcos conectados
vazio.
Passo 1 Selecione o menor dos arcos do conjunto A* que no forme um ciclo com
os demais e coloque-o no conjunto A. Um arco forma um ciclo quando os
vrtices deste arco j fazem parte da rvore mnima em construo.
Passo 2 - Se o conjunto A possui n-1 arcos, ento pare, os arcos deste conjunto
compem a rvore mnima, caso contrrio volte para 2.
Exemplo1:
A rede a seguir representa as possveis ligaes rodovirias entre seis regies. Deseja-
se 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).
5
9
2 6
3
2 6
1 7 3
3 3
1
5
3
5
4
Fig1- Rede do exemplo 1
Passo 1 : A= {(3,4)}
A* = {(3,2),(1,2),(3,5),(6,5),(1,4),(3,6),(3,1),(2,6)}
Passo 1: A = {(3,4),(3,2)}
A* = { (1,2),(3,5), (1,4), (6,5), (3,6),(3,1),(2,6)}
6
2 6
3
2
1 3
3 3
1
5
4
7
Assim, os algoritmos de Caminho Mnimo determinam a rota de menor tempo,
distncia ou custo entre um par ou pares de origem e destino.
Se o caminho mnimo entre um par de ns ento qualquer caminho que parte deste
caminho tambm mnimo
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.
8
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:
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.
9
4.2 - Algoritmo de Ford, Bellman e Moore
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.
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.
Seja R=(X,A) uma rede orientada representando uma rede de comunicao tendo-se:
Pi,j = probabilidade de que o arco (i,j) A estar ativo em determinado instante onde
0 Pij 1
C = caminho de s para t
Exemplo 2:
Ps1 P1t
1
t
S
Ps2 P2t
2
Seja P = P
( i , j ) C '
ij
Fazendo-se:
11
log P = log P = log P
( i , j ) C '
ij
(i , j ) C '
i, j
= min 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.
Assim trabalha-se com K matrizes de n x n sendo K= 1,2,3 ... n onde cada valor da
matriz definido como :
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.
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..
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:
dij = ?
rik = .......rikm =i
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.
_
4.5 Algoritmo de Dantzig
Estrutura do algoritmo:
14
4.6 Algoritmo de k-Caminhos Mnimos
O objetivo deste algoritmo definir mais de um caminho mnimo entre uma origem e
um destino. Assim podemos obter k- caminhos mnimos em ordem crescente de
tamanho. Este tipo de problema importante na medida em que algumas vezes
desejamos verificar mais de uma opo de caminho para um determinado transporte .
Estes algoritmos tambm trabalham com matrizes e como nos anteriores utilizam as
operaes de adio e minimizao, efetuadas com conjuntos ( vetores) de k distintos
nmeros representando o conjunto de caminhos entre dois vrtices.
Dijkstra =3n2/2
Ford = 1 n 3
Floyd = 2n3
Dantzig= 2n3
15
5 - Algoritmos de Fluxo Mximo
A utilizao destes algoritmos tem por objetivo verificar a capacidade mxima de
fluxo em uma rede a partir de um n origem a um n de destino. Nestes casos, cada
arco possui um valor que indica a capacidade mxima de fluxo que pode passar por
ele ( limite superior ) e, dependendo da rede ou do objetivo da anlise, h um outro
valor que indica o fluxo mnimo (limite inferior) que deve passar pelo arco .
2- Fluxo vivel um fluxo que obedece a lei acima e as restries de capacidade dos
arcos.
O valor de qualquer corte, dado pelo somatrio das capacidades dos arcos do
t. O valor de um corte representa um limite superior para o
corte na direo s
Fluxo mximo, e o corte de valor mnimo define o Fluxo mximo no grafo.
16
1
s t
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
Sujeito :
Para o n origem :
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
Onde:
f(i,j) - fluxo no arco (i,j)
c(i,j) - capacidade de fluxo do arco(i,j)
V - fluxo mximo na rede
17
5.2 - Algoritmo de Aumento de Fluxo
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.
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.
Exemplo 3:
Considere a Rede a seguir com um fluxo corrente de f=2
f=2 s 1 2 t f=2
f=2 f=2 f=2
f=2 s 1 2 t f=2
r=2 r=2 r=2
Este algoritmo utiliza um processo de rotulao em que cada n recebe dois rtulos:
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 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:
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.
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.
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.
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)).
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.
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 criando-
se um destino nico , como na figura abaixo:
S1 T1
T
S
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
23
custos. Neste caso, estes ns devem ser substitudos por um arco com capacidade
igual ao do n.
Ck
Ck
K k k
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:
24
atravs de caminhos com um nmero mnimo de arcos, ento estaremos dimuindo o
tempo de procura.
Se o fluxo v, que se deseja alocar menor que o fluxo mximo F para uma
determinada rede, ento podem existir diferentes formas de distribuir este fluxo na
rede. O objetivo dos algoritmos de custo mnimo , ento, encontrar os caminhos de
fluxo que minimizam o custo total.
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
Rede Modificada
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 :
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.
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 :
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.
7 Roteirizao
Passos do Algoritmo:
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