Você está na página 1de 22

GCC218  Algoritmos em Grafos

Mayron César O. Moreira

Universidade Federal de Lavras


mayron.moreira@ua.br

Mayron César O. Moreira (UFLA) GCC218 1 / 20


Conteúdo

1 Problema do caminho mínimo (fonte única)

2 Algoritmo de Bellman-Ford

3 Algoritmo de Dijkstra

4 Caminhos mínimos em DAG

Mayron César O. Moreira (UFLA) GCC218 2 / 20


Motivação: menor caminho de um ponto a outro

Figura: Rotas da UFLA à USP (São Carlos).

Mayron César O. Moreira (UFLA) GCC218 3 / 20


Considerações

Ciclos de peso negativo: solução mal denida.

Ciclos (em geral): fazem parte da solução nal?

Mayron César O. Moreira (UFLA) GCC218 4 / 20


Considerações

Árvore de caminho mínimo: não é única.

Mayron César O. Moreira (UFLA) GCC218 5 / 20


Considerações
Funções utilitárias

Mayron César O. Moreira (UFLA) GCC218 6 / 20


Bellman-Ford

Ideia
Admite pesos negativos nas arestas;
Relaxa as progressivamente arestas do grafo.

Mayron César O. Moreira (UFLA) GCC218 7 / 20


Bellman-Ford
Exemplo

Sequência (exemplo):
(t , x ); (t , y ); (t , z ); (x , t ); (y , x ); (y , z ); (z , x ); (z , s ); (s , t ); (s , y ).
Mayron César O. Moreira (UFLA) GCC218 8 / 20
Bellman-Ford
Algoritmo

Complexidade: O (mn).
Mayron César O. Moreira (UFLA) GCC218 9 / 20
Dijkstra

Ideia
Arestas são não-negativas;
S : conjunto de vértices cujo caminho mínimo em relação a s já foi
calculado;
Selecionar u ∈ V − S , com menor estimativa de caminho mínimo,
adicionar u a S e relaxar todas as arestas (u , v ) tal que v ∈ Adj [u ].

Mayron César O. Moreira (UFLA) GCC218 10 / 20


Dijkstra
Exemplo

Mayron César O. Moreira (UFLA) GCC218 11 / 20


Dijkstra
Algoritmo

Mayron César O. Moreira (UFLA) GCC218 12 / 20


Dijkstra
Algoritmo

Complexidade: O (n2 ) (implementação simples); O ((n + m)logn) (heap


binário); O (nlogn + m) (heap de Fibonacci).

Mayron César O. Moreira (UFLA) GCC218 12 / 20


DAG

Como calcular o caminho mínimo em um grafo direcionado acíclico?


Exemplo [no quadro]

Mayron César O. Moreira (UFLA) GCC218 13 / 20


DAG

Depois da ordenação topológica

Mayron César O. Moreira (UFLA) GCC218 14 / 20


DAG

Ideia
Ordenar topologicamente;
Aproveitar a nova estrutura do grafo e calcular o caminho mais
eciente.

Mayron César O. Moreira (UFLA) GCC218 15 / 20


DAG

Algoritmo

Complexidade: O (m + n ).

Mayron César O. Moreira (UFLA) GCC218 16 / 20


Outra aplicação: Sistema de Restrições de Diferença
A: matriz de dimensões de dimensões m × n;
b: vetor de dimensão m;
Denição: Sistema de Restrições de Diferença
Ax ≤ b, com x ∈ Rn , ocorre quando cada linha da matriz A contém um 1
e um -1, e todas as outras entradas são iguais a 0.

Figura: Fonte - CLRS (2013).

Mayron César O. Moreira (UFLA) GCC218 17 / 20


Outra aplicação: Sistema de Restrições de Diferença

Figura: Fonte - CLRS (2013).

Equação geral:
xj − xi ≤ bk
onde 1 ≤ i , j ≤ n e 1 ≤ k ≤ m
Mayron César O. Moreira (UFLA) GCC218 18 / 20
Outra aplicação: Sistema de Restrições de Diferença
Objetivo
Encontrar os valores de x que respeitem as restrições do sistema.
Exemplo: x = (x1 , x2 , x3 , x4 , x5 ) = (−5, −3, 0, −1, −4).

Figura: Fonte - CLRS (2013).

Mayron César O. Moreira (UFLA) GCC218 19 / 20


Outra aplicação: Sistema de Restrições de Diferença

Pergunta
Como utilizar o algoritmo de Bellman-Ford para resolver este problema?

Mayron César O. Moreira (UFLA) GCC218 20 / 20


Outra aplicação: Sistema de Restrições de Diferença

x1 − x2 ≤ 0
x1 − x5 ≤ −1
x2 − x5 ≤ 1
x3 − x1 ≤ 5
x4 − x1 ≤ 4
x5 − x3 ≤ −3
x5 − x4 ≤ −3

Figura: Fonte - CLRS (2013).

Mayron César O. Moreira (UFLA) GCC218 20 / 20

Você também pode gostar