Modelos de redes
Problema da árvore de suporte de custo mínimo
Problema do caminho mais curto
Problemas de fluxo em grafos
Noções estudadas
Modelos de redes
Problema da árvore de suporte de custo mínimo
Problema do caminho mais curto
Problemas de fluxo em grafos
Noções estudadas
Nesta aula. . .
Modelos de redes
Definições básicas
Um grafo ou rede é contituído por dois elementos fundamentais:
1
Modelos de redes
2
Problema da árvore de suporte de custo mínimo
Exemplos:
3
Problema do caminho mais curto
Algoritmo de Dijkstra
Problema de transexpedição
Grafo não dirigido
um conjunto V de vértices (ou nós, ou nodos, ou pontos)
um conjunto E de arestas (ou um conjunto A de arcos)
Problemas de fluxo em grafos
Problema do fluxo máximo
Algoritmo de Ford-Fulkerson
Problema do fluxo de custo mínimo
4
João Pedro PEDROSO
Grafo dirigido (ou digrafo)
1
4
1
4
2
3
2
3
V = {1, 2, 3, 4}
V = {1, 2, 3, 4}
E = {{1, 2}, {2, 3}, {3, 4}, {4, 1}}
Métodos de Apoio à Decisão
A = {(1, 2), (2, 3), (3, 4), (4, 1), (4, 3)}
João Pedro PEDROSO
Modelos de redes
Problema da árvore de suporte de custo mínimo
Problema do caminho mais curto
Problemas de fluxo em grafos
Noções estudadas
Métodos de Apoio à Decisão
Modelos de redes
Problema da árvore de suporte de custo mínimo
Problema do caminho mais curto
Problemas de fluxo em grafos
Noções estudadas
Modelos de redes
Problema da árvore de suporte de custo mínimo
Definições básicas
Dados: um grafo (em que cada aresta tem um comprimento/peso).
arestas são pares não ordenados de vértices, e significam que pode
haver movimento entre esse vértices; e.g., {2, 3}
arcos são pares ordenados de vértices, e representam a direcção em
que o movimento entre esse vértices pode ser feito;
(i, j) significa que pode haver movimento do vértice i para o j
i – vértice inicial
j – vértice final, ou terminal
diz-se que o arco vai de i para j
Pretende-se determinar o conjunto de arestas que permite ligar todos os
vértices, de tal forma que o comprimento (/peso) das arestas utilizadas
seja mínimizado.
Uma árvore de suporte é um grupo de n − 1 arestas que liga todos os
vértices do grafo e que não contém ciclos.
Algoritmo para a árvore de suporte de custo mínimo:
1
cadeia é uma sequência de arcos tal que cada um deles tem
exatamente um vértice em comum com o anterior (excepto o primeiro),
e.g. (1,2),(2,3),(4,3)
2
Começar por qualquer vértice i; juntar i ao vértice que j lhe está mais
próximo; seja C = {i, j} e C 0 = {restantes vértices}; {i, j} fará parte da
árvore de suporte de custo mínimo.
Escolher o elemento n de C 0 mais próximo de um dos vértices de C; seja m
o vértice de C mais próximo de n.
1
caminho é uma cadeia tal que o vértice terminal de cada arco é o
vértice inicial do arco seguinte, e.g, (1,2),(2,3),(3,4)
2
3
3
{m, n} fará parte da árvore de suporte de custo mínimo;
C := C ∪ {n}
C 0 := C 0 \{n}
Repetir até que todos os vértices estejam em C.
João Pedro PEDROSO
Métodos de Apoio à Decisão
João Pedro PEDROSO
Métodos de Apoio à Decisão
Modelos de redes
Problema da árvore de suporte de custo mínimo
Problema do caminho mais curto
Problemas de fluxo em grafos
Noções estudadas
Algoritmo de Dijkstra
Problema de transexpedição
Modelos de redes
Problema da árvore de suporte de custo mínimo
Problema do caminho mais curto
Problemas de fluxo em grafos
Noções estudadas
Algoritmo de Dijkstra
Problema de transexpedição
Problema do caminho mais curto
Exemplo
Uma companhia de eletricidade pretende enviar energia de uma central
de produção para uma cidade, através de arcos de transmissão e de
sub-estações.
Cada arco no grafo tem um comprimento associado
A distância entre os nodos é dada:
Começamos num dado nodo;
2
4
Queremos determinar a forma de ir para um outro nodo com o custo
mínimo.
3
4
2
2
1
3
2
3
3
6
5
Supondo que o custo de transmissão é proporcional às distâncias, qual
é a forma mais económica de enviar energia?
João Pedro PEDROSO
Métodos de Apoio à Decisão
João Pedro PEDROSO
Métodos de Apoio à Decisão
Modelos de redes
Problema da árvore de suporte de custo mínimo
Problema do caminho mais curto
Problemas de fluxo em grafos
Noções estudadas
Algoritmo de Dijkstra
Problema de transexpedição
Modelos de redes
Problema da árvore de suporte de custo mínimo
Problema do caminho mais curto
Problemas de fluxo em grafos
Noções estudadas
Algoritmo de Dijkstra
Problema de transexpedição
Algoritmo de Dijkstra
Problema de transexpedição
Método para determinar o caminho mais curto no grafo quando todos os
comprimentos são não negativos
1
Por uma etiqueta permanente 0 no nó e partida.
2
Por uma etiqueta temporária a cada nó ligado a esse, com o
comprimento do arco que os liga.
3
Por em todos os outros nós a etiqueta temporária ∞.
4
Escolher o nó com a etiqueta temporária mais baixa; tornar a sua
etiqueta permanente.
5
A cada nó j com etiqueta temporária lidado a i, substituir a etiqueta por
min{etiqueta temporária de j, etiqueta de i + comprimento de (i, j)}
6
Continuar desde o passo 4 até colocar uma etiqueta permanente no nó
de destino.
João Pedro PEDROSO
Métodos de Apoio à Decisão
Enviar produtos de determinados vértices a outros, minimizando o custo de
transporte.
Grafo: G(V , A), V é o conjunto de vértices e A o de arcos.
Cada vértice i é:
Centro consumidor:
Centro intermédio:
Centro produtor:
Entrada - Saída = Procura
Entrada = Saída
Saída - Entrada = Produção
Formulação:
Variáveis: xij ≥ 0, ∀(i, j) ∈ A: fluxo no arco (i, j)
X
Objetivo: minimizar z =
cij xij
Restrições:
X
(j,i)∈A
(i,j)∈A
xji −
X
xij = di
(i,j)∈A
João Pedro PEDROSO
i∈V
Métodos de Apoio à Decisão
di > 0
di = 0
di < 0
Modelos de redes
Problema da árvore de suporte de custo mínimo
Problema do caminho mais curto
Problemas de fluxo em grafos
Noções estudadas
Modelos de redes
Problema da árvore de suporte de custo mínimo
Problema do caminho mais curto
Problemas de fluxo em grafos
Noções estudadas
Algoritmo de Dijkstra
Problema de transexpedição
Problema do caminho mais curto como transexpedição
Problema do fluxo máximo
Algoritmo de Ford-Fulkerson
Problema do fluxo de custo mínimo
Problema do fluxo máximo
Muitas situações podem ser modeladas através de um grafo em que:
arcos têm uma capacidade que limita a quantidade que pode ser através
deles enviada
um vértice é a origem, a partir da qual se quer enviar produtos para um
outro vértice, o destino
Se:
Exemplo: uma companhia petrolífera pretende enviar a máxima
quantidade horária possível de petróleo de o para d.
fizermos cij igual à distância entre i e j
minimizarmos o custo de enviar uma unidade do nodo de origem para o
nodo de destino
então esta formulação resolve o problema do caminho mais curto.
3
3
qual é a solução?
o
2
3
1
2
1
2
d
3
Formule o problema linear que permite determinar o número máximo de
barris por hora que podem ser enviados.
João Pedro PEDROSO
Métodos de Apoio à Decisão
Modelos de redes
Problema da árvore de suporte de custo mínimo
Problema do caminho mais curto
Problemas de fluxo em grafos
Noções estudadas
João Pedro PEDROSO
Modelos de redes
Problema da árvore de suporte de custo mínimo
Problema do caminho mais curto
Problemas de fluxo em grafos
Noções estudadas
Problema do fluxo máximo
Algoritmo de Ford-Fulkerson
Problema do fluxo de custo mínimo
Problema do fluxo máximo
Métodos de Apoio à Decisão
Problema do fluxo máximo
Algoritmo de Ford-Fulkerson
Problema do fluxo de custo mínimo
Algoritmo de Ford-Fulkerson
Formulação em programação linear
Dados do problema:
Grafo: conjunto de vértices V , e conjunto de arcos A
Vértices de origem o e de destino d
Capacidade em cada um dos arcos: cij , (i, j) ∈ A
Variáveis:
Seja I o conjunto de arcos em que se pode aumentar o fluxo
Seja R o conjunto de arcos em que se pode diminuir o fluxo
1
determinar um fluxo admissível (e.g., zero em todos os arcos)
2
encontrar uma cadeia de arcos com etiqueta que permita etiquetar o
vértice de destino:
por uma etiqueta no vértice de origem;
por etiquetas em vértices e arcos de acordo com:
xij fluxo através do arco (i, j), (i, j) ∈ A
y , fluxo que parte da origem (e chega ao destino)
1
Restrições:
capacidade dos arcos: 0 ≤ xij ≤ cij , (i, j) ∈ A
conservação do fluxo:
X
X
xji =
xij i ∈ V \{o, d}
(j,i)∈A
(i,j)∈A
y=
X
xij
(i,j)∈A:i=o
y=
X
xij
(i,j)∈A:j=d
Objetivo: maximizar y
João Pedro PEDROSO
Modelos de redes
Problema da árvore de suporte de custo mínimo
Problema do caminho mais curto
Problemas de fluxo em grafos
Noções estudadas
2
se o vértice x tem etiqueta, y não tem, e (x, y ) ∈ I, então colocar etiqueta em y
e em (x, y ); (x, y ) é um arco em frente;
se o vértice x tem etiqueta, y não tem, e (y , x) ∈ R, então colocar etiqueta em y
e em (y , x); (y , x) é um arco para trás;
se não se consegue etiquetar o vértice de destino, o fluxo atual é máximo,
STOP;
3
Aumentar o fluxo:
Se a cadeia utilizada para etiquetar o destino tem apenas arcos em frente:
aumentar o fluxo em cada um deles tanto quanto possível (mantendo a
solução admissível);
Se a cadeia tem também arcos para trás: aumentar o fluxo nos arcos em
frente, e reduzí-lo nos arcos para trás, tanto quanto possível (mantendo a
solução admissível);
Voltar ao passo 2.
Métodos de Apoio à Decisão
Problema do fluxo máximo
Algoritmo de Ford-Fulkerson
Problema do fluxo de custo mínimo
Problema do fluxo máximo
João Pedro PEDROSO
Métodos de Apoio à Decisão
Modelos de redes
Problema da árvore de suporte de custo mínimo
Problema do caminho mais curto
Problemas de fluxo em grafos
Noções estudadas
Problema do fluxo máximo
Algoritmo de Ford-Fulkerson
Problema do fluxo de custo mínimo
Problema do fluxo de custo mínimo
Pretende-se enviar uma determinada quantidade de um determinado
produto através de um grafo, de um ponto (a origem) a um outro ponto
(o destino), de tal forma que o custo de expedição seja mínimo.
Dados do problema:
Pode ser resolvido por programação linear ou através do algoritmo de
Ford-Fulkerson;
Este último é eficiente: os recursos computacionais necessários para o
resolver são limitados por um polinómio, em termos dos dados do
problema.
Grafo: conjunto de vértices V , e conjunto de arcos A
Vértices de origem o e de destino d
Custo unitário de transporte em (i, j): cij , (i, j) ∈ A
Majorante para o fluxo em cada um dos arcos: Uij , (i, j) ∈ A
Minorante para o fluxo em cada um dos arcos: Lij , (i, j) ∈ A
Produção no vértice i: bi (negativo se houver consumo em i)
Variáveis:
xij fluxo através do arco (i, j),
Restrições:
(i, j) ∈ A
capacidade dos arcos: P
Lij ≤ xij ≤ UijP
, (i, j) ∈ A
conservação do fluxo: (i,j)∈A xij − (k ,i)∈A xki = bi ,
i∈V
P
Objetivo: minimizar
(i,j)∈A cij xij
Notas: o problema de fluxo máximo pode ser formulado como um problema
de fluxo a custo mínimo; para o problema do fluxo a custo mínimo, existe
uma versão mais eficiente do método do simplex: o método dos simplex para
redes.
João Pedro PEDROSO
Métodos de Apoio à Decisão
Modelos de redes
Problema da árvore de suporte de custo mínimo
Problema do caminho mais curto
Problemas de fluxo em grafos
Noções estudadas
João Pedro PEDROSO
Métodos de Apoio à Decisão
Modelos de redes
Problema da árvore de suporte de custo mínimo
Problema do caminho mais curto
Problemas de fluxo em grafos
Noções estudadas
Noções estudadas
Próxima aula
Noções básicas de grafos: vértice, aresta, arco, caminho.
Problema do caminho mais curto; algoritmo de Dijkstra.
Problema da transexpedição.
Problema do fluxo máximo: formulação em programação matemática.
Problemas de gestão de projetos.
Algoritmo de Ford-Fulkerson.
Noção de corte num grafo; relação entre a capacidade do corte e o fluxo
máximo no grafo.
Problema do fluxo a custo mínimo.
João Pedro PEDROSO
Métodos de Apoio à Decisão
João Pedro PEDROSO
Métodos de Apoio à Decisão
Download

Nesta aula. . . Modelos de redes Modelos de redes Problema da