SlideShare uma empresa Scribd logo
1 de 26
Caminhos Mínimos
Marcos Castro
Um motorista deseja obter o caminho mínimo (mais curto) entre Campinas e
Araçatuba, duas cidades de São Paulo. Dado um mapa do estado de São Paulo
contendo as distâncias entre cada par de interseções adjacentes, como obter o
caminho mínimo entre as duas cidades?
Nesse caso nós podemos modelar o mapa rodoviário como um grafo em que
vértices representam as interseções, arestas representam segmentos de estrada
entre interseções e o peso de cada aresta, a distância entre interseções.
Nesta seção trataremos do problema de encontrar o caminho mínimo entre
dois vértices de um grafo orientado valorado G = (V, E).
O problema do motorista descrito anteriormente é equivalente a obter os
caminhos mínimos a partir de uma única origem.
Dado um grafo orientado valorado G = (V, E), o peso de um caminho
c = (v0, v1, v2, ..., vk) é a soma de todos os pesos das arestas do caminho:
p(c) = ∑
k
i=1 = p(vi-1, vi)
O caminho mínimo é definido por:
σ(u,v) = {min{p(c) : u -> v}, se existir um caminho de u a v,
∞, caso contrário.
Um caminho mínimo do vértice u ao vértice v é então definido como qualquer
caminho c com peso p(c) = σ(u, v).
O peso das arestas pode ser interpretado como outras métricas diferentes de
distâncias, tais como tempo, custo, penalidades, etc.
Um caminho mínimo em um grafo G = (V, E) não pode conter ciclo algum, uma
vez que a remoção do ciclo do caminho produz um caminho com mesmos
vértices origem e destino e um caminho de menor peso. Assim, podemos
assumir que caminhos mínimos não possuem ciclos.
Uma vez que qualquer caminho acíclico em G contém no máximo |V| vértices,
então o caminho contém no máximo |V|-1 arestas.
A representação de caminhos mínimos em um grafo G=(V, E) pode ser realizada
pela variável Antecessor. Para cada vértice v ∈ V o Antecessor[v] é outro vértice
u ∈ V ou nil.
O algoritmo para obter caminhos mínimos atribui a Antecessor os rótulos de
vértices de um caminho de antecessores com origem em um vértice v e que
anda para trás ao longo de um caminho mínimo de um vértice origem s até v.
Durante a execução do algoritmo para obter caminhos mínimos, os valores em
Antecessor[v] não necessariamente indicam caminhos mais curtos. Entretanto,
ao final do processamento Antecessor contém, de fato, uma árvore de
caminhos mínimos.
O algoritmo de Dijkstra encontra o menor caminho entre quaisquer dois
vértices do grafo, quando todos os arcos têm comprimento não-negativos.
O algoritmo de Dijkstra utiliza um procedimento iterativo, determinando, na
iteração 1, o vértice mais próximo de 1, na segunda iteração, o segundo vértice
mais próximo do vértice 1, e assim sucessivamente, até que em alguma iteração
o vértice N seja atingido.
O algoritmo mantém um conjunto S de vértices cujos caminhos mínimos até um
vértice origem já são conhecidos.
Este algoritmo utiliza a técnica de relaxamento. Para cada vértice v ∈ V o
atributo p[v] é um limite superior do peso de um caminho mínimo do vértice
origem s até v.
O vetor p[v] contém uma estimativa de um caminho mais curto.
No passo da inicialização é executado:
Antecessor[v] = nil ∀ v ∈ V
p[v] = 0 para o vértice origem s
p[v] = ∞ para v ∈ V - {s}
O processo de relaxamento de uma aresta (u, v) consiste em verificar se é
possível melhorar o melhor caminho obtido até o momento até v se passarmos
por u. Se isto acontecer então p[v] e Antecessor[v] devem ser atualizados.
Relaxamento de uma aresta:
Se p[v] > p[u] + peso da aresta (u, v)
então p[v] = p[u] + peso da aresta (u, v)
Antecessor[v] := u
procedure Dijkstra (Grafo, Raiz);
for v := 0 to Grafo.NumVertices-1 do
p[v] := Infinito;
Antecessor[v] := -1;
p[Raiz] := 0;
Constroi heap no vetor A;
S := Ø;
While heap > 1 do
u := RetiraMin(A);
S := S + u;
for v ∈ ListaAdjacentes[u] do
if p[v] > p[u] + peso da aresta (u,v)
then p[v] = p[u] + peso da aresta (u,v)
Antecessor[v] := u
S – conjunto solução
heap A – é uma fila de prioridades.
RetiraMin(A) – retirar o vértice u que tem a menor estimativa de caminhos
mínimos em comparação com qualquer vértice em V - S.
Caminho mínimo do vértice 0 ao vértice 4.
1 10
3
5 1 6
2
0
1
2 3
4
Iteração S d[0] d[1] d[2] d[3] d[4]
1 Ø ∞ ∞ ∞ ∞ ∞
0
1 10
1 3 10
5 1 6
2 3
0
1
2 3
4
Iteração S d[0] d[1] d[2] d[3] d[4]
1 Ø ∞ ∞ ∞ ∞ ∞
2 {0} 0 1 ∞ 3 10
0
1 10
1 3 10
5 1 6
2 3
6
0
1
2 3
4
Iteração S d[0] d[1] d[2] d[3] d[4]
1 Ø ∞ ∞ ∞ ∞ ∞
2 {0} 0 1 ∞ 3 10
3 {0,1} 0 1 6 3 10
0
1 10
1 3 9
5 1 6
2 3
5
0
1
2 3
4
Iteração S d[0] d[1] d[2] d[3] d[4]
1 Ø ∞ ∞ ∞ ∞ ∞
2 {0} 0 1 ∞ 3 10
3 {0,1} 0 1 6 3 10
4 {0,1,3} 0 1 5 3 9
0
1 10
1 3 6
5 1 6
2 3
5
0
1
2 3
4
Iteração S d[0] d[1] d[2] d[3] d[4]
1 Ø ∞ ∞ ∞ ∞ ∞
2 {0} 0 1 ∞ 3 10
3 {0,1} 0 1 6 3 10
4 {0,1,3} 0 1 5 3 9
5 {0,1,3,2} 0 1 5 3 6
0
1 10
1 3 6
5 1 6
2 3 Custo: 6
5
0
1
2 3
4
Iteração S d[0] d[1] d[2] d[3] d[4]
1 Ø ∞ ∞ ∞ ∞ ∞
2 {0} 0 1 ∞ 3 10
3 {0,1} 0 1 6 3 10
4 {0,1,3} 0 1 5 3 9
5 {0,1,3,2} 0 1 5 3 6
6 {0,1,3,2,4} 0 1 5 3 6
Caminho mínimo do vértice 5 ao vértice 2.
2
5 10 3
1
2
1
4 2
5
5
4
6
3
1
2
Iter S d[1] d[2] d[3] d[4] d[5] d[6]
1 Ø ∞ ∞ ∞ ∞ ∞ ∞
5
2 10
5 10 3
0 1
2
1
4 2
4 5
5
4
6
3
1
2
Iter S d[1] d[2] d[3] d[4] d[5] d[6]
1 Ø ∞ ∞ ∞ ∞ ∞ ∞
2 {5} ∞ ∞ 10 5 0 4
5
2 10
5 10 3
0 1
2
1
4 2
4 5 9
5
4
6
3
1
2
Iter S d[1] d[2] d[3] d[4] d[5] d[6]
1 Ø ∞ ∞ ∞ ∞ ∞ ∞
2 {5} ∞ ∞ 10 5 0 4
3 {5,6} 9 ∞ 10 5 0 4
5
2 7
5 10 3
0 1
2
1
4 2
4 5 7
5
4
6
3
1
2
Iter S d[1] d[2] d[3] d[4] d[5] d[6]
1 Ø ∞ ∞ ∞ ∞ ∞ ∞
2 {5} ∞ ∞ 10 5 0 4
3 {5,6} 9 ∞ 10 5 0 4
4 {5,6,4} 7 ∞ 7 5 0 4
5
2 7
5 10 3
0 1 9
2
1
4 2
4 5 7
5
4
6
3
1
2
Iter S d[1] d[2] d[3] d[4] d[5] d[6]
1 Ø ∞ ∞ ∞ ∞ ∞ ∞
2 {5} ∞ ∞ 10 5 0 4
3 {5,6} 9 ∞ 10 5 0 4
4 {5,6,4} 7 ∞ 7 5 0 4
5 {5,6,4,1} 7 9 7 5 0 4
5
2 7
5 10 3
0 1 9
2
1
4 2
4 5 7
5
4
6
3
1
2
Iter S d[1] d[2] d[3] d[4] d[5] d[6]
1 Ø ∞ ∞ ∞ ∞ ∞ ∞
2 {5} ∞ ∞ 10 5 0 4
3 {5,6} 9 ∞ 10 5 0 4
4 {5,6,4} 7 ∞ 7 5 0 4
5 {5,6,4,1,3} 7 9 7 5 0 4
5
2 7
5 10 3
0 1 9
2
1
4 2
Custo: 9
4 5 7
5
4
6
3
1
2
Iter S d[1] d[2] d[3] d[4] d[5] d[6]
1 Ø ∞ ∞ ∞ ∞ ∞ ∞
2 {5} ∞ ∞ 10 5 0 4
3 {5,6} 9 ∞ 10 5 0 4
4 {5,6,4} 7 ∞ 7 5 0 4
5 {5,6,4,1,3} 7 9 7 5 0 4
6 {5,6,4,1,3,2} 7 9 7 5 0 4
mcastrosouza@live.com
www.geeksbr.com
www.marcoscastro.me
www.twitter.com/mcastrosouza

Mais conteúdo relacionado

Mais procurados

Capítulo 23 comunicação entre processos
Capítulo 23   comunicação entre processosCapítulo 23   comunicação entre processos
Capítulo 23 comunicação entre processos
Faculdade Mater Christi
 
Introdução à Teoria dos Grafos
Introdução à Teoria dos GrafosIntrodução à Teoria dos Grafos
Introdução à Teoria dos Grafos
Bianca Dantas
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
Armando Daniel
 

Mais procurados (20)

Capítulo 23 comunicação entre processos
Capítulo 23   comunicação entre processosCapítulo 23   comunicação entre processos
Capítulo 23 comunicação entre processos
 
Grafos
GrafosGrafos
Grafos
 
Análise de Algoritmos - Método Guloso
Análise de Algoritmos - Método GulosoAnálise de Algoritmos - Método Guloso
Análise de Algoritmos - Método Guloso
 
Routing
RoutingRouting
Routing
 
Banco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - RelacionalBanco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - Relacional
 
Teoria dos Grafos - História e COnceitos Iniciais
Teoria dos Grafos - História e COnceitos IniciaisTeoria dos Grafos - História e COnceitos Iniciais
Teoria dos Grafos - História e COnceitos Iniciais
 
Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidor
 
Introdução à programação
Introdução à programação Introdução à programação
Introdução à programação
 
Introdução à Teoria dos Grafos
Introdução à Teoria dos GrafosIntrodução à Teoria dos Grafos
Introdução à Teoria dos Grafos
 
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de DadosBanco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmos
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 
Manual de portugol
Manual de portugolManual de portugol
Manual de portugol
 
Javascript Orientado a Objeto
Javascript Orientado a ObjetoJavascript Orientado a Objeto
Javascript Orientado a Objeto
 
Ficheiros em JAVA
Ficheiros em JAVAFicheiros em JAVA
Ficheiros em JAVA
 
Matrizes - Exercícios Resolvidos
Matrizes - Exercícios ResolvidosMatrizes - Exercícios Resolvidos
Matrizes - Exercícios Resolvidos
 

Semelhante a Caminhos Mínimos - Algoritmo de Dijkstra

Cinematica02
Cinematica02Cinematica02
Cinematica02
drrdx7
 
Ita2006 3dia
Ita2006 3diaIta2006 3dia
Ita2006 3dia
cavip
 
Apresentação 2
Apresentação 2Apresentação 2
Apresentação 2
thiago oda
 
Trigonometria ponteiros relogio
Trigonometria ponteiros relogioTrigonometria ponteiros relogio
Trigonometria ponteiros relogio
trigono_metria
 

Semelhante a Caminhos Mínimos - Algoritmo de Dijkstra (20)

Aulas 11-guloso Algoritmos
Aulas 11-guloso AlgoritmosAulas 11-guloso Algoritmos
Aulas 11-guloso Algoritmos
 
Treinamento Para Competições de Programação - All Pairs Shortest Paths - O Al...
Treinamento Para Competições de Programação - All Pairs Shortest Paths - O Al...Treinamento Para Competições de Programação - All Pairs Shortest Paths - O Al...
Treinamento Para Competições de Programação - All Pairs Shortest Paths - O Al...
 
Treinamento para Competições de Programacão - Single-Source Shortest Paths: D...
Treinamento para Competições de Programacão - Single-Source Shortest Paths: D...Treinamento para Competições de Programacão - Single-Source Shortest Paths: D...
Treinamento para Competições de Programacão - Single-Source Shortest Paths: D...
 
Árvores Espalhadas Mínimas
Árvores Espalhadas MínimasÁrvores Espalhadas Mínimas
Árvores Espalhadas Mínimas
 
Solucionário Capitulo4 FOX
Solucionário Capitulo4 FOXSolucionário Capitulo4 FOX
Solucionário Capitulo4 FOX
 
14 produto misto volume paralelepipedo
14 produto misto volume paralelepipedo14 produto misto volume paralelepipedo
14 produto misto volume paralelepipedo
 
Exerc_mecflu_eq_
Exerc_mecflu_eq_Exerc_mecflu_eq_
Exerc_mecflu_eq_
 
12042014
1204201412042014
12042014
 
24052014
2405201424052014
24052014
 
Cinematica02
Cinematica02Cinematica02
Cinematica02
 
Ita2006 3dia
Ita2006 3diaIta2006 3dia
Ita2006 3dia
 
Apresentação 2
Apresentação 2Apresentação 2
Apresentação 2
 
Lista 2 física
Lista 2   físicaLista 2   física
Lista 2 física
 
Trigonometria - Equações e inequações
Trigonometria - Equações e inequaçõesTrigonometria - Equações e inequações
Trigonometria - Equações e inequações
 
Círculo e circunferência 8º ano
Círculo e circunferência 8º anoCírculo e circunferência 8º ano
Círculo e circunferência 8º ano
 
Formula Luderiana Universal de 2a Ordem
Formula Luderiana Universal de 2a OrdemFormula Luderiana Universal de 2a Ordem
Formula Luderiana Universal de 2a Ordem
 
Trigonometria ponteiros relogio
Trigonometria ponteiros relogioTrigonometria ponteiros relogio
Trigonometria ponteiros relogio
 
Movimento retilíneo uniforme - MUV...ppt
Movimento retilíneo uniforme - MUV...pptMovimento retilíneo uniforme - MUV...ppt
Movimento retilíneo uniforme - MUV...ppt
 
Aulas_MB_2020_1-1.pdf
Aulas_MB_2020_1-1.pdfAulas_MB_2020_1-1.pdf
Aulas_MB_2020_1-1.pdf
 
Ficha geometria 11ano com resolução
Ficha geometria 11ano com resoluçãoFicha geometria 11ano com resolução
Ficha geometria 11ano com resolução
 

Mais de Marcos Castro

Mais de Marcos Castro (20)

Árvores de Decisão
Árvores de DecisãoÁrvores de Decisão
Árvores de Decisão
 
Colored de Bruijn Graphs
Colored de Bruijn GraphsColored de Bruijn Graphs
Colored de Bruijn Graphs
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de Programação
 
Bioinformática
BioinformáticaBioinformática
Bioinformática
 
Arquivos FASTQ
Arquivos FASTQArquivos FASTQ
Arquivos FASTQ
 
Ferramentas para Bioinformática
Ferramentas para BioinformáticaFerramentas para Bioinformática
Ferramentas para Bioinformática
 
A importância da Bioinformática
A importância da BioinformáticaA importância da Bioinformática
A importância da Bioinformática
 
Bioinformática
BioinformáticaBioinformática
Bioinformática
 
Redes Neurais Artificiais
Redes Neurais ArtificiaisRedes Neurais Artificiais
Redes Neurais Artificiais
 
Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro Viajante
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated Annealing
 
Expressões Regulares com Python 3
Expressões Regulares com Python 3Expressões Regulares com Python 3
Expressões Regulares com Python 3
 
Algoritmos gulosos
Algoritmos gulososAlgoritmos gulosos
Algoritmos gulosos
 
Programação dinâmica
Programação dinâmicaProgramação dinâmica
Programação dinâmica
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFS
 
Análise Assintótica
Análise AssintóticaAnálise Assintótica
Análise Assintótica
 
Listas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosListas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionários
 
Python - Set
Python - SetPython - Set
Python - Set
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - Dicionários
 
Tabela Hash
Tabela HashTabela Hash
Tabela Hash
 

Último

Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
azulassessoria9
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 
Expansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XVExpansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XV
lenapinto
 

Último (20)

6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
Slides 9º ano 2024.pptx- Geografia - exercicios
Slides 9º ano 2024.pptx- Geografia - exerciciosSlides 9º ano 2024.pptx- Geografia - exercicios
Slides 9º ano 2024.pptx- Geografia - exercicios
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)
 
Expansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XVExpansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XV
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 

Caminhos Mínimos - Algoritmo de Dijkstra

  • 2. Um motorista deseja obter o caminho mínimo (mais curto) entre Campinas e Araçatuba, duas cidades de São Paulo. Dado um mapa do estado de São Paulo contendo as distâncias entre cada par de interseções adjacentes, como obter o caminho mínimo entre as duas cidades? Nesse caso nós podemos modelar o mapa rodoviário como um grafo em que vértices representam as interseções, arestas representam segmentos de estrada entre interseções e o peso de cada aresta, a distância entre interseções.
  • 3. Nesta seção trataremos do problema de encontrar o caminho mínimo entre dois vértices de um grafo orientado valorado G = (V, E). O problema do motorista descrito anteriormente é equivalente a obter os caminhos mínimos a partir de uma única origem. Dado um grafo orientado valorado G = (V, E), o peso de um caminho c = (v0, v1, v2, ..., vk) é a soma de todos os pesos das arestas do caminho: p(c) = ∑ k i=1 = p(vi-1, vi)
  • 4. O caminho mínimo é definido por: σ(u,v) = {min{p(c) : u -> v}, se existir um caminho de u a v, ∞, caso contrário. Um caminho mínimo do vértice u ao vértice v é então definido como qualquer caminho c com peso p(c) = σ(u, v).
  • 5. O peso das arestas pode ser interpretado como outras métricas diferentes de distâncias, tais como tempo, custo, penalidades, etc. Um caminho mínimo em um grafo G = (V, E) não pode conter ciclo algum, uma vez que a remoção do ciclo do caminho produz um caminho com mesmos vértices origem e destino e um caminho de menor peso. Assim, podemos assumir que caminhos mínimos não possuem ciclos.
  • 6. Uma vez que qualquer caminho acíclico em G contém no máximo |V| vértices, então o caminho contém no máximo |V|-1 arestas. A representação de caminhos mínimos em um grafo G=(V, E) pode ser realizada pela variável Antecessor. Para cada vértice v ∈ V o Antecessor[v] é outro vértice u ∈ V ou nil. O algoritmo para obter caminhos mínimos atribui a Antecessor os rótulos de vértices de um caminho de antecessores com origem em um vértice v e que anda para trás ao longo de um caminho mínimo de um vértice origem s até v.
  • 7. Durante a execução do algoritmo para obter caminhos mínimos, os valores em Antecessor[v] não necessariamente indicam caminhos mais curtos. Entretanto, ao final do processamento Antecessor contém, de fato, uma árvore de caminhos mínimos.
  • 8. O algoritmo de Dijkstra encontra o menor caminho entre quaisquer dois vértices do grafo, quando todos os arcos têm comprimento não-negativos. O algoritmo de Dijkstra utiliza um procedimento iterativo, determinando, na iteração 1, o vértice mais próximo de 1, na segunda iteração, o segundo vértice mais próximo do vértice 1, e assim sucessivamente, até que em alguma iteração o vértice N seja atingido. O algoritmo mantém um conjunto S de vértices cujos caminhos mínimos até um vértice origem já são conhecidos.
  • 9. Este algoritmo utiliza a técnica de relaxamento. Para cada vértice v ∈ V o atributo p[v] é um limite superior do peso de um caminho mínimo do vértice origem s até v. O vetor p[v] contém uma estimativa de um caminho mais curto. No passo da inicialização é executado: Antecessor[v] = nil ∀ v ∈ V p[v] = 0 para o vértice origem s p[v] = ∞ para v ∈ V - {s}
  • 10. O processo de relaxamento de uma aresta (u, v) consiste em verificar se é possível melhorar o melhor caminho obtido até o momento até v se passarmos por u. Se isto acontecer então p[v] e Antecessor[v] devem ser atualizados. Relaxamento de uma aresta: Se p[v] > p[u] + peso da aresta (u, v) então p[v] = p[u] + peso da aresta (u, v) Antecessor[v] := u
  • 11. procedure Dijkstra (Grafo, Raiz); for v := 0 to Grafo.NumVertices-1 do p[v] := Infinito; Antecessor[v] := -1; p[Raiz] := 0; Constroi heap no vetor A; S := Ø; While heap > 1 do u := RetiraMin(A); S := S + u; for v ∈ ListaAdjacentes[u] do if p[v] > p[u] + peso da aresta (u,v) then p[v] = p[u] + peso da aresta (u,v) Antecessor[v] := u
  • 12. S – conjunto solução heap A – é uma fila de prioridades. RetiraMin(A) – retirar o vértice u que tem a menor estimativa de caminhos mínimos em comparação com qualquer vértice em V - S.
  • 13. Caminho mínimo do vértice 0 ao vértice 4. 1 10 3 5 1 6 2 0 1 2 3 4 Iteração S d[0] d[1] d[2] d[3] d[4] 1 Ø ∞ ∞ ∞ ∞ ∞
  • 14. 0 1 10 1 3 10 5 1 6 2 3 0 1 2 3 4 Iteração S d[0] d[1] d[2] d[3] d[4] 1 Ø ∞ ∞ ∞ ∞ ∞ 2 {0} 0 1 ∞ 3 10
  • 15. 0 1 10 1 3 10 5 1 6 2 3 6 0 1 2 3 4 Iteração S d[0] d[1] d[2] d[3] d[4] 1 Ø ∞ ∞ ∞ ∞ ∞ 2 {0} 0 1 ∞ 3 10 3 {0,1} 0 1 6 3 10
  • 16. 0 1 10 1 3 9 5 1 6 2 3 5 0 1 2 3 4 Iteração S d[0] d[1] d[2] d[3] d[4] 1 Ø ∞ ∞ ∞ ∞ ∞ 2 {0} 0 1 ∞ 3 10 3 {0,1} 0 1 6 3 10 4 {0,1,3} 0 1 5 3 9
  • 17. 0 1 10 1 3 6 5 1 6 2 3 5 0 1 2 3 4 Iteração S d[0] d[1] d[2] d[3] d[4] 1 Ø ∞ ∞ ∞ ∞ ∞ 2 {0} 0 1 ∞ 3 10 3 {0,1} 0 1 6 3 10 4 {0,1,3} 0 1 5 3 9 5 {0,1,3,2} 0 1 5 3 6
  • 18. 0 1 10 1 3 6 5 1 6 2 3 Custo: 6 5 0 1 2 3 4 Iteração S d[0] d[1] d[2] d[3] d[4] 1 Ø ∞ ∞ ∞ ∞ ∞ 2 {0} 0 1 ∞ 3 10 3 {0,1} 0 1 6 3 10 4 {0,1,3} 0 1 5 3 9 5 {0,1,3,2} 0 1 5 3 6 6 {0,1,3,2,4} 0 1 5 3 6
  • 19. Caminho mínimo do vértice 5 ao vértice 2. 2 5 10 3 1 2 1 4 2 5 5 4 6 3 1 2 Iter S d[1] d[2] d[3] d[4] d[5] d[6] 1 Ø ∞ ∞ ∞ ∞ ∞ ∞
  • 20. 5 2 10 5 10 3 0 1 2 1 4 2 4 5 5 4 6 3 1 2 Iter S d[1] d[2] d[3] d[4] d[5] d[6] 1 Ø ∞ ∞ ∞ ∞ ∞ ∞ 2 {5} ∞ ∞ 10 5 0 4
  • 21. 5 2 10 5 10 3 0 1 2 1 4 2 4 5 9 5 4 6 3 1 2 Iter S d[1] d[2] d[3] d[4] d[5] d[6] 1 Ø ∞ ∞ ∞ ∞ ∞ ∞ 2 {5} ∞ ∞ 10 5 0 4 3 {5,6} 9 ∞ 10 5 0 4
  • 22. 5 2 7 5 10 3 0 1 2 1 4 2 4 5 7 5 4 6 3 1 2 Iter S d[1] d[2] d[3] d[4] d[5] d[6] 1 Ø ∞ ∞ ∞ ∞ ∞ ∞ 2 {5} ∞ ∞ 10 5 0 4 3 {5,6} 9 ∞ 10 5 0 4 4 {5,6,4} 7 ∞ 7 5 0 4
  • 23. 5 2 7 5 10 3 0 1 9 2 1 4 2 4 5 7 5 4 6 3 1 2 Iter S d[1] d[2] d[3] d[4] d[5] d[6] 1 Ø ∞ ∞ ∞ ∞ ∞ ∞ 2 {5} ∞ ∞ 10 5 0 4 3 {5,6} 9 ∞ 10 5 0 4 4 {5,6,4} 7 ∞ 7 5 0 4 5 {5,6,4,1} 7 9 7 5 0 4
  • 24. 5 2 7 5 10 3 0 1 9 2 1 4 2 4 5 7 5 4 6 3 1 2 Iter S d[1] d[2] d[3] d[4] d[5] d[6] 1 Ø ∞ ∞ ∞ ∞ ∞ ∞ 2 {5} ∞ ∞ 10 5 0 4 3 {5,6} 9 ∞ 10 5 0 4 4 {5,6,4} 7 ∞ 7 5 0 4 5 {5,6,4,1,3} 7 9 7 5 0 4
  • 25. 5 2 7 5 10 3 0 1 9 2 1 4 2 Custo: 9 4 5 7 5 4 6 3 1 2 Iter S d[1] d[2] d[3] d[4] d[5] d[6] 1 Ø ∞ ∞ ∞ ∞ ∞ ∞ 2 {5} ∞ ∞ 10 5 0 4 3 {5,6} 9 ∞ 10 5 0 4 4 {5,6,4} 7 ∞ 7 5 0 4 5 {5,6,4,1,3} 7 9 7 5 0 4 6 {5,6,4,1,3,2} 7 9 7 5 0 4