aula 13 projeto e anÁlise de algoritmos - each.usp.br · projeto e anÁlise de algoritmos problema...
TRANSCRIPT
![Page 1: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/1.jpg)
AULA 13PROJETO E ANÁLISE DE
ALGORITMOS
Problema do caminho mais curto de uma única origem em grafosKarina Valdivia Delgado
![Page 2: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/2.jpg)
Roteiro
MotivaçãoRelaxamentoAlgoritmo de Dijkstra
![Page 3: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/3.jpg)
MotivaçãoSuponha que você deseja encontrar o caminho mais curto possível do Rio de Janeiro a São Paulo.Como determinar a rota mais curta?
![Page 4: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/4.jpg)
Caminho mais curto de origem única.Temos um grafo orientado ponderado G=(V,A)Uma função peso w: A → ℛO peso do caminho p=<v0,v1,...,vk> é: k
w(p)= ∑ w(vi-1,vi) i=1
Definimos o peso do caminho mais curto desde u até v por:
![Page 5: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/5.jpg)
Sub-estrutura ótimaSeja G=(V,A) um grafo orientado ponderado, com função peso w:A→ℛ:Seja o caminho p=<v1,v2,...,vk> um caminho mais curto de v1 até vk. Seja pij=<vi,vi+1,,...,vj> o sub-caminho de p desde o vértice vi até o vértice vj, para quaisquer i e j tais que 1<=i<=j<=k.Então pij é um caminho mais curto de vi até vj.
![Page 6: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/6.jpg)
Sub-estrutura ótimaSuponha que o caminho mais curto de Rio de Janeiro a São Paulo é o mostrado no mapa.Então o sub-caminho de Guaratinguetá a São Paulo também é um sub-caminho mais curto entre elas.
![Page 7: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/7.jpg)
Arestas de peso negativoPodem existir arestas cujos pesos são negativos.Se existe um ciclo de peso negativo acessível a partir de s, os pesos de caminhos mais curtos não são bem definidos pois sempre será possível encontrar um caminho de peso menor que o já encontrado. 10 -12 30
s
qp
![Page 8: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/8.jpg)
Se existe um ciclo de peso negativo em algum caminho entre s até v, definimos: δ(s,v)=-∞s
s
Arestas de peso negativo
![Page 9: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/9.jpg)
Algoritmos para caminho mais curto de origem únicaAlgoritmo de Dijkstra: supõe que todos os pesos das arestas no grafo de entrada são não negativos. Ex: mapa rodoviário.
Algoritmo de Bellman-Ford: permite arestas de peso negativo no grafo de entrada e produz uma resposta correta detectando a existência de ciclos.
![Page 10: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/10.jpg)
Árvore do caminho mais curtoÉ uma árvore enraizada que contém um caminho mais curto desde a origem s até todo vértice acessível a partir de s.
![Page 11: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/11.jpg)
RelaxamentoOs algoritmos de Dijkstra e Bellman-Ford usam a técnica de relaxamento.
É calculada uma estimativa do caminho mais curto:
d[v]: limite superior sobre o peso de um caminho mais curto desde a origem s até v
![Page 12: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/12.jpg)
RelaxamentoInicialização: são inicializadas as estimativas de caminhos mais curtos e os predecessores de cada vértice.
INITIALIZE-SINGLE-SOURCE(V,A,s)
1. for cada vértice v ∈ V 2. d[v] ←∞ 3. π[v] ← NIL 4. d[s] ← 0
![Page 13: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/13.jpg)
RelaxamentoO processo de relaxar uma aresta (u,v) consiste em testar se podemos melhorar o caminho mais curto para v encontrado até agora pela passagem através de u e, neste caso, atualizar d[v] e π[v].
RELAX(u,v,w)
1. if d[v]>d[u]+w(u,v) 2. then d[v] ← d[u]+w(u,v) 3. π[v] ← u
![Page 14: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/14.jpg)
O algoritmo de DijkstraAlgoritmo guloso que resolve o problema de caminhos mais curtos de única origem.
Os pesos das arestas são não negativos. Conseqüentemente não possui ciclos de peso negativo.
O tempo de execução é inferior ao algoritmo de Bellman-Ford.
![Page 15: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/15.jpg)
O algoritmo de DijkstraTrabalha com dois conjuntos de vértices:S: vértices cuja menor distância para a raiz já é conhecida (definitiva).V-S: vértices em que a distância conhecida ainda é uma estimativa (provisória) .
Para isso, o algoritmo utiliza:S: um conjunto de vértices cuja distância já é definitiva.Q: uma fila de prioridade mínima de vértices com distância provisória
![Page 16: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/16.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
![Page 17: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/17.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d
π
Q
S
Fonte: Wikimedia Commons
![Page 18: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/18.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 ∞ ∞ ∞ ∞
π NIL NIL NIL NIL NIL
Q
S
Fonte: Wikimedia Commons
![Page 19: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/19.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 ∞ ∞ ∞ ∞
π NIL NIL NIL NIL NIL
Q ✔ ✔ ✔ ✔ ✔
S
Fonte: Wikimedia Commons
![Page 20: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/20.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 ∞ ∞ ∞ ∞
π NIL NIL NIL NIL NIL
Q ✔ ✔ ✔ ✔
S ✔
Fonte: Wikimedia Commons
![Page 21: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/21.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 ∞ ∞ ∞ ∞
π NIL NIL NIL NIL NIL
Q ✔ ✔ ✔ ✔
S ✔
Fonte: Wikimedia CommonsSerá que podemos melhorar o caminho mais curto para t encontrado até agora pela passagem através de s? Será que podemos melhorar o caminho mais curto para y encontrado até agora pela passagem através de s?
![Page 22: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/22.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 10 ∞ 5 ∞
π NIL s NIL s NIL
Q ✔ ✔ ✔ ✔
S ✔
Fonte: Wikimedia Commons
![Page 23: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/23.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 10 ∞ 5 ∞
π NIL s NIL s NIL
Q ✔ ✔ ✔
S ✔ ✔
Fonte: Wikimedia Commons
![Page 24: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/24.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 10 ∞ 5 ∞
π NIL s NIL s NIL
Q ✔ ✔ ✔
S ✔ ✔
Fonte: Wikimedia CommonsA distância definitiva (mínima) até o vértice y é 5.
![Page 25: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/25.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 10 ∞ 5 ∞
π NIL s NIL NIL NIL
Q ✔ ✔ ✔
S ✔ ✔
Fonte: Wikimedia CommonsSerá que podemos melhorar o caminho mais curto para t encontrado até agora pela passagem através de y? Será que podemos melhorar o caminho mais curto para x encontrado até agora pela passagem através de y? Será que podemos melhorar o caminho mais curto para z encontrado até agora pela passagem através de y?
![Page 26: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/26.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 8 14 5 7
π NIL y y s y
Q ✔ ✔ ✔
S ✔ ✔
Fonte: Wikimedia Commons
![Page 27: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/27.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 8 14 5 7
π NIL y y s y
Q ✔ ✔
S ✔ ✔ ✔
Fonte: Wikimedia Commons
![Page 28: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/28.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 8 14 5 7
π NIL y y s y
Q ✔ ✔
S ✔ ✔ ✔
Fonte: Wikimedia CommonsA distância definitiva (mínima) até o vértice z é 7.
![Page 29: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/29.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 8 14 5 7
π NIL y y s y
Q ✔ ✔
S ✔ ✔ ✔
Fonte: Wikimedia CommonsSerá que podemos melhorar o caminho mais curto para x encontrado até agora pela passagem através de z?
![Page 30: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/30.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 8 13 5 7
π NIL y z s y
Q ✔ ✔
S ✔ ✔ ✔
Fonte: Wikimedia Commons
![Page 31: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/31.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 8 13 5 7
π NIL y z s y
Q ✔
S ✔ ✔ ✔ ✔
Fonte: Wikimedia Commons
![Page 32: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/32.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 8 13 5 7
π NIL y z s y
Q ✔
S ✔ ✔ ✔ ✔
Fonte: Wikimedia CommonsA distância definitiva (mínima) até o vértice t é 8.
![Page 33: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/33.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 8 13 5 7
π NIL y z s y
Q ✔
S ✔ ✔ ✔ ✔
Fonte: Wikimedia CommonsSerá que podemos melhorar o caminho mais curto para x encontrado até agora pela passagem através de t?
![Page 34: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/34.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 8 9 5 7
π NIL y t s y
Q ✔
S ✔ ✔ ✔ ✔
Fonte: Wikimedia Commons
![Page 35: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/35.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 8 9 5 7
π NIL y t s y
Q
S ✔ ✔ ✔ ✔ ✔
Fonte: Wikimedia Commons
![Page 36: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/36.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 8 9 5 7
π NIL y t s y
Q
S ✔ ✔ ✔ ✔ ✔
Fonte: Wikimedia CommonsA distância definitiva (mínima) até o vértice x é 9.
![Page 37: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/37.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 8 9 5 7
π NIL y t s y
Q
S ✔ ✔ ✔ ✔ ✔
Fonte: Wikimedia Commons
![Page 38: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/38.jpg)
O algoritmo de DijkstraDIJKSTRA (V, A, w, s)1. INITIALIZE SINGLE-SOURCE (V,A, s)2. S ← { } 3. Q ← V4. while Q is not empty do5. u ← EXTRACT_MIN(Q) 6. S ← S ∪ {u} // Relaxar cada vértice adjacente a u7. for each vertex v in Adj[u] do8. RELAX (u, v, w)
VÉRTICE s t x y z
d 0 8 9 5 7
π NIL y t s y
Q
S ✔ ✔ ✔ ✔ ✔
Fonte: Wikimedia Commons
![Page 39: AULA 13 PROJETO E ANÁLISE DE ALGORITMOS - each.usp.br · PROJETO E ANÁLISE DE ALGORITMOS Problema do caminho mais curto de uma única origem em grafos Karina Valdivia Delgado. Roteiro](https://reader035.vdocuments.site/reader035/viewer/2022062910/5be50a3c09d3f2c44d8b6bac/html5/thumbnails/39.jpg)
AULA 13PROJETO E ANÁLISE DE
ALGORITMOS
Problema do caminho mais curto de uma única origem em grafosKarina Valdivia Delgado