Escolar Documentos
Profissional Documentos
Cultura Documentos
1. INTRODUO
Este texto contm conceitos bsicos de fluxo em redes voltado a aplicao em
transportes. Pretende apresentar os modelos bsicos utilizados para solucionar alguns
problemas clssicos em transportes. O texto est fortemente baseado em notas de aula
ministradas pelo Prof Sang Nguyen, pesquisador renomado na rea de modelos de rede,
da Universidade de Montreal. Adicionalmente o texto utiliza abordagens de Magnanti e
de Bazaara, como referncias bsicas.
Diversos tipos de problemas podem ser atacados com a abordagem de redes, entre eles:
- sistemas eltricos
- sistemas de comunicao
- sistemas de transportes
Na sua raiz, os modelos de rede usam uma abordagem geral, no orientada para
aplicaes especficas. Neste curso ser dada a nfase a aplicaes em transportes.
O texto apresenta conceitos bsicos e algumas provas matemticas formais, mas pode
ser tomado como referncia para o aprendizado de algoritmos de resoluo dos diversos
problemas.
O captulo I mostra conceitos bsicos de grafos utilizados ao longo do curso. muito
importante para unificar uma linguagem, nomenclatura e notaes que sero teis,
tambm para a leitura de textos mais aprofundados na rea. O captulo II apresenta
formas de representar redes em computadores. No captulo III so tratadas rvores e
arborescncias timas.
O captulo IV trata de Algoritmos de caminho mnimo. Como Sang declara so
instrumentos dos mais importantes na modelagem de transportes. Embora em si, o
algoritmo tenha pouca aplicao prtica, parte fundamental de algoritmos complexos
de soluo de problemas de rede.
O captulo V apresenta modelos lineares clssicos de fluxos em redes. So tratados o
algoritmo de fluxo mximo e o algoritmo do fluxo de custo mnimo.
Em geral o curso complementado com um conjunto de exerccios. Os exerccios sero
resolvidos manualmente e visam dominar as tcnicas de resoluo dos diversos
problemas.
CAPTULO I
1.1. DEFINIES
Um grafo G uma estrutura composta de um conjunto N de ns ou vrtices e um
conjunto A de arcos.
G = (N, A).
Cada arco definido por par um ordenado de ns (i, j). Em geral denota-se por n a
cardinalidade (nmero de elementos) de N e por m a cardinalidade de A.
n=|N| e m=|A|
Representao grfica:
Em geral se representa o grafo por um conjunto de crculos ou retngulos representando
os ns e um conjunto de linhas com ou sem setas, ligando alguns pares de ns e
representando, desta forma, os arcos.
3
4
5
Adjacncia:
Os ns i e j so adjacentes. Eles esto conectados por um arco.
Dois arcos so adjacentes se eles tem um n comum (pelo menos)
Arcos: (i, j) e (k, j) so adjacentes.
Grau de um N:
O grau do n definido como o numero de arcos incidentes ao n. Um arco incidente
ao n se o n i cauda ou cabea do arco
Semi-grau interior (indegree of a node)
O semigrau interior designado por d - (i) o nmero de arcos incidentes para o n, ou
seja, o n i cabea dos arcos. Os ns, que so as caudas dos arcos incidentes a i forma
o conjunto de precedentes, ou predecessores de i, denotado por: -(i).
Semi-grau exterior (Outdegre), designado por d+ (i) o nmero de arcos incidentes
desde o n i, ou seja o n i cauda dos arcos. Os ns que so as cabeas dos arcos
inicidentes desde i, formam o conjunto de sucessores de i denotado por: +(i).
N grafo da figura 2 abaixo, o n i tem outdegre = 2 e grau = 5 ( 2+3).
Figura 2: Grau de um n.
Lao (Loop)
Um lao (loop) ocorre quando o n inicial (a cauda) e o n final (a cabea) do arco
coincidem.
Loop (lao): arco (i, i) da figura 3
Arcos Paralelos
Arcos paralelos ocorrem quando dois ou mais arcos tem os mesmos ns iniciais e finais.
Figura 4: Cadeia.
CADEIA ELEMENTAR
Uma cadeia elementar se ela atravessa cada vrtice, no mximo uma vez. A cadeia L
da figura 4, no elementar. A cadeia {(2,3), (3,4), (4,1)} elementar.
GRAFO CONECTADO
Um grafo que s tem 1 componente um grafo conectado.
GRAFO FORTEMENTE CONECTADO
Um grafo fortemente conectado se para cada par de ns i e j, j acessvel desde i e i
acessvel desde j.
3. CF
4. CF
2. CF
1. CF
GRAFO BIPARTITE
Um grafo Bipartite aquele onde:
o conjunto de ns N pode ser partido da forma:
N = {S T}, com S T =
3
4
Se 1 e 2 3
Se 2 e 3 1
Proposio 2: Cada arco fora da ST define um nico ciclo com os arcos da ST.
ARBORESCNCIA:
Uma arborescncia pode ser enraizada (rooted) de (para) um n i. Neste caso i
chamado raiz da arborescncia. Repare-se que para o conceito de rvore no se leva em
considerao a orientao dos arcos, ao contrrio do que ocorre com a arborescncia.
n
l
s
10
CAPTULO II
2. MATRIZES DE INCIDNCIA
Existem dois tipos mais importantes de matrizes de incidncia. A matriz de incidncia
n-n e a matriz de incidncia n-arco.
1
3
2
4
11
n
1
2
3
4
1
0
1
0
0
2
1
0
1
0
3
1
1
0
1
4
0
1
1
0
ai j
(1, 3)
2
+1
0
-1
0
(2, 1)
3
-1
+1
0
0
(2,3)
4
0
+1
-1
0
(2, 4)
5
0
+1
0
-1
(3, 2)
6
0
-1
+1
0
(3, 4)
7
0
0
+1
-1
12
(4, 3)
8
0
0
-1
+1
ndice
1
2
3
4
5
6
7
8
i
1
1
2
2
2
3
3
4
j
2
3
1
1
4
2
4
3
O vetor (i) guarda o ndice do primeiro arco com cauda em i. Como na tabela abaixo.
N:
13
Em geral para se acessar os arcos com cauda em i percorre-se o vetor desde (i) a
(i+1)-1. Para tratar o ltimo n define-se (n+1) = m+1, sendo n, nmero de ns e m o
nmero de arcos da rede.
Os arcos com cauda no n 3 se encontram entre o ndice (3)= 6 a (4)-1=8-1=7, na
lista . Ou seja, (6)=2 , (7)=4. Os arcos so (3,2) e (3,4).
No caso de guardar os predecessores, esta estrutura faz uso de dois vetores e ( ), de
dimenso (n + 1) (nmero de ns + 1) e ( ) de lista de ns predecessores de um n i,
de dimenso m (nmero de arcos) comeando de (i). Um n predecessor um n
adjacente a um n i ligado por um arco, cuja cabea i. Como a um n i pode haver
vrios arcos cuja cabea i, pode haver mais de um predecessor de i.
Para os ns predecessores as listas so construdas da seguinte forma: os arcos so
ordenados agora pelos ns de destino (cabea) dos arcos.
ndice
1
2
3
4
5
6
7
8
2
1
3
1
2
4
2
3
1
2
2
3
3
3
4
4
(k) guarda o n de origem (cauda) do arco k. Tambm se pode dizer que a lista
de ns predecessores de i.
1
2
1
3
3
14
6
4
7
2
8
3
ndice
6
3
15
4
Backtracking.
6
3
16
5. COMPLEXIDADE DE ALGORITMOS
Soma ,
n = 10
3.3
10
33
100
210 = 1024
30 000 000
n!
O Simplex tem 0
, mas trabalha na prtica, de forma muito eficiente.
( n m)
Para maiores informaes, pode-se se remeter a Lawlev, E.L. (76) Introduction to the
Complexity of Algorithms. Aplyed Computation Theory: Analysing design, modelling.
Prentice-Hall.
O que interessa da complexidade que o nmero de operaes ser proporcional ao
tempo consumido na mquina. Se algoritmo tem complexidade O(n2) o tempo de CPU
ser proporcional a n2. Ao desenvolver um algoritmo a anlise da complexidade d uma
idia da eficincia do algoritmo, quando comparado com a complexidade de outro
algoritmo que resolve o mesmo problema.
17
CAPTULO III
wik
k
e1
e2
e3
18
e'
C1. (N1T) uma M.S.T. se e somente se, para qualquer aresta (seja e) no
pertencente rvore (T), o peso de e cumpre: we we para todas as arestas do ciclo
fundamental definido pelas arestas de mais a aresta e
we we e (e)
(e) o ciclo fundamental formado pela incluso de e.
evidente que se w(e) < w(e) de alguma aresta do ciclo fundamental, a substituio de
e por e conduziria a uma ST de menor peso que a original, o que seria uma contradio
com a hiptese dela ser uma MST.
A condio necessria suficiente.
19
e1,1
e2,4
e3,5
e5,6
e6,7
e7,5
e8,9
e9,3
e11,2
e10,4
Figura 3.4. Construo de MST por Kruskal. Exemplo: e11,2: aresta e11 , pso : 2
Ordenando-se as arestas do grafo da figura 3, tem-se:
e1
e11
e9
e2
e10
e3
5
e7
5
e5
6
e6
e8
e4
10
n= 6 ns.
O objetivo tomar as primeiras n-1 (5) arestas que no formam ciclo, com as outras j
escolhidas na rvore.
Inicialmente toma-se
e1 , e11 , e9 e e2 , que no forma ciclo.
e10 forma ciclo com e11 e e9 (Fica de fora)
e3 forma ciclo com e9 e e2 .
e7 forma ciclo com e1 , e9 e e2
e5
Com esta ltima, tem-se 5 arestas formando a MST.
20
e1
e2
e5
e9
e11
3. ALGORITMO DE PRIM
Teorema 2: Seja e uma aresta com peso mnimo entre todas as arestas. Incidente a um
n i. Ento e est contido em *.
Prova:
Seja * uma MST e -(i), o conjunto de arestas incidentes a i. Neste conjunto est e,
que a aresta de menor peso do conjunto, mas no pertence a *.
i
21
Corolrio 1 (generalizao)
Se um subconjunto de arestas formando uma sub-rvore S conhecida como parte de
uma MST, ento existe uma MST, que contm S e uma aresta de menor peso
conectando S para os ns restantes do grafo.
Este corolrio uma generalizao do teorema 2, substituindo o n i pelo conjunto de
ns S.
O algoritmo de PRIM baseado no teorema 2.
Comea com i0 e escolhe aresta de peso mnimo, incidente a i0. Essa aresta parte da
MST. Esta aresta pode ser considerada como a sub-rvore S. Das arestas que partem
(incidem sobre) dos ns da sub-rvore S, torna-se a aresta de menor peso. Pode-se
prosseguir at formar a MST.
Para implementar o algoritmo a cada n j, associa-se 2 etiquetas: [j , j]
j = wij peso da aresta (j , j)
j = n precedente ao n j.
Os pesos das arestas no existentes so colocados como um valor muito alto ;wij =
para (i,j) E
Algoritmo de PRIM
O grafo conectado G=(N,E) dado pela lista de adjacncia -(.).
Passo (P0): Escolha um n arbitrrio, seja i0
i0 = 0 ; i0 = -1
j = wij , j = i0
para j i0
22
Fazer P P {k}
T T {k, k}
X X - {k}
Se | X | = pare. T conjunto de arestas do MST
1
7
5
10
6
3
23
P = P U {(6)} X = N - P
1
[3,4]
2
[2,4]
3
[6,4]
[ 5,1]
[2,5]
4
[0,0]
5
[4,4]
6
[9,4]
[1, 1]
24
1 i
3 2i+1
2 2i
4
N
4
2
5
1 10
Valor
3
8
5
6 17
25
CAPTULO IV
( i, j ) p
ij
di j > 0 0 (n2)
di j > 0 e < 0 0 (n3)
2. EQUAES DE BELLMAN
As equaes propostas por Bellman so uma forma de resolver o problema da rota
mnima atravs da programao dinmica.
Define-se:
di j = comprimento de (i, j) se o arco (i,j) existe, seno di j =
i : comprimento da rota mnima de um n inicial (seja 1) ao n i
Supe-se que a rede no tem circuitos negativos.
No incio se tem:
1 = 0 para j 1
26
k
Subconjunto de 1-k
j
arco (k,j)
27
k, com custo 35, mais o custo no arco (k, j) de 10 d um total de 45, que menor que
50. Assim o novo caminho at j ter um custo de 45 e o novo n precedente de j o n
k. A etiqueta de j muda para [45,k].
j [50, b]
10
[35, a] k
15
l [50, k]
15
m [60, c]
Caminho a m
Novo caminho at j
Etiqueta [, ] : custo do caminho e n precedente.
Figura 4.2: Varredura aos ns j,l e m a partir do n k
Passo 0 : Inicializao.
Seja a o n inicial. Definem-se os valores:
a = 0 ; a = -1
j= daj ja ; a = 0
Se (a,j) A daj =
Textualmente: O n inicial a recebe as etiquetas (0, -1). Os demais ns j recebem o
valor (daj,0), sendo daj o valor do arco que liga a ao n j. Se no existir o arco, daj = .
28
P a T = j / j ={N-a}
Textualmente: O n a permanente, est no conjunto de permanentes, os demais ns
so temporrios.
[0,-1] 5
1
[5,1]
3
1
6
4
2
[2,1]
[
,0]
6
2
4
[4,1]
8
4
5
6
5
[
,0]
29
[0, -1]
1
2
[2, 1]
[3, 2]
6
5
7
2
4
[4, 1]
8
4
5
6 [10, 3]
6
5 [8, 4]
Figura 4.4: Valor final das etiquetas de rota mnima de 1 at todos os ns.
A partir das etiquetas pode-se construir o vetor de precedentes:
30
Vetor de Precedentes j
j
1
2
3
4
5
6
-1
1
2
1
4
3
Este vetor de precedentes corresponde a uma rvore de rota mnima com raiz em 1,
como mostrado na figura 4.5.
[3, 2]
[0, -1]
[2, 1]
6 [10, 3]
4
[4, 1]
5 [8, 4]
Rota de 6 a 1:
R = 6
31
_______________________
j = [6] =3
R= {6,3}
[3] -1
_______________________
j = [3] = 2
R = {6, 3, 2}
[2] -1
_______________________
j = [2] =1
R = {6, 3, 2, 1}
[1] = -1 : PARE
De fato olhando-se na figura 4.5 observa-se que o caminho de 1 at 6 passa pelos ns:
1,2,3,6.
A Complexidade do algoritmo de Djkstra para um grafo completo de ordem 0 (n2),
fazendo o clculo de uma origem para todos os destinos
O algoritmo de Djkstra de um tipo Label setting algorithm, o que poderia ser traduzido
com um algoritmo de colocao de etiquetas.
(k)
ij
32
n +1
ij
K +1
ij
k
ij
(k)
(k )
, ik , k j
k = 1, 2, ...., n
jk
ijk
Seja o caminho que no passa pelos ns k +1, k+2, ...... , n. S h duas alternativas:
a) Se o caminho no passa n k o comprimento ser:
(k)
ij
k
ik
(k )
k j
FLOYD:
1. Inicializao
0
d (i, j) =
p0 (i, j) =
33
2. Variando k de 1 a n, faa:
{ Atualizar elementos da matriz Dk :}
Variando i de 1 a n faa
Variando j de 1 a n faa
dk (i, j) = Min {dk-1 (i, j); dk-1 (i, k) + dk-1 (k, j)
{ Atualizar predecessor}
pk-1 (k, j) se dk (i, j) dk-1 (i, j)
pk (i, j) =
fim variando j
fim variando i
fim variando k
No final do algoritmo tem-se:
dn (i, j) : Valor da extenso do caminho + curto entre i e j (Quadro 10.8,NOVAES)
pn (i, j) : Primeiro n precedente de j no caminho entre i e j
4
3
4
1
5
3
4
6
4
4
34
10
Exemplo de
1
2
3
4
5
6
7
8
9
10
1
0
3
3
3
3
3
3
3
3
MATRIZ p{n}:
2
1
0
1
1
6
6
1
6
6
3
1
4
0
4
4
4
4
4
4
4
1
7
7
0
7
7
7
7
7
5
2
2
6
6
0
6
6
6
6
6
3
5
3
3
5
0
3
9
9
7
3
10
3
4
10
10
0
10
10
8
5
5
9
9
5
9
9
0
9
9
9
6
6
6
6
6
6
10
0
10
10
6
6
6
7
6
6
7
9
0
35