grafos – caminhos mais curtoswiki.icmc.usp.br/images/7/74/scc0603022016grafoscaminhos.pdf ·...

63
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

Upload: others

Post on 04-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

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*

¢ 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*

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*

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*

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*

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.