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

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

Algoritmos em Grafos. 2 CAMINHOS MAIS CURTOS 3Algoritmos em Grafos Caminhos mais Curtos Dados: grafo G=(V,A) orientado e distância c ij associada ao.

Apresentações semelhantes


Apresentação em tema: "Algoritmos em Grafos. 2 CAMINHOS MAIS CURTOS 3Algoritmos em Grafos Caminhos mais Curtos Dados: grafo G=(V,A) orientado e distância c ij associada ao."— Transcrição da apresentação:

1 Algoritmos em Grafos

2 2 CAMINHOS MAIS CURTOS

3 3Algoritmos em Grafos Caminhos mais Curtos Dados: grafo G=(V,A) orientado e distância c ij 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 4Algoritmos em Grafos 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). A B C D F E GJ I H K Solução:A – D – G – I – K custo = = 16

5 5Algoritmos em Grafos Caminhos mais Curtos Condição de existência: Caminho de i a j contendo um circuito 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 circuito w é negativo?

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

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

8 8Algoritmos em Grafos Caminho mais curto do nó 1 a cada nó do grafo G=(V,A) Hipótese: todas as distâncias c ij são positivas: c ij 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. Caminhos mais Curtos

9 9Algoritmos em Grafos Cada nó i V possui um rótulo (i ), que verifica a seguinte propriedade: Caminhos mais Curtos 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 1b c i c ai c bi c ci

10 10Algoritmos em Grafos 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: - P 1 é a parte inicial, do nó 1 ao nó L, onde L é o primeiro nó de encontrado - P 2 é a parte final, do nó L ao nó j

11 11Algoritmos em Grafos Caminhos mais Curtos comprimento de P 1 (L) (j) comprimento de P 2 0 Logo, o comprimento de P 1 + P 2 (j).

12 12Algoritmos em Grafos Caminhos mais Curtos Algoritmo de Moore-Dijkstra O algoritmo constrói progressivamente o conjunto dos nós mais próximos de 1. Construção de uma arborescência com raiz em 1 que define os caminhos mais curtos do nó 1 a cada nó do grafo. Inicializar S {2,3,...,n}, S {1}, (1) 0, (j) c 1j se j caso contrário Enquanto S faça Selecionar j S tal que (j)= min i S { (i)} S S – {j} Para i S e i j + faça (i) min{ (i), (j)+c ji } fim_enquanto

13 13Algoritmos em Grafos Caminhos mais Curtos Exemplo: ITERAÇÃO 1 *(1) = 0 *(3) = S = {1} S = {2,3,4,5,6} (1) = 0 (2) = 7 (3) = 1 (4) = (5) = (6) = + (2) = min{7, (5) = min{, (6) = min{, j = 3 S = {2,4,5,6} 1+5} = 6 1+2} = 3 1+7} = 8

14 14Algoritmos em Grafos Caminhos mais Curtos ITERAÇÃO 2 (2) = min{6, (4) = min{, j = 5 S = {2,4,6} 3+2} = 5 3+5} = 8 *(1) = 0 *(3) = *(5) = 3 ITERAÇÃO 3 (4) = min{8, (6) = min{, j = 2 S = {4,6} 5+4} = 8 5+1} = 6 *(1) = 0 *(3) = *(5) = 3 *(2) = 5

15 15Algoritmos em Grafos Caminhos mais Curtos ITERAÇÃO 4 (4) = 8 j = 6 S = {4} ITERAÇÃO 5 j = 4 S = { } *(1) = 0 *(3) = *(5) = 3 *(2) = 5 *(6) = 6 *(1) = 0 *(3) = *(5) = 3 *(2) = 5 *(6) = 6 *(4) = 8

16 16Algoritmos em Grafos Caminhos mais Curtos nó Iteração Início

17 17Algoritmos em Grafos Caminhos mais Curtos Número de operações (tempo): O(n 2 ) n-1 iterações, cada iteração busca o mínimo em uma lista com até n-1 elementos (vetor ) Caminho mais curto do nó 1: ao nó j a todos os nós Mesma complexidade, mas critérios de parada diferentes.


Carregar ppt "Algoritmos em Grafos. 2 CAMINHOS MAIS CURTOS 3Algoritmos em Grafos Caminhos mais Curtos Dados: grafo G=(V,A) orientado e distância c ij associada ao."

Apresentações semelhantes


Anúncios Google