Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf ·...
Transcript of Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf ·...
![Page 1: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/1.jpg)
Grafos – Caminhos mais Curtos
Profa. Elaine Parros Machado de Sousa adaptações: Cris.na Dutra de Aguiar Ciferri
Material baseado em aulas dos professores:
Gustavo Ba5sta, Robson Cordeiro, Moacir Pon5 Jr. e Maria Cris5na Oliveira, Thiago A.S. Pardo
ALGORITMOS E ESTRUTURAS DE DADOS II
![Page 2: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/2.jpg)
CAMINHOS MAIS CURTOS: BUSCA EM LARGURA ¢ Em grafos não ponderados (ou com arestas de mesmo peso) � a busca em largura permite encontrar o caminho mais curto (menor número de arestas) entre o vér5ce de origem da busca e qualquer outro vér5ce alcançável a par5r da origem
¢ Execução do algoritmo � gera uma árvore de busca em largura
![Page 3: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/3.jpg)
CAMINHOS MAIS CURTOS: BUSCA EM LARGURA ¢ Árvore de busca em largura
� representa os caminhos mais curtos entre o vér5ce de origem e os demais vér5ces quando todas as arestas possuem o mesmo peso
� pode ser representada por um vetor de antecessores
![Page 4: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/4.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
-1 -1 -1 -1 -1 -1 -1 2 3 4 5 6 7 8
1
árvore de busca em largura
Vértice origem: 1 Distância k do vértice origem: 0 Ação: vértice 1 torna-se cinza
2
5
1
6
3
7
4
8
q 1 0 k
![Page 5: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/5.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 -1 -1 -1 1 -1 -1 2 3 4 5 6 7 8
1
árvore de busca em largura
2
5
1
6
3
7
4
8
q 1 0 k
Vértices não descobertos adjacentes a 1: 2, 6 Distância k do vértice origem: 1
![Page 6: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/6.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 -1 -1 -1 1 -1 -1 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q 6 1
2 k 1
1
6 2
Vértices não descobertos adjacentes a 1: 2, 6 Distância k do vértice origem: 1 Ação: vértice 1 torna-se preto e vértices 2 e 6 tornam-se cinza
![Page 7: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/7.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 -1 -1 1 6 -1 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q 6 1
2 k 1
1
6 2
Vértices não descobertos adjacentes a 6: 3, 7 Distância k do vértice origem: 2
![Page 8: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/8.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 -1 -1 1 6 -1 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q 2 1
3 7 k 2
1
2
2
6
3 7
Vértices não descobertos adjacentes a 6: 3, 7 Distância k do vértice origem: 2 Ação: vértice 6 torna-se preto e vértices 3 e 7 tornam-se cinza
![Page 9: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/9.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 -1 2 1 6 -1 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q 2 1
3 7 k 2
1
2 6
2
Vértices não descobertos adjacentes a 2: 5 Distância k do vértice origem: 2
3 7
![Page 10: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/10.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 -1 2 1 6 -1 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q 3 2
7 5 k 2
1
6
3 7
2
5
2
Vértices não descobertos adjacentes a 2: 5 Distância k do vértice origem: 2 Ação: vértice 2 torna-se preto e vértice 5 torna-se cinza
![Page 11: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/11.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 3 2 1 6 -1 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q 3 2
7 5 k 2
1
6
3 7
2
5
2
Vértices não descobertos adjacentes a 3: 4 Distância k do vértice origem: 3
![Page 12: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/12.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 3 2 1 6 -1 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q 7 2
5 4 k 2
1
6
7
3
5
2
Vértices não descobertos adjacentes a 3: 4 Distância k do vértice origem: 3
4
3
![Page 13: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/13.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 3 2 1 6 7 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q 7 2
5 4 k 2
1
6
7
3
5
2
4
3
Vértices não descobertos adjacentes a 7: 8 Distância k do vértice origem: 3
![Page 14: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/14.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 3 2 1 6 7 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q 5 2
4 8 k 3
1
6
3
5
2
4
3
Vértices não descobertos adjacentes a 7: 8 Distância k do vértice origem: 3 Ação: vértice 7 torna-se preto e vértice 8 torna-se cinza
8
7
![Page 15: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/15.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 3 2 1 6 7 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q 5 2
4 8 k 3
1
6
3
5
2
4
3
8
7
Vértices não descobertos adjacentes a 5: nenhum Distância k do vértice origem: -
![Page 16: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/16.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 3 2 1 6 7 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q 4 3
8 k 3
1
6
5
2
4
3
8
7
Vértices não descobertos adjacentes a 5: nenhum Distância k do vértice origem: - Ação: vértice 5 torna-se preto
![Page 17: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/17.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 3 2 1 6 7 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q 4 3
8 k 3
1
6
5
2
4
3
8
7
Vértices não descobertos adjacentes a 4: nenhum Distância k do vértice origem: -
![Page 18: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/18.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 3 2 1 6 7 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q 8 3 k
1
6
5
2
4
3
8
7
Vértices não descobertos adjacentes a 4: nenhum Distância k do vértice origem: - Ação: vértice 4 torna-se preto
![Page 19: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/19.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 3 2 1 6 7 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q 8 3 k
1
6
5
2
4
3
8
7
Vértices não descobertos adjacentes a 8: nenhum Distância k do vértice origem: -
![Page 20: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/20.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 3 2 1 6 7 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q k
1
6
5
2
4
3
8
7
Vértices não descobertos adjacentes a 8: nenhum Distância k do vértice origem: - Ação: vértice 8 torna-se preto
![Page 21: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/21.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 3 2 1 6 7 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q k
1
6
5
2
4
3
8
7
0
1
2
3
![Page 22: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/22.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 3 2 1 6 7 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q k
1
6
5
2
4
3
8
7
0
1
2
3
caminho mais curto entre o vértice 1 e o vértice 8
![Page 23: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/23.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 3 2 1 6 7 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q k
1
6
5
2
4
3
8
7
0
1
2
3
caminho mais curto entre o vértice 1 e o vértice 8
![Page 24: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/24.jpg)
Caminhos Mais Curtos: Busca em Largura
Antecessor -1 1
1 6 3 2 1 6 7 2 3 4 5 6 7 8
árvore de busca em largura
2
5
1
6
3
7
4
8
q k
1
6
5
2
4
3
8
7
0
1
2
3
caminho mais curto entre o vértice 1 e o vértice 8
![Page 25: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/25.jpg)
CAMINHOS MAIS CURTOS: BUSCA EM LARGURA
em grafos não ponderados (ou com arestas de mesmo peso), a busca em largura soluciona o problema de
caminhos mais curtos de origem única
![Page 26: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/26.jpg)
CAMINHOS MAIS CURTOS: EXEMPLOS ¢ Problemas que podem ser resolvidos com algoritmo para encontrar caminho mais curto de origem única � Caminhos mais curtos entre um par de vér5ces
¢ algoritmo para problema da origem única é a melhor opção
� Caminhos mais curtos entre todos os pares de vér5ces ¢ pode ser resolvido aplicando o algoritmo |V| vezes, uma vez para cada vér5ce origem
� Caminhos mais curtos com des5no único ¢ reduzido ao problema de origem única invertendo a direção de cada aresta do grafo, ou seja, calculando o grafo transposto e iniciando a busca do vér5ce des5no
![Page 27: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/27.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
¢ Algoritmo de Dijkstra ¢ encontra caminhos mais curtos em um grafo ponderado com pesos diferentes entre as arestas
em grafos ponderados (ou com arestas de diferentes pesos), o algoritmo de Dijkstra soluciona o
problema de caminhos mais curtos de origem única
![Page 28: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/28.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA ¢ Peso de um caminho c = v0, v1, ..., vk em um grafo ponderado => soma de todos os pesos das arestas do caminho.
¢ Caminho mais curto do vér5ce v0 para o vér5ce vk => caminho de menor peso de v0 para vk.
¢ Um caminho mais curto tem peso infinito se vk não é alcançável a par5r de v0.
![Page 29: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/29.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA ¢ Estratégia:
� algoritmo mantém um conjunto S dos vér5ces cujos pesos finais dos caminhos mais curtos desde a origem já tenham sido determinados. ¢ inicialmente S contém somente o vér5ce origem.
� algoritmo “guloso” (greedy) => a cada iteração, um vér5ce w ∈ (V – S) , cuja distância ao vér5ce origem é a menor até o momento , é adicionado a S.
![Page 30: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/30.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
¢ Estratégia: � assumindo que todos os vér5ces possuem custos não nega5vos, sempre é possível encontrar um caminho mais curto do vér5ce origem até w que passa somente por vér5ces em S.
� a cada iteração, um vetor D armazena o custo do caminho mais curto conhecido até o momento entre o vér5ce origem e os demais vér5ces do grafo.
� para os vér5ces em S, D possui o custo do caminho mais curto final.
� o algoritmo termina quando todos os vér5ces estão em S.
![Page 31: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/31.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
1
2 5
4 3
S = ∅ D = ∞∞ ∞ ∞ ∞
1 10
3
5 1
2
6 2 1 3 4 5
conjunto S: inicialmente vazio conjunto D: estimativas pessimistas
0
![Page 32: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/32.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
1
2 5
4 3
S = ∅ D = ∞∞ ∞ ∞ ∞
1 10
3
5 1
2
6 2 1 3 4 5
algoritmo: vértice origem é o primeiro vértice analisado
0
![Page 33: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/33.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
1
2 5
4 3
S = {1} D = 0∞ ∞ ∞ ∞
1 10
3
5 1
2
6 2 1 3 4 5 0
algoritmo: vértice origem é o primeiro vértice analisado ação: adiciona vértice 1 a S
![Page 34: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/34.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
1
2 5
4 3
S = {1} D = 0∞ ∞ ∞ ∞
1 10
3
5 1
2
6 2 1 3 4 5
algoritmo: para todo vértice v adjacente ao vértice w faça // w = 1 D[v] := min (D[v], D[w] + peso aresta (w,v))
0
![Page 35: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/35.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
1
2 5
4 3
S = {1} D = 01 ∞ 3 10
1 10
3
5 1
2
6 2 1 3 4 5
algoritmo: para todo vértice v adjacente ao vértice w faça // w = 1 D[v] := min (D[v], D[w] + peso aresta (w,v))
ação: D[2] = 1, D[4] = 3, D[5] = 10
0
![Page 36: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/36.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
1
2 5
4 3
S = {1} D = 01 ∞ 3 10
5 1
2
6 2 1 3 4 5
algoritmo: encontre um vértice w ∈ V – S tal que D[w] seja mínimo
0
1 10
3
![Page 37: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/37.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2} D = 01 ∞ 3 10
2 1 3 4 5
algoritmo: encontre um vértice w ∈ V – S tal que D[w] seja mínimo ação: adiciona vértice 2 a S
0
1
2 5
4 3
5 1
2
6
1 10
3
![Page 38: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/38.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2} D = 01 ∞ 3 10
2 1 3 4 5 0
algoritmo: para todo vértice v adjacente ao vértice w faça // w = 2 D[v] := min (D[v], D[w] + peso aresta (w,v))
1
2 5
4 3
5 1
2
6
1 10
3
![Page 39: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/39.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2} D = 01 6 3 10
2 1 3 4 5 0
algoritmo: para todo vértice v adjacente ao vértice w faça // w = 2 D[v] := min (D[v], D[w] + peso aresta (w,v))
ação: D[3] = 6
1
2 5
4 3
5 1
2
6
1 10
3
![Page 40: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/40.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2} D = 01 6 3 10
2 1 3 4 5 0
1
2 5
4 3
1
2
6
10
3
5
1
algoritmo: encontre um vértice w ∈ V – S tal que D[w] seja mínimo
![Page 41: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/41.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2,4} D = 01 6 3 10
2 1 3 4 5 0
1
2 5
4 3
1
2
6
10
3
5
1
algoritmo: encontre um vértice w ∈ V – S tal que D[w] seja mínimo ação: adiciona vértice 4 a S
![Page 42: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/42.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2,4} D = 01 6 3 10
2 1 3 4 5 0
1
2 5
4 3
1
2
6
10
3
5
1
algoritmo: para todo vértice v adjacente ao vértice w faça // w = 4 D[v] := min (D[v], D[w] + peso aresta (w,v))
![Page 43: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/43.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2,4} D = 01 5 3 9
2 1 3 4 5 0
1
2 5
4 3
1
2
6
10
3
5
1
algoritmo: para todo vértice v adjacente ao vértice w faça // w = 4 D[v] := min (D[v], D[w] + peso aresta (w,v))
ação: D[3] = 6, D[5] = 9
![Page 44: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/44.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2,4} D = 01 5 3 9
2 1 3 4 5 0
1
2 5
4 3
1
2
6
10
3
5
1
algoritmo: encontre um vértice w ∈ V – S tal que D[w] seja mínimo
![Page 45: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/45.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2,4,3} D = 01 5 3 9
2 1 3 4 5 0
1
2
4 3
1
2
6
10
3
5
1
algoritmo: encontre um vértice w ∈ V – S tal que D[w] seja mínimo ação: adiciona vértice 3 a S
5
![Page 46: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/46.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2,4,3} D = 01 5 3 9
2 1 3 4 5 0
1
2
4
1
2
6
10
3
5
1
algoritmo: para todo vértice v adjacente ao vértice w faça // w = 3 D[v] := min (D[v], D[w] + peso aresta (w,v))
5
3
![Page 47: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/47.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2,4,3} D = 01 5 3 6
2 1 3 4 5 0
1
2
4
1
2
6
10
3
5
1
algoritmo: para todo vértice v adjacente ao vértice w faça // w = 3 D[v] := min (D[v], D[w] + peso aresta (w,v))
ação: D[5] = 6
5
3
![Page 48: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/48.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2,4,3} D = 01 5 3 6
2 1 3 4 5 0
1
2
4
1
2
6
10
3
5
1
5
3
algoritmo: encontre um vértice w ∈ V – S tal que D[w] seja mínimo
![Page 49: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/49.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2,4,3,5} D = 01 5 3 6
2 1 3 4 5 0
1
2
4
1
2
6
10
3
5
1
5
3
algoritmo: encontre um vértice w ∈ V – S tal que D[w] seja mínimo ação: adiciona vértice 5 a S
![Page 50: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/50.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2,4,3,5} D = 01 5 3 6
2 1 3 4 5 0
1
2
4
1
2
6
10
3
5
1
5
3
algoritmo: para todo vértice v adjacente ao vértice w faça // w = 5 D[v] := min (D[v], D[w] + peso aresta (w,v))
![Page 51: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/51.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2,4,3,5} D = 01 5 3 6
2 1 3 4 5 0
1
2
4
1
2
6
10
3
5
1
5
3
algoritmo: encontre um vértice w ∈ V – S tal que D[w] seja mínimo
![Page 52: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/52.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2,4,3,5} D = 01 5 3 6
2 1 3 4 5 0
1
2
4
1
2
6
10
3
5
1
5
3
FIM DO ALGORITMO
![Page 53: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/53.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA -‐ EXEMPLO
procedimento Dijkstra(origem: TVertice, var G: TGrafo) variáveis D: vetor[TVertice] de TPeso; w: TVertice; S, V: conjunto de TVertice;
início S := {origem}; V := {todos os vértices de G}; D[origem] := 0; para i:=1 até G.NumVertices faça início se i != origem e existe a aresta (origem, i) então D[i] := Peso da aresta (origem, i) senão D[i] := ∞; fim; enquanto S ≠ V faça início encontre um vértice w ∈ V – S tal que D[w] é mínimo; S := S ∪ {w}; para todo v adjacente a w faça D[v] := min(D[v],D[w] + Peso da aresta (w,v)); fim;
fim;
![Page 54: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/54.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2,4,3,5} D = 01 5 3 6
2 1 3 4 5 0
1
2
4
1
2
6
10
3
5
1
5
3
caminho mais curto entre 1 e 2: 1
![Page 55: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/55.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2,4,3,5} D = 01 5 3 6
2 1 3 4 5 0
1
2
4
1
2
6
10
3
5
5
3
caminho mais curto entre 1 e 3: 5
1
![Page 56: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/56.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2,4,3,5} D = 01 5 3 6
2 1 3 4 5 0
1
2
4 6
10
5
1
5
3
caminho mais curto entre 1 e 4: 3
3
1
2
![Page 57: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/57.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA
S = {1,2,4,3,5} D = 01 5 3 6
2 1 3 4 5 0
1
2
4
1
2
6
10
5
1
5
3
caminho mais curto entre 1 e 5: 6
3
![Page 58: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/58.jpg)
CAMINHOS MAIS CURTOS: ALGORITMO DE DIJKSTRA ¢ Vetor de antecessores pode ser usado para reconstruir o caminho mais curto entre o vér5ce origem e cada vér5ce � vetor Antecessor, tal que Antecessor[v] contém o vér5ce imediatamente anterior ao vér5ce v no caminho mais curto.
� técnica similar à u5lizada na busca em largura.
![Page 59: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/59.jpg)
¢ Caracterís5ca � boa implementação da fila de prioridade
¢ Fila de prioridade (heap) � organiza os vér5ces em V-‐S � provê custo de busca e atualização/inserção/remoção no heap de (O log |V|)
Algoritmo de Dijkstra: Complexidade Otimizada
O(|A| log |V|)
![Page 60: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/60.jpg)
CAMINHOS MAIS CURTOS: ALGORITMOS ESPECIALIZADOS ¢ De origem única
� arestas podem ter peso nega5vo � podem exis5r ciclos (inclusive nega5vos)
¢ algoritmo de Bellman-‐Ford
¢ De origem única � arestas podem ter peso nega5vo � não podem exis5r ciclos
¢ algoritmo baseado na ordenação topológica
![Page 61: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/61.jpg)
CAMINHOS MAIS CURTOS: ALGORITMOS ESPECIALIZADOS ¢ Entre todos os pares de vérIces
� arestas podem ter peso nega5vo � podem exis5r ciclos (somente posi5vos)
¢ algoritmo de Floyd (ou Floyd-‐Warshall)
¢ Entre todos os pares de vérIces � arestas podem ter peso nega5vo � podem exis5r ciclos (somente posi5vos) � grafos esparsos
¢ algoritmo de Johnson
![Page 62: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/62.jpg)
CAMINHOS MAIS CURTOS: ALGORITMOS ESPECIALIZADOS ¢ Existe um caminho entre dois vérIces?
� algoritmo de Warshall ¢ Algoritmo A*
� proposto por Peter Hart, Nils Nilsson e Bertram Raphael do Stanford Research Ins5tute em 1968, para determinar o caminho a ser navegado pelo robo Shakey, em uma sala com obstáculos
� pode ser usado para determinar os caminhos mais curtos entre um par específico de vér5ces
¢ ...
![Page 63: Grafos – Caminhos mais Curtoswiki.icmc.usp.br/images/7/74/SCC0603022016GrafosCaminhos.pdf · Grafos – Caminhos mais Curtos Profa.Elaine Parros’Machado’de’Sousa’ adaptações:*Cris.na*Dutra*de*Aguiar*Ciferri*](https://reader033.fdocuments.net/reader033/viewer/2022043006/5f902b1a54f3d14a8e55b959/html5/thumbnails/63.jpg)
BIBLIOGRAFIA ¢ N. Ziviani. Projeto de Algoritmos, Thomson, 2a. Edição, 2004.
¢ T. H. Cormen, C. E. Leiserson and R. L. Rivest. Introduc5on to Algorithms, MIT Press, 2nd Edi5on, 2001.