A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Algoritmos de Caminho Mínimo em Grafos

Apresentações semelhantes


Apresentação em tema: "Algoritmos de Caminho Mínimo em Grafos"— Transcrição da apresentação:

1 Algoritmos de Caminho Mínimo em Grafos
CC/EC/Mestrado Teoria dos Grafos 1

2 CAMINHOS MAIS CURTOS

3 Caminhos mais Curtos Dados: grafo G=(V,A) orientado e
distância cij associada ao arco (i,j)  A. Problema: Obter o caminho mais curto entre dois nós s e t. O comprimento de um caminho é igual à soma dos comprimentos (distâncias) dos arcos que formam o caminho. A “distância” ou “comprimento” de um arco pode ter diversas interpretações dependendo da aplicação: custos, distâncias, consumo de combustível, etc. Exemplo 1: Dado um mapa rodoviário, determinar a rota mais curta de uma cidade a outra. (rota mais rápida, rota com menor consumo de combustível, ...)

4 Caminhos mais Curtos Exemplo 2: Construção de uma estrada entre duas cidades A e K. O grafo abaixo representa os diversos trechos possíveis e o custo de construção de cada um. Determinar o trajeto ótimo cujo custo de construção seja mínimo (corresponde a achar o caminho mais curto de A a K em relação a estes custos). B E H 6 4 2 4 4 4 8 F I 5 5 2 5 A K C 4 2 4 7 4 2 4 D G J Solução: A – D – G – I – K custo = = 16

5 Caminhos mais Curtos Condição de existência:
Caminho de i a j contendo um ciclo w: k j i w Comprimento do caminho = comprimento (i  k) + comprimento (w) + comprimento (k  j) Qual é o comprimento do caminho mais curto de i a j se o comprimento do ciclo w é negativo?

6 Caminhos mais Curtos Condição de existência:
não há ciclos de comprimento negativo. A solução ótima (caminho mais curto) sempre será um caminho elementar (sem ciclos).

7 Caminhos mais Curtos Caminho mais curto: - De um nó a outro
- De um nó a todos os demais - De um nó a todos os demais - Entre todos os pares de nós de um grafo

8 Caminhos mais Curtos Caminho mais curto do nó 1 a cada nó do grafo G=(V,A) Hipótese: todas as distâncias cij são positivas: cij ≥ 0, (i,j)  A Algoritmo de Moore-Dijkstra ( ) *(i) = comprimento do caminho mais curto do nó 1 ao nó i Em especial, *(1)=0 (distâncias positivas). Algoritmo com n-1 iterações No início de cada iteração, o conjunto V de nós está particionado em dois subconjuntos S e S, com o nó 1 em S.

9 Caminhos mais Curtos Cada nó i  V possui um rótulo (i ), que verifica a seguinte propriedade: dá o valor do caminho mais curto de 1 a i sob a restrição de que todos os nós utilizados (exceto o próprio i ) pertençam a S. a 1 b c i cai cbi cci

10 Caminhos mais Curtos Teorema: Seja o nó tal que .
Então , isto é, o comprimento do caminho mais curto do nó 1 ao nó j é igual a Demonstração: Por construção, certamente existe um caminho de 1 até j com comprimento (j). Suponhamos que exista outro caminho de 1 a j de comprimento menor do que (j). Dividamos este caminho em duas partes: - P1 é a parte inicial, do nó 1 ao nó L, onde L é o primeiro nó de encontrado - P2 é a parte final, do nó L ao nó j

11 Caminhos mais Curtos comprimento de P1 ≥ (L) ≥ (j)
Logo, o comprimento de P1 + P2 ≥ (j).

12 Algoritmo de Dijkstra Resolve o problema com um vértice-fonte em grafos cujas arestas tenham peso maior ou igual a zero. Este algoritmo é capaz de determinar o caminho mínimo, a partir de um vértice inicial v, para todos os outros vértices do grafo. CC/EC/Mestrado Teoria dos Grafos 12

13 Algoritmo de Dijkstra vINI = vértice inicial d(vINI, vINI) = 0
d(vINI, i) = INFINITO, i, i  V – {vINI} fechado =  aberto = V anterior(i) = 0, i, i  V enquanto(aberto ≠ ) { k = vértice pertencente a aberto, mais próximo do vértice inicial fechado = fechado  k; aberto = aberto – k; para cada vizinho i de k que está em aberto faça{ custo = min{d(vINI, i), d(vINI,k) + c(k,i)} se (custo < d(vINI, i)) então d(vINI, i) = custo; anterior(i) = k } CC/EC/Mestrado Teoria dos Grafos 13

14 Execução fim do algoritmo 1. o grafo inicial
7. 2 é o vértice de menor custo; fechado = fechado+{2} 13. 6 é o vértice de menor custo; fechado = fechado+{6} 2. inicializando os custos 8. examinando os vértices vizinhos ao 2 14. fim alcançado fim do algoritmo 3. atualizando o conjunto fechado 9. 4 é o vértice de menor custo; fechado = fechado+{4} 4. examinando os vértices vizinhos ao 1 que estão em aberto 10. examinando os vértices vizinhos ao 4 5. 3 é o vértice de menor custo; fechado = fechado+{3} 11. 5 é o vértice de menor custo; fechado = fechado+{5} 6. examinando os vértices vizinhos ao 3 12. examinando os vértices vizinhos ao 5 CC/EC/Mestrado Teoria dos Grafos 14

15 Caminhos mais Curtos Número de operações (tempo): ~ n2 n-1 iterações, cada iteração busca o mínimo em uma lista com até n-1 elementos Caminho mais curto do nó 1:  ao nó j  a todos os nós Mesma complexidade, mas critérios de parada diferentes. Distâncias negativas: 1 3 2 10 - 8 Caminho mais curto de 1 a 3? 2 Resultado do algoritmo? 3 Porque?


Carregar ppt "Algoritmos de Caminho Mínimo em Grafos"

Apresentações semelhantes


Anúncios Google