Buscar

Caminho P.O II

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 78 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 78 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 78 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Continue navegando


Prévia do material em texto

Grafos
Raphael Ramos
Problema do menor caminho
Como encontrar o menor caminho em um grafo?
Problema do menor caminho
Imagine que uma transportadora decidiu alavancar as suas
entregas e fez uma promoc¸a˜o de 50% em todas as entregas da
cidade A ate´ a cidade F. Para que ela na˜o tenha preju´ızo ela
tera´ sempre que percorrer o menor caminho entre as cidades.
Como fazer isso?
A
B
D
C
E
F
Problema do menor caminho
Problema
Obter Caminhos interligando ve´rtices de um grafo, cujo
comprimento (custo) seja m´ınimo.
Implementac¸o˜es
Algoritmo de Dijkstra, Algoritmo de Bellman-Ford
Problema do menor caminho
Aplicac¸a˜o
• Redes de Computadores (Percurso entre Roteadores);
• Tra´fego Urbano;
• Sistemas Rodovia´rios, Ferrovia´rios e Ae´reos;
• Importante para va´rios outros problemas
Algoritmo de Dijikstra
Problema dos caminhos mais curtos de origem u´nica: para um
dado ve´rtice, chamado fonte, em um grafo ponderado
conectado, encontrar os caminhos mais curtos a todos os
outros ve´rtices.
Algoritmo de Dijikstra
Melhor algoritmo conhecido aplicado a grafos com pesos na˜o
negativos.
Algoritmo de Dijikstra
• Encontra os caminhos mais curtos de acordo com a
distaˆncia a uma dada fonte.
• Primeiro,encontra o caminho mais curto da fonte ao
ve´rtice mais pro´ximo e assim por diante.
• Em geral, antes da i-e´sima iterac¸a˜o iniciar, o algoritmo ja´
encontrou os menores caminhos para os outros i-1
ve´rtices pro´ximos da fonte.
Algoritmo de Dijikstra
• Estes ve´rtices, a fonte, e as arestas dos caminhos mais
curtos formam uma sub-a´rvore Ti.
• Como todos os pesos das arestas sa˜o na˜o negativos, o
ve´rtice seguinte mais pro´ximo da fonte pode ser
encontrado dentre os ve´rtices adjacentes aos ve´rtices de
Ti.
• Para identificar o i-e´simo ve´rtice mais pro´ximo, o
algoritmo calcula, para cada ve´rtice candidato u, a soma
da distaˆncia ao ve´rtice da a´rvore v mais pro´ximo e o
comprimento dv do caminho mais curto da fonte a` v e
enta˜o seleciona o ve´rtice cuja soma seja a menor.
Algoritmo de Dijikstra
Cada ve´rtice possui duas etiquetas:
• Um valor nume´rico d que indica o comprimento do
caminho mais curto da fonte ao ve´rtice encontrado pelo
algoritmo ate´ o momento. Quando um ve´rtice for
adicionado a a´rvore, d indica o comprimento do caminho
mais curto da fonte ate´ o ve´rtice.
• A outra etiqueta indica o nome do pro´ximo ao u´ltimo
ve´rtice neste caminho, i.e., o pai do ve´rtice na a´rvore
sendo constru´ıda.
Algoritmo de Dijikstra
• Com estas etiquetas, encontrar o ve´rtice mais pro´ximo u*
seguinte torna-se uma tarefa simples que consiste em
encontrar o ve´rtice candidato com o menor valor de d.
Algoritmo de Dijikstra
Apo´s identificado o ve´rtice u* a ser adicionado a a´rvore, as
seguintes operac¸o˜es devem ser realizadas:
• Mover o ve´rtice u* do ve´rtice candidato para o conjunto
dos ve´rtices da a´rvore;
• Para cada ve´rtice candidato remanescente u que estiver
conectado a u* por uma aresta de pesos(u*,u) tal que
du* + w(u*,u) ¡ dw, atualize as etiquetas de u por u* e
du* + w(u*,u) respectivamente.
Algoritmo de Dijikstra
Topologia da rede, custos dos enlaces conhecidos por todos os
no´s
• Realizado atrave´s de “difusa˜o do estado dos enlaces”;
• Todos os no´s teˆm mesma info.
Algoritmo de Dijikstra
Calcula caminhos de menor custo de um no´ origem para todos
os demais
• gera tabela de rotas para aquele no´
Algoritmo de Dijikstra
Iterativo: depois de k iterac¸o˜es, sabemos menor custo para k
destinos
Notac¸a˜o
• c(i,j): custo do enlace do no´ i ao no´ j. custo e´ infinito se
na˜o forem vizinhos diretos;
• D(V): valor corrente do custo do caminho da origem ao
destino V;
• p(V): no´ antecessor no caminho da origem ao no´ V;
• N conjunto de no´s cujo caminho de menor custo ja´ foi
determinado
O algoritmo de Dijkstra
1- Inicializac¸a˜o:
2- N = A
3- para todos os no´s V
4- se V for adjacente ao no´ A
5- enta˜o D(V) = c(A,V)
6- sena˜o D(V) = infinito
7- Repete
8- determina W na˜o contido em N tal que D(W) e´ o m´ınimo
9- adiciona W ao conjunto N
10- atualiza D(V) para todo V adjacente ao no´ W e ainda na˜o
em N:
11- D(V) = min( D(V), D(W) + c(W,V) )
12- /* novo custo ao no´ V ou e´ o custo velho a V ou o custo
do
13- menor caminho ao no´ W, mais o custo de W a V */
14- ate´ que todos no´s estejam em N
Exemplo
A
B
D
C
E
F
2
3
5
2
3
3
1
1
1
5
2
Resoluc¸a˜o do exemplo
Tabela: 1
Ve´rtices A B C D E F Ω
Estimativas 0 ∞ ∞ ∞ ∞ ∞ {A}
Precedentes - - - - - -
Resoluc¸a˜o do exemplo
Tabela: 2
Ve´rtices A B C D E F Ω
Estimativas 2 5 3 ∞ ∞ {B}
Precedentes A A A - -
Resoluc¸a˜o do exemplo
Tabela: 3
Ve´rtices A B C D E F Ω
Estimativas 5 3 ∞ ∞ {D}
Precedentes A A - -
Resoluc¸a˜o do exemplo
Tabela: 4
Ve´rtices A B C D E F Ω
Estimativas 5 4 ∞ {E}
Precedentes A D -
Resoluc¸a˜o do exemplo
Tabela: 5
Ve´rtices A B C D E F Ω
Estimativas 5 6 {C}
Precedentes A E
Resoluc¸a˜o do exemplo
Tabela: 6
Ve´rtices A B C D E F Ω
Estimativas 6 {F}
Precedentes A E
Soluc¸a˜o
Ω = {A,B,D,E,F,C}
Se queremos encontrar o caminho m´ınimo entre os no´s A e F,
e´ so´ trac¸armos o caminho dos precedentes dos no´s, por
exemplo:
F seu precedente e´ E.
E seu precedente e´ D.
D seu precedente e´ A.
Enta˜o o caminho m´ınimo entre A e F e´ {A-D-E-F}
Exemplo 2
A
B
C
D
E
F
2
3
5
2
5
1
2
4
Resoluc¸a˜o do exemplo
Tabela: 1
Ve´rtices A B C D E F Ω
Estimativas 0 ∞ ∞ ∞ ∞ ∞ {A}
Precedentes - - - - - -
Resoluc¸a˜o do exemplo
Tabela: 2
Ve´rtices A B C D E F Ω
Estimativas 2 3 ∞ ∞ ∞ {B}
Precedentes A A - - -
Resoluc¸a˜o do exemplo
Tabela: 3
Ve´rtices A B C D E F Ω
Estimativas 3 7 4 ∞ {C}
Precedentes A B B -
Resoluc¸a˜o do exemplo
Tabela: 4
Ve´rtices A B C D E F Ω
Estimativas 7 4 {E}
Precedentes B B
Resoluc¸a˜o do exemplo
Tabela: 5
Ve´rtices A B C D E F Ω
Estimativas 5 8 {D}
Precedentes E E
Resoluc¸a˜o do exemplo
Tabela: 6
Ve´rtices A B C D E F Ω
Estimativas 7 {F}
Precedentes D
Soluc¸a˜o
Ω = {A,B,D,E,F,C}
Se queremos encontrar o caminho m´ınimo entre os no´s A e F,
e´ so´ trac¸armos o caminho dos precedentes dos no´s, por
exemplo:
F seu precedente e´ D.
D seu precedente e´ E.
E seu precedente e´ B.
B seu precedente e´ A.
Enta˜o o caminho m´ınimo entre A e F e´ {A-B-E-D-F}
Exemplo 3
A
D
B
G
E
C
F Z
5
4
2
1
2
1
5
1
3
1
1
2
Resoluc¸a˜o do exemplo
Tabela: 1
Ve´rtices A B C D E F G Z Ω
Estimativas 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ {A}
Precedentes - - - - - - - -
Resoluc¸a˜o do exemplo
Tabela: 1
Ve´rtices A B C D E F G Z Ω
Estimativas 4 ∞ 5 ∞ ∞ 2 ∞ {G}
Precedentes A - A - - A -
Resoluc¸a˜o do exemplo
Tabela: 2
Ve´rtices A B C D E F G Z Ω
Estimativas 3 ∞ 3 ∞ ∞ ∞ {B}
Precedentes G - G - - -
Resoluc¸a˜o do exemplo
Tabela: 3
Ve´rtices A B C D E F G Z Ω
Estimativas 8 3 ∞ ∞ ∞ {D}
Precedentes B G - - -
Resoluc¸a˜o do exemplo
Tabela: 4
Ve´rtices A B C D E F G Z Ω
Estimativas 8 5 ∞ ∞ {E}
Precedentes B D - -
Resoluc¸a˜o do exemplo
Tabela: 5
Ve´rtices A B C D E F G Z Ω
Estimativas 8 6 8 {F}
Precedentes B E E
Resoluc¸a˜o do exemplo
Tabela: 6
Ve´rtices A B C D E F G Z Ω
Estimativas 8 8 {C}
Precedentes B E
Resoluc¸a˜o do exemplo
Tabela: 7
Ve´rtices A B C D E F G Z Ω
Estimativas 8 {Z}
Precedentes E
Soluc¸a˜o
Ω = {A,G,B,D,E,F,C,Z}
Se queremos encontrar o caminho m´ınimo entre os no´s A e Z,
e´ so´ trac¸armos o caminho dos precedentes dos no´s, por
exemplo:
Z seu precedente e´ E.
E seu precedente e´ D.
D seu precedente e´ G.
G seu precedentee´ A.
Enta˜o o caminho m´ınimo entre A e F e´ {A-G-D-E-Z}
Exemplo 4
S
U
X
V
Y
10
5
1
3 2
9
2
6 4
7
Resoluc¸a˜o do exemplo
Tabela: 1
Ve´rtices S U X V Y Ω
Estimativas 0 ∞ ∞ ∞ ∞ {A}
Precedentes - - - - -
Resoluc¸a˜o do exemplo
Tabela: 2
Ve´rtices S U X V Y Ω
Estimativas 10 5 ∞ ∞ {X}
Precedentes - S S - -
Resoluc¸a˜o do exemplo
Tabela: 3
Ve´rtices S U X V Y Ω
Estimativas 7 14 7 {U}
Precedentes - X - X X
Resoluc¸a˜o do exemplo
Tabela: 4
Ve´rtices S U X V Y Ω
Estimativas 8 7 {Y}
Precedentes - - - U X
Resoluc¸a˜o do exemplo
Tabela: 5
Ve´rtices S U X V Y Ω
Estimativas 8 {V}
Precedentes - - - U -
Soluc¸a˜o
Ω = {S,X,U,Y,V}
Se queremos encontrar o caminho m´ınimo entre os no´s S e V,
e´ so´ trac¸armos o caminho dos precedentes dos no´s, por
exemplo:
V seu precedente e´ U.
U seu precedente e´ X.
X seu precedente e´ S.
Enta˜o o caminho m´ınimo entre A e F e´ {S-X-U-V}
Exemplo 5
Encontre o caminho m´ınimo de A a G
A
B
C
D
E
F
G
3
7
9
5
9
2
9
3
8
10
3
3
Resoluc¸a˜o do exemplo 5
Tabela: 1
Ve´rtices A B C D E F G Ω
Estimativas 0 ∞ ∞ ∞ ∞ ∞ ∞ {A}
Precedentes - - - - - - -
Resoluc¸a˜o do exemplo 5
Tabela: 2
Ve´rtices A B C D E F G Ω
Estimativas 3 7 9 ∞ ∞ ∞ {B}
Precedentes A A A - - -
Resoluc¸a˜o do exemplo 5
Tabela: 3
Ve´rtices A B C D E F G Ω
Estimativas 7 8 12 ∞ ∞ {C}
Precedentes A B B - -
Resoluc¸a˜o do exemplo 5
Tabela: 4
Ve´rtices A B C D E F G Ω
Estimativas 8 12 16 ∞ {D}
Precedentes - B B C -
Resoluc¸a˜o do exemplo 5
Tabela: 5
Ve´rtices A B C D E F G Ω
Estimativas 11 16 18 {E}
Precedentes - D C D
Resoluc¸a˜o do exemplo 5
Tabela: 6
Ve´rtices A B C D E F G Ω
Estimativas 16 14 {G}
Precedentes - C E
Resoluc¸a˜o do exemplo 5
Tabela: 7
Ve´rtices A B C D E F G Ω
Estimativas 16 {F}
Precedentes - C
Caminho m´ınimo - A - B - D - E - G Valor = 14
Exemplo 6
Encontre o caminho m´ınimo de A a F
A B C
D E F
1
4
5
7
3
6
9
8 2
Resoluc¸a˜o do exemplo 6
Tabela: 1
Ve´rtices A B C D E F Ω
Estimativas 0 ∞ ∞ ∞ ∞ ∞ {A}
Precedentes - - - - - -
Resoluc¸a˜o do exemplo 6
Tabela: 2
Ve´rtices A B C D E F Ω
Estimativas 1 ∞ 4 ∞ ∞ {B}
Precedentes A - A - -
Resoluc¸a˜o do exemplo 6
Tabela: 3
Ve´rtices A B C D E F Ω
Estimativas 6 4 4 7 {D}
Precedentes B A B B
Resoluc¸a˜o do exemplo 6
Tabela: 4
Ve´rtices A B C D E F Ω
Estimativas 6 4 7 {E}
Precedentes B B B
Resoluc¸a˜o do exemplo 6
Tabela: 5
Ve´rtices A B C D E F Ω
Estimativas 6 6 {C}
Precedentes B E
Resoluc¸a˜o do exemplo 6
Tabela: 5
Ve´rtices A B C D E F Ω
Estimativas 6 {F}
Precedentes E
Caminho m´ınimo - A - B - E - F Valor = 6
Exemplo 7
Encontre o caminho m´ınimo de A a M.
A B C D
E F G H
I J L M
4
7
3
8
6
6 8
8
2
6
3
8
1 8
3 1 8
Resoluc¸a˜o do exemplo 7
Ve´rtices A B C D E F G H I J L M Ω
Estimativas 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ {A}
Precedentes - - - - - - - - - - - -
Tabela: 1
Resoluc¸a˜o do exemplo 7
Ve´rtices A B C D E F G H I J L M Ω
Estimativas 4 ∞ ∞ 7 ∞ ∞ ∞ ∞ ∞ ∞ ∞ {B}
Precedentes A - - A - - - - - - -
Tabela: 2
Resoluc¸a˜o do exemplo 7
Ve´rtices A B C D E F G H I J L M Ω
Estimativas 7 ∞ 7 12 ∞ ∞ ∞ ∞ ∞ ∞ {C}
Precedentes B - A B - - - - - -
Tabela: 3
Resoluc¸a˜o do exemplo 7
Ve´rtices A B C D E F G H I J L M Ω
Estimativas 13 7 12 13 ∞ ∞ ∞ ∞ ∞ {E}
Precedentes C A B C - - - - -
Tabela: 4
Resoluc¸a˜o do exemplo 7
Ve´rtices A B C D E F G H I J L M Ω
Estimativas 13 12 13 ∞ 9 ∞ ∞ ∞ {I}
Precedentes C B C - E - - -
Tabela: 5
Resoluc¸a˜o do exemplo 7
Ve´rtices A B C D E F G H I J L M Ω
Estimativas 13 12 13 ∞ 12 ∞ ∞ {F}
Precedentes C B C - I - -
Tabela: 6
Resoluc¸a˜o do exemplo 7
Ve´rtices A B C D E F G H I J L M Ω
Estimativas 13 13 ∞ 12 ∞ ∞ {J}
Precedentes C C - I - -
Tabela: 7
Resoluc¸a˜o do exemplo 7
Ve´rtices A B C D E F G H I J L M Ω
Estimativas 13 13 ∞ 13 ∞ {D}
Precedentes C C - J -
Tabela: 8
Resoluc¸a˜o do exemplo 7
Ve´rtices A B C D E F G H I J L M Ω
Estimativas 13 21 13 ∞ {G}
Precedentes C D J -
Tabela: 9
Resoluc¸a˜o do exemplo 7
Ve´rtices A B C D E F G H I J L M Ω
Estimativas 21 13 ∞ {L}
Precedentes D J -
Tabela: 10
Resoluc¸a˜o do exemplo 7
Ve´rtices A B C D E F G H I J L M Ω
Estimativas 21 21 {H}
Precedentes D L
Tabela: 11
Resoluc¸a˜o do exemplo 7
Ve´rtices A B C D E F G H I J L M Ω
Estimativas 21 {M}
Precedentes L
Tabela: 12
Caminho m´ınimo - A - E - I - J - L - M
Valor = 21