mc558 análise de algoritmos ii - home | instituto de ...lee/mc558/sp.pdf ·...
TRANSCRIPT
![Page 1: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/1.jpg)
MC558 — Analise de Algoritmos II
Cid C. de Souza Candida N. da Silva Orlando Lee
4 de maio de 2020
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 2: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/2.jpg)
Antes de mais nada. . .
Uma versao anterior deste conjunto de slides foi preparada porCid Carvalho de Souza e Candida Nunes da Silva para umainstancia anterior desta disciplina.
O que voces tem em maos e uma versao modificada preparadapara atender a meus gostos.
Nunca e demais enfatizar que o material e apenas um guia enao deve ser usado como unica fonte de estudo. Para issoconsultem a bibliografia (em especial o CLR ou CLRS).
Orlando Lee
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 3: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/3.jpg)
Agradecimentos (Cid e Candida)
Varias pessoas contribuıram direta ou indiretamente com apreparacao deste material.
Algumas destas pessoas cederam gentilmente seus arquivosdigitais enquanto outras cederam gentilmente o seu tempofazendo correcoes e dando sugestoes.
Uma lista destes “colaboradores” (em ordem alfabetica) edada abaixo:
Celia Picinin de MelloJose Coelho de PinaOrlando LeePaulo FeofiloffPedro RezendeRicardo DahabZanoni Dias
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 4: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/4.jpg)
Terminologia do CLRS
Um caminho em um grafo G = (V ,E ) e uma sequencia:
P := (v0, v1, . . . , vk)
em que vi ∈ V para i = 0, 1, 2, . . . , k e (vi−1, vi ) ∈ E parai = 1, 2, . . . , k .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 5: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/5.jpg)
Terminologia do CLRS
Um caminho em um grafo G = (V ,E ) e uma sequencia:
P := (v0, v1, . . . , vk)
em que vi ∈ V para i = 0, 1, 2, . . . , k e (vi−1, vi ) ∈ E parai = 1, 2, . . . , k .
Um caminho e simples se todos os vertices sao distintos.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 6: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/6.jpg)
Terminologia do CLRS
Um caminho em um grafo G = (V ,E ) e uma sequencia:
P := (v0, v1, . . . , vk)
em que vi ∈ V para i = 0, 1, 2, . . . , k e (vi−1, vi ) ∈ E parai = 1, 2, . . . , k .
Um caminho e simples se todos os vertices sao distintos.
Observacao: em muitos textos, o usual e chamar de passeio o queCLRS chama de caminho e chamar de caminho o que CLRS chamade caminho simples.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 7: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/7.jpg)
Terminologia do CLRS
Um ciclo em um grafo G = (V ,E ) e uma sequencia:
C := (v0, v1, . . . , vk)
em que v0 = vk , vi ∈ V para i = 0, 1, 2, . . . , k e (vi−1, vi ) ∈ E
para i = 1, 2, . . . , k .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 8: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/8.jpg)
Terminologia do CLRS
Um ciclo em um grafo G = (V ,E ) e uma sequencia:
C := (v0, v1, . . . , vk)
em que v0 = vk , vi ∈ V para i = 0, 1, 2, . . . , k e (vi−1, vi ) ∈ E
para i = 1, 2, . . . , k .
Um ciclo e simples se v1, v2, . . . , vk sao todos distintos.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 9: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/9.jpg)
Terminologia do CLRS
Um ciclo em um grafo G = (V ,E ) e uma sequencia:
C := (v0, v1, . . . , vk)
em que v0 = vk , vi ∈ V para i = 0, 1, 2, . . . , k e (vi−1, vi ) ∈ E
para i = 1, 2, . . . , k .
Um ciclo e simples se v1, v2, . . . , vk sao todos distintos.
Observacao: em muitos textos, o usual e chamar de passeiofechado o que CLRS chama de ciclo e chamar de ciclo o que CLRSchama de ciclo simples.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 10: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/10.jpg)
Problema do(s) Caminho(s) Mınimo(s)
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 11: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/11.jpg)
Problema do(s) Caminho(s) Mınimo(s)
Seja G um grafo orientado e suponha que para cada aresta (u, v)associamos um peso (custo) ω(u, v). Usaremos a notacao (G , ω).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 12: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/12.jpg)
Problema do(s) Caminho(s) Mınimo(s)
Seja G um grafo orientado e suponha que para cada aresta (u, v)associamos um peso (custo) ω(u, v). Usaremos a notacao (G , ω).
Problema do Caminho Mınimo entre Dois Vertices:Dados dois vertices s e t em (G , ω), encontrar um caminho(de peso) mınimo de s a t.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 13: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/13.jpg)
Problema do(s) Caminho(s) Mınimo(s)
Seja G um grafo orientado e suponha que para cada aresta (u, v)associamos um peso (custo) ω(u, v). Usaremos a notacao (G , ω).
Problema do Caminho Mınimo entre Dois Vertices:Dados dois vertices s e t em (G , ω), encontrar um caminho(de peso) mınimo de s a t.
Aparentemente, este problema nao e mais facil do que o
Problema dos Caminhos Mınimos com Mesma Origem:Dados (G , ω) e s ∈ V [G ], encontrar para cada vertice v de G ,um caminho mınimo de s a v .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 14: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/14.jpg)
Ciclos negativos
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 15: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/15.jpg)
Ciclos negativos
Um ciclo C e negativo se ω(C ) :=∑
e∈E(C) ω(e) < 0.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 16: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/16.jpg)
Ciclos negativos
Um ciclo C e negativo se ω(C ) :=∑
e∈E(C) ω(e) < 0.
Se (G , ω) contem ciclos negativos podem existir caminhos des a t de peso arbitrariamente pequeno.
1−4
1
1s u v t
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 17: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/17.jpg)
Ciclos negativos
Um ciclo C e negativo se ω(C ) :=∑
e∈E(C) ω(e) < 0.
Se (G , ω) contem ciclos negativos podem existir caminhos des a t de peso arbitrariamente pequeno.
1−4
1
1s u v t
Se existe um caminho mınimo de s a t, entao existe umcaminho mınimo de s a t que e simples.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 18: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/18.jpg)
Ciclos negativos
Um ciclo C e negativo se ω(C ) :=∑
e∈E(C) ω(e) < 0.
Se (G , ω) contem ciclos negativos podem existir caminhos des a t de peso arbitrariamente pequeno.
1−4
1
1s u v t
Se existe um caminho mınimo de s a t, entao existe umcaminho mınimo de s a t que e simples.
Os algoritmos que veremos trabalham com instancias semciclos negativos.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 19: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/19.jpg)
Distancia
Seja (G , ω) um grafo orientado ponderado e sejam s, t ∈ V [G ]. Adistancia de s a v e o peso de um caminho de peso mınimo de s at, se ele existir.Se nao existe caminho de s a t em G , entao dist(s, t) = ∞.Se existem caminhos de s a t de peso arbitrariamente pequeno,entao dist(s, t) = −∞.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 20: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/20.jpg)
Distancia
Seja (G , ω) um grafo orientado ponderado e sejam s, t ∈ V [G ]. Adistancia de s a v e o peso de um caminho de peso mınimo de s at, se ele existir.Se nao existe caminho de s a t em G , entao dist(s, t) = ∞.Se existem caminhos de s a t de peso arbitrariamente pequeno,entao dist(s, t) = −∞.
O Problema dos Caminhos Mınimos com Mesma Origem consisteem determinar dist(s, v) para todo v ∈ V (e achar os caminhosmınimos tambem).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 21: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/21.jpg)
Exemplo: grafo orientado acıclico
2 6 5 3
6
2 7 −1 −20
3 42
5
4
∞
r s t x y z
v s r t x y z
dist(s, v) 0 ∞ 2 6 5 3
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 22: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/22.jpg)
Exemplo: grafo orientado sem arestas negativas
8
11
29
7
10
5
7
2 3
1
9
2
5
4 6
5
0
r
s t
x y
w
v s r x y w t
dist(s, v) 0 8 5 7 9 11
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 23: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/23.jpg)
Exemplo: grafo orientado com arestas negativas
0 7
5
−2
−3
−42
7
9
6
8
7
4
−2
2
s
t
z
x
y
v s t x y z
dist(s, v) 0 2 4 7 −2
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 24: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/24.jpg)
Ideias comuns a todos os algoritmos
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 25: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/25.jpg)
Ideias comuns a todos os algoritmos
Usamos uma ideia similar a usada em Busca em Largura nosalgoritmos de caminhos mınimos que veremos.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 26: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/26.jpg)
Ideias comuns a todos os algoritmos
Usamos uma ideia similar a usada em Busca em Largura nosalgoritmos de caminhos mınimos que veremos.
Para cada vertice v ∈ V [G ] associamos um predecessor π[v ].
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 27: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/27.jpg)
Ideias comuns a todos os algoritmos
Usamos uma ideia similar a usada em Busca em Largura nosalgoritmos de caminhos mınimos que veremos.
Para cada vertice v ∈ V [G ] associamos um predecessor π[v ].
Ao final do algoritmo obtemos uma Arvore de CaminhosMınimos com raiz s.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 28: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/28.jpg)
Ideias comuns a todos os algoritmos
Usamos uma ideia similar a usada em Busca em Largura nosalgoritmos de caminhos mınimos que veremos.
Para cada vertice v ∈ V [G ] associamos um predecessor π[v ].
Ao final do algoritmo obtemos uma Arvore de CaminhosMınimos com raiz s.
Um caminho de s a v nesta arvore e um caminho mınimo de s
a v em (G , ω).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 29: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/29.jpg)
Subestrutura otima de caminhos mınimos
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 30: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/30.jpg)
Subestrutura otima de caminhos mınimos
Lema 24.1, CLRS Seja (G , ω) um grafo orientado e seja
P = (v1, v2, . . . , vk)
um caminho mınimo de v1 a vk .
Entao para quaisquer i , j com 1 ≤ i ≤ j ≤ k
Pij = (vi , vi+1, . . . , vj)
e um caminho mınimo de vi a vj .
v1 v2 vi vj vk
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 31: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/31.jpg)
Subestrutura otima de caminhos mınimos
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 32: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/32.jpg)
Subestrutura otima de caminhos mınimos
Prova. Suponha por contradicao que Pij = (vi , vi+1, . . . , vj) naoseja um caminho mınimo de vi a vj . Assim, existe um caminho Q
de vi a vj tal que ω(Q) < ω(Pij).
v1 v2 vi vj vk
Mas entao o caminho (v0, . . . , vi )Q(vj , . . . , vk) tem peso menorque o peso de P , uma contradicao.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 33: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/33.jpg)
Inicializacao
Initialize-Single-Source(G , s)1 para cada vertice v ∈ V [G ] faca2 d [v ] ← ∞3 π[v ] ← nil
4 d [s] ← 0
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 34: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/34.jpg)
Inicializacao
Initialize-Single-Source(G , s)1 para cada vertice v ∈ V [G ] faca2 d [v ] ← ∞3 π[v ] ← nil
4 d [s] ← 0
O valor d [v ] e uma estimativa superior de dist(s, v), o pesode um caminho mınimo de s a v .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 35: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/35.jpg)
Inicializacao
Initialize-Single-Source(G , s)1 para cada vertice v ∈ V [G ] faca2 d [v ] ← ∞3 π[v ] ← nil
4 d [s] ← 0
O valor d [v ] e uma estimativa superior de dist(s, v), o pesode um caminho mınimo de s a v .
Se d [v ] < ∞, entao o algoritmo encontrou ate aquelemomento um caminho de s a v com peso d [v ].
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 36: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/36.jpg)
Inicializacao
Initialize-Single-Source(G , s)1 para cada vertice v ∈ V [G ] faca2 d [v ] ← ∞3 π[v ] ← nil
4 d [s] ← 0
O valor d [v ] e uma estimativa superior de dist(s, v), o pesode um caminho mınimo de s a v .
Se d [v ] < ∞, entao o algoritmo encontrou ate aquelemomento um caminho de s a v com peso d [v ].
O caminho de s a v pode ser recuperado por meio dospredecessores π[ ], se nao houver ciclos negativos.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 37: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/37.jpg)
Relaxacao
Tenta melhorar a estimativa d [v ] examinando (u, v).
5
5 5
59
6
62
2
2
27
u
uu
u
vv
vv
Relax(u, v , ω)Relax(u, v , ω)
Relax(u, v , ω)1 se d [v ] > d [u] + ω(u, v) entao2 d [v ] ← d [u] + ω(u, v)3 π[v ] ← u
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 38: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/38.jpg)
Relaxacao dos vizinhos
Em cada iteracao o algoritmo seleciona um vertice u e para cadavizinho v de u aplica Relax(u, v , ω).
5
2
14
25
20
7
5
9
2
14
20
uu
∞
v1 v1
v2 v2
v3 v3
Relax(u, v , ω)1 se d [v ] > d [u] + ω(u, v) entao2 d [v ] ← d [u] + ω(u, v)3 π[v ] ← u
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 39: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/39.jpg)
Caminhos Mınimos
Veremos tres algoritmos baseados em relaxacao para tipos deinstancias diferentes de Problemas de Caminhos Mınimos.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 40: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/40.jpg)
Caminhos Mınimos
Veremos tres algoritmos baseados em relaxacao para tipos deinstancias diferentes de Problemas de Caminhos Mınimos.
G e acıclico: aplicacao de ordenacao topologica
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 41: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/41.jpg)
Caminhos Mınimos
Veremos tres algoritmos baseados em relaxacao para tipos deinstancias diferentes de Problemas de Caminhos Mınimos.
G e acıclico: aplicacao de ordenacao topologica
(G , ω) nao tem arestas de peso negativo: algoritmo deDijkstra
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 42: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/42.jpg)
Caminhos Mınimos
Veremos tres algoritmos baseados em relaxacao para tipos deinstancias diferentes de Problemas de Caminhos Mınimos.
G e acıclico: aplicacao de ordenacao topologica
(G , ω) nao tem arestas de peso negativo: algoritmo deDijkstra
(G , ω) tem arestas de peso negativo, mas nao contem ciclos
negativos: algoritmo de Bellman-Ford.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 43: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/43.jpg)
Caminhos mınimos em grafos acıclicos
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 44: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/44.jpg)
Caminhos mınimos em grafos acıclicos
Seja Gπ com conjunto de vertices Vπ = {s}∪{v ∈ V : π[v ] 6= nil}e conjunto de arestas Eπ = {(π[v ], v) : v ∈ V , π[v ] 6= nil}.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 45: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/45.jpg)
Caminhos mınimos em grafos acıclicos
Seja Gπ com conjunto de vertices Vπ = {s}∪{v ∈ V : π[v ] 6= nil}e conjunto de arestas Eπ = {(π[v ], v) : v ∈ V , π[v ] 6= nil}.
Entrada: grafo orientado acıclico (G , ω) e origem s ∈ V [G ].
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 46: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/46.jpg)
Caminhos mınimos em grafos acıclicos
Seja Gπ com conjunto de vertices Vπ = {s}∪{v ∈ V : π[v ] 6= nil}e conjunto de arestas Eπ = {(π[v ], v) : v ∈ V , π[v ] 6= nil}.
Entrada: grafo orientado acıclico (G , ω) e origem s ∈ V [G ].
Saıda: um vetor d [ ] tal que d [v ] = dist(s, v) para v ∈ V [G ]e um vetor π[ ] tal que Gπ e uma Arvore de Caminhos Mınimoscom raiz s de (G , ω).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 47: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/47.jpg)
Caminhos mınimos em grafos acıclicos
Seja Gπ com conjunto de vertices Vπ = {s}∪{v ∈ V : π[v ] 6= nil}e conjunto de arestas Eπ = {(π[v ], v) : v ∈ V , π[v ] 6= nil}.
Entrada: grafo orientado acıclico (G , ω) e origem s ∈ V [G ].
Saıda: um vetor d [ ] tal que d [v ] = dist(s, v) para v ∈ V [G ]e um vetor π[ ] tal que Gπ e uma Arvore de Caminhos Mınimoscom raiz s de (G , ω).
Dag-Shortest-Paths(G , ω, s)1 Ordene topologicamente os vertices de G
2 Initialize-Single-Source(G , s)3 para cada vertice u na ordem topologica faca
4 para cada v ∈ Adj[u] faca5 Relax(u, v , ω)6 devolva d , π
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 48: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/48.jpg)
Exemplo
6
2 7 −1 −20
3 42
5
4
∞∞∞∞∞
r s x y zt
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 49: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/49.jpg)
Exemplo
6
2 7 −1 −20
3 42
5
4
∞∞∞∞∞
r s x y zt
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 50: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/50.jpg)
Exemplo
2 6
6
2 7 −1 −20
3 42
5
4
∞∞∞
r s x y zt
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 51: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/51.jpg)
Exemplo
42
5
46
2 7 −1 −20
3
46 62∞
r s x y zt
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 52: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/52.jpg)
Exemplo
56 5 4
6
2 7 −1 −20
3 42
4
2∞
r s x y zt
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 53: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/53.jpg)
Exemplo
2 6 5 3
6
2 7 −1 −20
3 42
5
4
∞
r s x y zt
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 54: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/54.jpg)
Exemplo
2 6 5 3
6
2 7 −1 −20
3 42
5
4
∞
r s x y zt
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 55: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/55.jpg)
Complexidade Dag-Shortest-Paths
Dag-Shortest-Paths(G , ω, s)1 Ordene topologicamente os vertices de G
2 Initialize-Single-Source(G , s)3 para cada vertice u na ordem topologica faca
4 para cada v ∈ Adj[u] faca5 Relax(u, v , ω)6 devolva d , π
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 56: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/56.jpg)
Complexidade Dag-Shortest-Paths
Dag-Shortest-Paths(G , ω, s)1 Ordene topologicamente os vertices de G
2 Initialize-Single-Source(G , s)3 para cada vertice u na ordem topologica faca
4 para cada v ∈ Adj[u] faca5 Relax(u, v , ω)6 devolva d , π
Linha(s) Tempo total1 O(V + E )2 O(V )3-5 O(V + E )
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 57: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/57.jpg)
Complexidade Dag-Shortest-Paths
Dag-Shortest-Paths(G , ω, s)1 Ordene topologicamente os vertices de G
2 Initialize-Single-Source(G , s)3 para cada vertice u na ordem topologica faca
4 para cada v ∈ Adj[u] faca5 Relax(u, v , ω)6 devolva d , π
Linha(s) Tempo total1 O(V + E )2 O(V )3-5 O(V + E )
Complexidade de Dag-Shortest-Paths: O(V + E )
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 58: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/58.jpg)
Corretude Dag-Shortest-Paths
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 59: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/59.jpg)
Corretude Dag-Shortest-Paths
A corretude de Dag-Shortest-Paths pode ser demonstrada devarias formas.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 60: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/60.jpg)
Corretude Dag-Shortest-Paths
A corretude de Dag-Shortest-Paths pode ser demonstrada devarias formas.
Vamos mostrar alguns lemas/observacoes que serao uteis naanalise de corretude deste e dos outros algoritmos.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 61: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/61.jpg)
Desigualdade triangular
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 62: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/62.jpg)
Desigualdade triangular
Lema 24.10, CLRS Para toda aresta (u, v) temos que
dist(s, v) ≤ dist(s, u) + ω(u, v).
Prova. Suponha que existe um caminho mınimo P de s a u. Logo
P + (u, v) e um caminho de s a t de peso
ω(P) + ω(u, v) = dist(s, u) + ω(u, v).
Portanto, dist(s, v) ≤ dist(s, u) + ω(u, v).
u vsdist(s, u)
dist(s, v)
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 63: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/63.jpg)
Desigualdade triangular
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 64: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/64.jpg)
Desigualdade triangular
Se nao existe caminho de s a u em G (i.e., dist(s, u) = ∞), entaoclaramente dist(s, v) ≤ dist(s, u) + ω(u, v).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 65: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/65.jpg)
Desigualdade triangular
Se nao existe caminho de s a u em G (i.e., dist(s, u) = ∞), entaoclaramente dist(s, v) ≤ dist(s, u) + ω(u, v).
Finalmente, se existem caminhos de peso arbitrariamente pequenode s a u (i.e., dist(s, u) = −∞), entao dist(s, v) = −∞.
u vs
−∞
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 66: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/66.jpg)
Propriedades de um algoritmo baseado em relaxacao
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 67: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/67.jpg)
Propriedades de um algoritmo baseado em relaxacao
As propriedades que veremos valem para qualquer “algoritmo” quesatisfaz as restricoes abaixo.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 68: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/68.jpg)
Propriedades de um algoritmo baseado em relaxacao
As propriedades que veremos valem para qualquer “algoritmo” quesatisfaz as restricoes abaixo.
A inicializacao e feita por Initialize-Single-Source(G , s).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 69: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/69.jpg)
Propriedades de um algoritmo baseado em relaxacao
As propriedades que veremos valem para qualquer “algoritmo” quesatisfaz as restricoes abaixo.
A inicializacao e feita por Initialize-Single-Source(G , s).
Um valor d [v ] (e π[v ]) so pode ser modificado atraves de umachamada de Relax(u, v , ω) para alguma aresta (u, v).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 70: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/70.jpg)
Propriedades de um algoritmo baseado em relaxacao
As propriedades que veremos valem para qualquer “algoritmo” quesatisfaz as restricoes abaixo.
A inicializacao e feita por Initialize-Single-Source(G , s).
Um valor d [v ] (e π[v ]) so pode ser modificado atraves de umachamada de Relax(u, v , ω) para alguma aresta (u, v).
Observacao: o “algoritmo” pode executar outras instrucoes, masestamos interessados apenas nos valores de d [ ] e π[ ]. Assim,analisamos apenas o que acontece apos chamadas aInitialize-Single-Source ou Relax.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 71: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/71.jpg)
Propriedades de um algoritmo baseado em relaxacao
As propriedades que veremos valem para qualquer “algoritmo” quesatisfaz as restricoes abaixo.
A inicializacao e feita por Initialize-Single-Source(G , s).
Um valor d [v ] (e π[v ]) so pode ser modificado atraves de umachamada de Relax(u, v , ω) para alguma aresta (u, v).
Observacao: o “algoritmo” pode executar outras instrucoes, masestamos interessados apenas nos valores de d [ ] e π[ ]. Assim,analisamos apenas o que acontece apos chamadas aInitialize-Single-Source ou Relax.
A seguir apresentamos propriedades que valem durante a execucaodo “algoritmo”.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 72: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/72.jpg)
Propriedades de um algoritmo baseado em relaxacao
Initialize-Single-Source(G , s)1 para cada vertice v ∈ V [G ] faca2 d [v ] ← ∞3 π[v ] ← nil
4 d [s] ← 0
Relax(u, v , ω)1 se d [v ] > d [u] + ω(u, v) entao2 d [v ] ← d [u] + ω(u, v)3 π[v ] ← u
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 73: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/73.jpg)
Propriedades de um algoritmo baseado em relaxacao
Lema 24.11, CLRS Em qualquer iteracao, d [v ] ≥ dist(s, v) parav ∈ V [G ] e d [v ] nunca aumenta.Alem disso, se d [v ] torna-se igual a dist(s, v), entao seu valornunca mais muda.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 74: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/74.jpg)
Propriedades de um algoritmo baseado em relaxacao
Lema 24.11, CLRS Em qualquer iteracao, d [v ] ≥ dist(s, v) parav ∈ V [G ] e d [v ] nunca aumenta.Alem disso, se d [v ] torna-se igual a dist(s, v), entao seu valornunca mais muda.
Prova. Mostraremos que d [v ] ≥ dist(s, v) por inducao no numerode relaxacoes (chamadas a Relax).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 75: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/75.jpg)
Propriedades de um algoritmo baseado em relaxacao
Lema 24.11, CLRS Em qualquer iteracao, d [v ] ≥ dist(s, v) parav ∈ V [G ] e d [v ] nunca aumenta.Alem disso, se d [v ] torna-se igual a dist(s, v), entao seu valornunca mais muda.
Prova. Mostraremos que d [v ] ≥ dist(s, v) por inducao no numerode relaxacoes (chamadas a Relax).
Base: apos a inicializacao, claramente d [v ] ≥ dist(s, v) poisd [v ] = ∞ para v ∈ V − {s} e d [s] = ∞ ≥ dist(s, s) ∈ {0,−∞}.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 76: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/76.jpg)
Propriedades de um algoritmo baseado em relaxacao
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 77: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/77.jpg)
Propriedades de um algoritmo baseado em relaxacao
Hipotese de inducao: suponha que d [v ] ≥ dist(s, v) para todov ∈ V apos um certo numero de chamadas a Relax.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 78: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/78.jpg)
Propriedades de um algoritmo baseado em relaxacao
Hipotese de inducao: suponha que d [v ] ≥ dist(s, v) para todov ∈ V apos um certo numero de chamadas a Relax.
Vejamos o que acontece apos uma proxima chamada aRelax(u, v). Note que apenas o valor de d [v ] pode mudar.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 79: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/79.jpg)
Propriedades de um algoritmo baseado em relaxacao
Hipotese de inducao: suponha que d [v ] ≥ dist(s, v) para todov ∈ V apos um certo numero de chamadas a Relax.
Vejamos o que acontece apos uma proxima chamada aRelax(u, v). Note que apenas o valor de d [v ] pode mudar.
Se d [v ] nao e modificado, entao a propriedade se mantem. Se d [v ]e modificado, entao
d [v ] = d [u] + ω(u, v)
≥ dist(s, u) + ω(u, v) (HI)
≥ dist(s, v) (desigualdade triangular)
e o resultado segue.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 80: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/80.jpg)
Propriedades de um algoritmo baseado em relaxacao
Hipotese de inducao: suponha que d [v ] ≥ dist(s, v) para todov ∈ V apos um certo numero de chamadas a Relax.
Vejamos o que acontece apos uma proxima chamada aRelax(u, v). Note que apenas o valor de d [v ] pode mudar.
Se d [v ] nao e modificado, entao a propriedade se mantem. Se d [v ]e modificado, entao
d [v ] = d [u] + ω(u, v)
≥ dist(s, u) + ω(u, v) (HI)
≥ dist(s, v) (desigualdade triangular)
e o resultado segue.
Finalmente, suponha que d [v ] = dist(s, v). Entao o valor d [v ] naopode mais diminuir pois mostramos que d [v ] ≥ dist(s, v) durantea execucao do algoritmo.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 81: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/81.jpg)
Propriedades de um algoritmo baseado em relaxacao
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 82: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/82.jpg)
Propriedades de um algoritmo baseado em relaxacao
Corolario 24.12, CLRS Se nao existe caminho de s a v , entaod [v ] = dist(s, v) = ∞ em qualquer iteracao.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 83: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/83.jpg)
Propriedades de um algoritmo baseado em relaxacao
Corolario 24.12, CLRS Se nao existe caminho de s a v , entaod [v ] = dist(s, v) = ∞ em qualquer iteracao.
Prova. Pelo Lema 24.11, em qualquer iteracaod [v ] ≥ dist(s, v) = ∞. Como d [v ] = ∞ apos a inicializacao, oresultado segue.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 84: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/84.jpg)
Propriedades de um algoritmo baseado em relaxacao
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 85: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/85.jpg)
Propriedades de um algoritmo baseado em relaxacao
Relax(u, v , ω)1 se d [v ] > d [u] + ω(u, v) entao2 d [v ] ← d [u] + ω(u, v)3 π[v ] ← u
Lema 24.13 Imediatamente apos uma chamada Relax(u, v),temos que d [v ] ≤ d [u] + ω(u, v).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 86: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/86.jpg)
Propriedades de um algoritmo baseado em relaxacao
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 87: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/87.jpg)
Propriedades de um algoritmo baseado em relaxacao
Lema 24.14, CLRS Seja P um caminho mınimo de s a v cujaultima aresta e (u, v) e suponha que d [u] = dist(s, u) e que umasequencia de relaxacoes que inclui Relax(u, v) e executada.Entao imediatamente apos isto, temos que d [v ] = dist(s, v) e d [v ]nunca mais muda.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 88: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/88.jpg)
Propriedades de um algoritmo baseado em relaxacao
Lema 24.14, CLRS Seja P um caminho mınimo de s a v cujaultima aresta e (u, v) e suponha que d [u] = dist(s, u) e que umasequencia de relaxacoes que inclui Relax(u, v) e executada.Entao imediatamente apos isto, temos que d [v ] = dist(s, v) e d [v ]nunca mais muda.
Prova. Note que ω(P) = dist(s, v) = dist(s, u) + ω(u, v) peloLema 24.1. Entao apos a chamada Relax(u, v), temosd [v ] ≤ d [u] + ω(u, v) = dist(s, u) + ω(u, v) = dist(s, v). PeloLema 24.11, segue que d [v ] = dist(s, v) e d [v ] nunca maismuda.
s u v
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 89: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/89.jpg)
Propriedades de um algoritmo baseado em relaxacao
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 90: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/90.jpg)
Propriedades de um algoritmo baseado em relaxacao
Lema 24.15, CLRS Seja P = (v0 = s, v1, . . . , vk) um caminhomınimo de s = v0 a vk e suponha que as arestas (v0, v1),. . . ,(vk−1, vk) sao relaxadas nesta ordem.Entao apos as relaxacoes, temos d [vk ] = dist(s, vk) e d [vk ] nuncamais muda.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 91: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/91.jpg)
Propriedades de um algoritmo baseado em relaxacao
Lema 24.15, CLRS Seja P = (v0 = s, v1, . . . , vk) um caminhomınimo de s = v0 a vk e suponha que as arestas (v0, v1),. . . ,(vk−1, vk) sao relaxadas nesta ordem.Entao apos as relaxacoes, temos d [vk ] = dist(s, vk) e d [vk ] nuncamais muda.
Provaremos por inducao em i que apos a relaxacao da aresta(vi−1, vi ), temos d [vi ] = dist(s, vi ).
Base: i = 0 (antes de relaxar qualquer aresta de P). Claramente,d [s] = 0 = dist(s, s).
s = v0 v1 vi−1 vi vk
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 92: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/92.jpg)
Propriedades de um algoritmo baseado em relaxacao
Hipotese de inducao: suponha que d [vi−1] = dist(s, vi−1).Como (v0, . . . , vi ) e um caminho mınimo de s a vi (Lema 24.1),segue do Lema 24.14 que apos Relax(vi−1, vi ) temos qued [vi ] = dist(s, vi ) e este valor nunca mais muda peloLema 24.11.
s = v0 v1 vi−1 vi vk
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 93: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/93.jpg)
Propriedades de um algoritmo baseado em relaxacao
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 94: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/94.jpg)
Propriedades de um algoritmo baseado em relaxacao
Seja Gπ com conjunto de vertices Vπ = {s}∪{v ∈ V : π[v ] 6= nil}e conjunto de arestas Eπ = {(π[v ], v) : v ∈ V , π[v ] 6= nil}.
Lema 24.16, CLRS Suponha que (G , ω) nao contem ciclosnegativos atingıveis por s. Entao em qualquer iteracao apos achamada Initialize-Single-Source, o subgrafo Gπ e umaarvore de raiz s.
Lema 24.17, CLRS Suponha que (G , ω) nao contem ciclosnegativos atingıveis por s. Suponha que sejam feitas uma chamadaa Initialize-Single-Source e uma sequencia de chamadas aRelax que resulta em d [v ] = dist(s, v) para todo v ∈ V . EntaoGπ e uma Arvore de Caminhos Mınimos.
Omitimos as provas aqui.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 95: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/95.jpg)
Correcao de Dag-Shortest-Paths
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 96: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/96.jpg)
Correcao de Dag-Shortest-Paths
Dag-Shortest-Paths(G , ω, s)1 Ordene topologicamente os vertices de G
2 Initialize-Single-Source(G , s)3 para cada vertice u na ordem topologica faca
4 para cada v ∈ Adj[u] faca5 Relax(u, v , ω)6 devolva d , π
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 97: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/97.jpg)
Correcao de Dag-Shortest-Paths
Dag-Shortest-Paths(G , ω, s)1 Ordene topologicamente os vertices de G
2 Initialize-Single-Source(G , s)3 para cada vertice u na ordem topologica faca
4 para cada v ∈ Adj[u] faca5 Relax(u, v , ω)6 devolva d , π
Como os vertices estao em ordem topologica, as arestas dequalquer caminho mınimo P = (v0 = s, v1, . . . , vk) sao relaxadasna ordem (v0, v1),. . . ,(vk−1, vk).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 98: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/98.jpg)
Correcao de Dag-Shortest-Paths
Dag-Shortest-Paths(G , ω, s)1 Ordene topologicamente os vertices de G
2 Initialize-Single-Source(G , s)3 para cada vertice u na ordem topologica faca
4 para cada v ∈ Adj[u] faca5 Relax(u, v , ω)6 devolva d , π
Como os vertices estao em ordem topologica, as arestas dequalquer caminho mınimo P = (v0 = s, v1, . . . , vk) sao relaxadasna ordem (v0, v1),. . . ,(vk−1, vk).
Logo, pelo Lema 24.15 no final do algoritmo d [v ] = dist(s, v) paratodo v ∈ V .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 99: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/99.jpg)
Correcao de Dag-Shortest-Paths
Dag-Shortest-Paths(G , ω, s)1 Ordene topologicamente os vertices de G
2 Initialize-Single-Source(G , s)3 para cada vertice u na ordem topologica faca
4 para cada v ∈ Adj[u] faca5 Relax(u, v , ω)6 devolva d , π
Como os vertices estao em ordem topologica, as arestas dequalquer caminho mınimo P = (v0 = s, v1, . . . , vk) sao relaxadasna ordem (v0, v1),. . . ,(vk−1, vk).
Logo, pelo Lema 24.15 no final do algoritmo d [v ] = dist(s, v) paratodo v ∈ V .
Pelo Lema 24.17, o vetor π[ ] define uma Arvore de CaminhosMınimos com raiz s. Isto mostra que Dag-Shortest-Paths
funciona corretamente.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 100: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/100.jpg)
Correcao de Dag-Shortest-Paths (alternativa)
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 101: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/101.jpg)
Correcao de Dag-Shortest-Paths (alternativa)
Outra forma de mostrar a correcao de Dag-Shortest-Paths eobservar que vale a seguinte recorrencia para dist(s, v):
u vs
dist(s, v) =
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 102: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/102.jpg)
Correcao de Dag-Shortest-Paths (alternativa)
Outra forma de mostrar a correcao de Dag-Shortest-Paths eobservar que vale a seguinte recorrencia para dist(s, v):
u vs
dist(s, v) = minu:v∈Adj[u]
dist(s, u) + ω(u, v).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 103: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/103.jpg)
Correcao de Dag-Shortest-Paths (alternativa)
Dag-Shortest-Paths(G , ω, s)1 Ordene topologicamente os vertices de G
2 Initialize-Single-Source(G , s)3 para cada vertice u na ordem topologica faca
4 para cada v ∈ Adj[u] faca5 Relax(u, v , ω)6 devolva d , π
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 104: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/104.jpg)
Correcao de Dag-Shortest-Paths (alternativa)
Dag-Shortest-Paths(G , ω, s)1 Ordene topologicamente os vertices de G
2 Initialize-Single-Source(G , s)3 para cada vertice u na ordem topologica faca
4 para cada v ∈ Adj[u] faca5 Relax(u, v , ω)6 devolva d , π
A correcao de Dag-Shortest-Paths segue por inducao e daformula de recorrencia
dist(s, v) = minu:v∈Adj[u]
dist(s, u) + ω(u, v).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 105: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/105.jpg)
Perguntas
Pergunta 1. Como se resolve o problema de encontrar um caminhode peso maximo de s a t em um grafo orientado acıclico (G , ω)?
Pergunta 2. Como se resolve o Problema do Caminho Mınimo de s
a t em tempo linear para um grafo orientado em que todas asarestas tem o mesmo peso C > 0?
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 106: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/106.jpg)
Algoritmo de Dijkstra
Veremos agora um algoritmo para caminhos mınimos em grafosque podem conter ciclos, mas sem arestas de peso negativo.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 107: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/107.jpg)
Algoritmo de Dijkstra
Veremos agora um algoritmo para caminhos mınimos em grafosque podem conter ciclos, mas sem arestas de peso negativo.
O algoritmo foi proposto por E.W. Dijkstra e e bastante similar aoalgoritmo de Prim para o problema da Arvore Geradora Mınima.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 108: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/108.jpg)
Algoritmo de Dijkstra
O algoritmo de Dijkstra recebe um grafo orientado (G , ω) (semarestas de peso negativo) e um vertice s de G
e devolve
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 109: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/109.jpg)
Algoritmo de Dijkstra
O algoritmo de Dijkstra recebe um grafo orientado (G , ω) (semarestas de peso negativo) e um vertice s de G
e devolve
para cada v ∈ V [G ], o valor d [v ] = dist(s, v)
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 110: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/110.jpg)
Algoritmo de Dijkstra
O algoritmo de Dijkstra recebe um grafo orientado (G , ω) (semarestas de peso negativo) e um vertice s de G
e devolve
para cada v ∈ V [G ], o valor d [v ] = dist(s, v)(ou seja, o peso de um caminho mınimo de s a v) e
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 111: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/111.jpg)
Algoritmo de Dijkstra
O algoritmo de Dijkstra recebe um grafo orientado (G , ω) (semarestas de peso negativo) e um vertice s de G
e devolve
para cada v ∈ V [G ], o valor d [v ] = dist(s, v)(ou seja, o peso de um caminho mınimo de s a v) e
uma Arvore de Caminhos Mınimos com raiz s.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 112: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/112.jpg)
Algoritmo de Dijkstra
O algoritmo de Dijkstra recebe um grafo orientado (G , ω) (semarestas de peso negativo) e um vertice s de G
e devolve
para cada v ∈ V [G ], o valor d [v ] = dist(s, v)(ou seja, o peso de um caminho mınimo de s a v) e
uma Arvore de Caminhos Mınimos com raiz s.
Um caminho de s a v nesta arvore tem peso d [v ],
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 113: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/113.jpg)
Algoritmo de Dijkstra
O algoritmo de Dijkstra recebe um grafo orientado (G , ω) (semarestas de peso negativo) e um vertice s de G
e devolve
para cada v ∈ V [G ], o valor d [v ] = dist(s, v)(ou seja, o peso de um caminho mınimo de s a v) e
uma Arvore de Caminhos Mınimos com raiz s.
Um caminho de s a v nesta arvore tem peso d [v ],ou seja, e um caminho mınimo de s a v em (G , ω).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 114: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/114.jpg)
Revisao: algoritmos baseados em relaxacao
Initialize-Single-Source(G , s)1 para cada vertice v ∈ V [G ] faca2 d [v ] ← ∞3 π[v ] ← nil
4 d [s] ← 0
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 115: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/115.jpg)
Revisao: algoritmos baseados em relaxacao
Initialize-Single-Source(G , s)1 para cada vertice v ∈ V [G ] faca2 d [v ] ← ∞3 π[v ] ← nil
4 d [s] ← 0
O valor d [v ] e uma estimativa superior de dist(s, v), o pesode um caminho mınimo de s a v .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 116: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/116.jpg)
Revisao: algoritmos baseados em relaxacao
Initialize-Single-Source(G , s)1 para cada vertice v ∈ V [G ] faca2 d [v ] ← ∞3 π[v ] ← nil
4 d [s] ← 0
O valor d [v ] e uma estimativa superior de dist(s, v), o pesode um caminho mınimo de s a v .
Se d [v ] < ∞, entao o algoritmo encontrou ate aquelemomento um caminho de s a v com peso d [v ].
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 117: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/117.jpg)
Revisao: algoritmos baseados em relaxacao
Initialize-Single-Source(G , s)1 para cada vertice v ∈ V [G ] faca2 d [v ] ← ∞3 π[v ] ← nil
4 d [s] ← 0
O valor d [v ] e uma estimativa superior de dist(s, v), o pesode um caminho mınimo de s a v .
Se d [v ] < ∞, entao o algoritmo encontrou ate aquelemomento um caminho de s a v com peso d [v ].
O caminho de s a v pode ser recuperado por meio dospredecessores π[ ], se nao houver ciclos negativos.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 118: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/118.jpg)
Revisao: relaxacao
Tenta melhorar a estimativa d [v ] examinando (u, v).
5
5 5
59
6
62
2
2
27
u
uu
u
vv
vv
Relax(u, v , ω)Relax(u, v , ω)
Relax(u, v , ω)1 se d [v ] > d [u] + ω(u, v)2 entao d [v ] ← d [u] + ω(u, v)3 π[v ] ← u
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 119: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/119.jpg)
Revisao: relaxacao dos vizinhos
Em cada iteracao o algoritmo seleciona um vertice u e para cadavizinho v de u aplica Relax(u, v , ω).
5
2
14
25
20
7
5
9
2
14
20
uu
∞
v1 v1
v2 v2
v3 v3
Relax(u, v , ω)1 se d [v ] > d [u] + ω(u, v) faca2 d [v ] ← d [u] + ω(u, v)3 π[v ] ← u
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 120: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/120.jpg)
Revisao: algoritmos baseados em relaxacao
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 121: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/121.jpg)
Revisao: algoritmos baseados em relaxacao
As propriedades que veremos valem para qualquer “algoritmo” quesatisfaz as restricoes abaixo.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 122: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/122.jpg)
Revisao: algoritmos baseados em relaxacao
As propriedades que veremos valem para qualquer “algoritmo” quesatisfaz as restricoes abaixo.
A inicializacao e feita por Initialize-Single-Source(G , s).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 123: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/123.jpg)
Revisao: algoritmos baseados em relaxacao
As propriedades que veremos valem para qualquer “algoritmo” quesatisfaz as restricoes abaixo.
A inicializacao e feita por Initialize-Single-Source(G , s).
Um valor d [v ] (e π[v ]) so pode ser modificado atraves de umachamada de Relax(u, v , ω) para alguma aresta (u, v).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 124: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/124.jpg)
Revisao: algoritmos baseados em relaxacao
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 125: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/125.jpg)
Revisao: algoritmos baseados em relaxacao
Lema 24.10, CLRS Para toda aresta (u, v) temos que
dist(s, v) ≤ dist(s, u) + ω(u, v).
u vsdist(s, u)
dist(s, v)
Lema 24.15, CLRS Seja P = (v0 = s, v1, . . . , vk) um caminhomınimo de s = v0 a vk e suponha que as arestas (v0, v1),. . . ,(vk−1, vk) sao relaxadas nesta ordem.Entao apos as relaxacoes, temos d [vk ] = dist(s, vk) e d [vk ] nuncamais muda.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 126: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/126.jpg)
Revisao: algoritmos baseados em relaxacao
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 127: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/127.jpg)
Revisao: algoritmos baseados em relaxacao
Seja Gπ com conjunto de vertices Vπ = {s}∪{v ∈ V : π[v ] 6= nil}e conjunto de arestas Eπ = {(π[v ], v) : v ∈ V , π[v ] 6= nil}.
Lema 24.16, CLRS Suponha que (G , ω) nao contem ciclosnegativos atingıveis por s. Entao em qualquer iteracao apos achamada Initialize-Single-Source, o subgrafo Gπ e umaarvore de raiz s.
Lema 24.17, CLRS Suponha que (G , ω) nao contem ciclosnegativos atingıveis por s. Suponha que sejam feitas uma chamadaa Initialize-Single-Source e uma sequencia de chamadas aRelax que resulta em d [v ] = dist(s, v) para todo v ∈ V . EntaoGπ e uma Arvore de Caminhos Mınimos.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 128: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/128.jpg)
Ideia do algoritmo de Dijkstra
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 129: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/129.jpg)
Ideia do algoritmo de Dijkstra
Suponha que encontramos ate o momento um conjunto S
formado pelos vertices mais proximos de s.(Na primeira iteracao S = {s}).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 130: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/130.jpg)
Ideia do algoritmo de Dijkstra
Suponha que encontramos ate o momento um conjunto S
formado pelos vertices mais proximos de s.(Na primeira iteracao S = {s}).
O algoritmo mantem tambem uma Arvore de CaminhosMınimos formada apenas por vertices de S .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 131: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/131.jpg)
Ideia do algoritmo de Dijkstra
Suponha que encontramos ate o momento um conjunto S
formado pelos vertices mais proximos de s.(Na primeira iteracao S = {s}).
O algoritmo mantem tambem uma Arvore de CaminhosMınimos formada apenas por vertices de S .
A ideia e estender o conjunto S (i.e., a arvore) acrescentandoo vertice u em V − S que esteja mais proximo de s.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 132: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/132.jpg)
Ideia do algoritmo de Dijkstra
Suponha que encontramos ate o momento um conjunto S
formado pelos vertices mais proximos de s.(Na primeira iteracao S = {s}).
O algoritmo mantem tambem uma Arvore de CaminhosMınimos formada apenas por vertices de S .
A ideia e estender o conjunto S (i.e., a arvore) acrescentandoo vertice u em V − S que esteja mais proximo de s.
Um detalhe importante e como encontrar tal vertice.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 133: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/133.jpg)
Algoritmo de Dijkstra
Dijkstra(G , ω, s)1 Initialize-Single-Source(G , s)2 S ← ∅3 Q ← V [G ]4 enquanto Q 6= ∅ faca
5 u ← Extract-Min(Q)6 S ← S ∪ {u}7 para cada vertice v ∈ Adj[u] faca8 Relax(u, v , ω)9 devolva d , π
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 134: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/134.jpg)
Algoritmo de Dijkstra
Dijkstra(G , ω, s)1 Initialize-Single-Source(G , s)2 S ← ∅3 Q ← V [G ]4 enquanto Q 6= ∅ faca
5 u ← Extract-Min(Q)6 S ← S ∪ {u}7 para cada vertice v ∈ Adj[u] faca8 Relax(u, v , ω)9 devolva d , π
O conjunto Q e implementado como uma fila de prioridade comchave d .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 135: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/135.jpg)
Algoritmo de Dijkstra
Dijkstra(G , ω, s)1 Initialize-Single-Source(G , s)2 S ← ∅3 Q ← V [G ]4 enquanto Q 6= ∅ faca
5 u ← Extract-Min(Q)6 S ← S ∪ {u}7 para cada vertice v ∈ Adj[u] faca8 Relax(u, v , ω)9 devolva d , π
O conjunto Q e implementado como uma fila de prioridade comchave d .
O conjunto S nao e realmente necessario, mas simplifica a analisedo algoritmo.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 136: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/136.jpg)
Algoritmo de Dijkstra
Dijkstra(G , ω, s)1 Initialize-Single-Source(G , s)2 S ← ∅3 Q ← V [G ]4 enquanto Q 6= ∅ faca
5 u ← Extract-Min(Q)6 S ← S ∪ {u}7 para cada vertice v ∈ Adj[u] faca8 Relax(u, v , ω)9 devolva d , π
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 137: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/137.jpg)
Algoritmo de Dijkstra
Dijkstra(G , ω, s)1 Initialize-Single-Source(G , s)2 S ← ∅3 Q ← V [G ]4 enquanto Q 6= ∅ faca
5 u ← Extract-Min(Q)6 S ← S ∪ {u}7 para cada vertice v ∈ Adj[u] faca8 Relax(u, v , ω)9 devolva d , π
Mostraremos que em cada iteracao da linha 5, o vertice u comd [u] mınimo e realmente o vertice de V [G ]− S que esta maisproximo de s.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 138: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/138.jpg)
Exemplo (CLRS modificado)
0
10
5
7
2 3
1
9
2
3
5
4 6 ∞
∞
∞
∞
∞
r
s t
u v
w
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 139: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/139.jpg)
Exemplo (CLRS modificado)
10
5
0
10
5
7
2 3
1
9
2
3
5
4 6 ∞
∞
∞
r
s t
u v
w
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 140: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/140.jpg)
Exemplo (CLRS modificado)
8
5
14
7
0
10
5
7
2 3
1
9
2
3
5
4 6 ∞
r
s t
u v
w
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 141: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/141.jpg)
Exemplo (CLRS modificado)
8
6
5
4
7
12
10
5
7
2 3
1
9
2
3
5
13
0
r
s t
u v
w
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 142: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/142.jpg)
Exemplo (CLRS modificado)
82
6
9
7
12
10
5
7
2 3
1
9
2
5
4
5
0
r
s t
u v
w
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 143: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/143.jpg)
Exemplo (CLRS modificado)
82
5
4 6
7
10
5
7
2 3
1
9
25
9
0 11
r
s t
u v
w
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 144: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/144.jpg)
Exemplo (CLRS modificado)
8
11
29
7
10
5
7
2 3
1
9
2
5
4 6
5
0
r
s t
u v
w
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 145: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/145.jpg)
Correcao do algoritmo
Precisamos provar que quando o algoritmo para, temos que
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 146: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/146.jpg)
Correcao do algoritmo
Precisamos provar que quando o algoritmo para, temos que
d [v ] = dist(s, v) para todo v ∈ V [G ] e
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 147: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/147.jpg)
Correcao do algoritmo
Precisamos provar que quando o algoritmo para, temos que
d [v ] = dist(s, v) para todo v ∈ V [G ] e
o grafo Gπ e uma Arvore de Caminhos Mınimos com raiz s.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 148: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/148.jpg)
Invariante principal
O seguinte invariante vale no inıcio de cada iteracao da linha 4 noalgoritmo Dijkstra.
Invariante: d [x ] = dist(s, x) para cada x ∈ S .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 149: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/149.jpg)
Invariante principal
O seguinte invariante vale no inıcio de cada iteracao da linha 4 noalgoritmo Dijkstra.
Invariante: d [x ] = dist(s, x) para cada x ∈ S .
Claramente o invariante vale na primeira iteracao pois S = ∅.Tambem vale no inıcio da segunda iteracao pois S = {s} ed [s] = 0.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 150: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/150.jpg)
Invariante principal
O seguinte invariante vale no inıcio de cada iteracao da linha 4 noalgoritmo Dijkstra.
Invariante: d [x ] = dist(s, x) para cada x ∈ S .
Claramente o invariante vale na primeira iteracao pois S = ∅.Tambem vale no inıcio da segunda iteracao pois S = {s} ed [s] = 0.
No final do algoritmo, S e o conjunto dos vertices atingıveispor s. Portanto, se o invariante vale, para cada v ∈ V [G ], ovalor d [v ] e exatamente a distancia de s a v .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 151: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/151.jpg)
Demonstracao do invariante
O algoritmo de Dijkstra escolhe um vertice u com menord [u] em Q e atualiza S ← S ∪ {u}.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 152: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/152.jpg)
Demonstracao do invariante
O algoritmo de Dijkstra escolhe um vertice u com menord [u] em Q e atualiza S ← S ∪ {u}.
Basta verificar entao que neste momento d [u] = dist(s, u).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 153: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/153.jpg)
Demonstracao do invariante
O algoritmo de Dijkstra escolhe um vertice u com menord [u] em Q e atualiza S ← S ∪ {u}.
Basta verificar entao que neste momento d [u] = dist(s, u).
Suponha por contradicao que em alguma iteracao o algoritmoescolhe u tal que d [u] > dist(s, u).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 154: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/154.jpg)
Demonstracao do invariante
O algoritmo de Dijkstra escolhe um vertice u com menord [u] em Q e atualiza S ← S ∪ {u}.
Basta verificar entao que neste momento d [u] = dist(s, u).
Suponha por contradicao que em alguma iteracao o algoritmoescolhe u tal que d [u] > dist(s, u).
Podemos supor que u e o primeiro vertice para o qual isto ocorre.Note que u 6= s.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 155: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/155.jpg)
Demonstracao
Seja P um caminho mınimo de s a u (ou seja, com pesodist(s, u)). Seja y o primeiro vertice de P que nao pertence a S .Seja x o vertice em P que precede y .
s
u
x
y
P1
P2S
d [u] > dist(s, u)?
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 156: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/156.jpg)
Demonstracao
s
u
x
y
P1
P2S
d [u] > dist(s, u)?
Primeiro, mostraremos que d [y ] = dist(s, y).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 157: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/157.jpg)
Demonstracao
s
u
x
y
P1
P2S
d [u] > dist(s, u)?
Primeiro, mostraremos que d [y ] = dist(s, y).
Por hipotese, quando x foi colocado em S , d [x ] = dist(s, x).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 158: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/158.jpg)
Demonstracao
s
u
x
y
P1
P2S
d [u] > dist(s, u)?
Primeiro, mostraremos que d [y ] = dist(s, y).
Por hipotese, quando x foi colocado em S , d [x ] = dist(s, x).Neste instante, (x , y) foi relaxada e portanto, pelo Lema 24.11temos d [y ] = dist(s, y).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 159: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/159.jpg)
Demonstracao
s
u
x
y
P1
P2S
d [u] > dist(s, u)?
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 160: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/160.jpg)
Demonstracao
s
u
x
y
P1
P2S
d [u] > dist(s, u)?
Entaod [y ] = dist(s, y)
= ω(P1) + ω(x , y)≤ ω(P1) + ω(x , y) + ω(P2)= dist(s, u) < d [u].
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 161: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/161.jpg)
Demonstracao
s
u
x
y
P1
P2S
d [u] > dist(s, u)?
Entaod [y ] = dist(s, y)
= ω(P1) + ω(x , y)≤ ω(P1) + ω(x , y) + ω(P2)= dist(s, u) < d [u].
Mas entao d [y ] < d [u] o que contraria a escolha de u.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 162: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/162.jpg)
Demonstracao
Isto mostra que ao final do algoritmo de Dijkstra, temosd [v ] = dist(s, v) para todo v ∈ V [G ]. Do Lema 24.17 segue queGπ e uma Arvore de Caminhos Mınimos com raiz s de (G , ω).
A prova acima implica que os vertices u sao colocados em S emordem nao-decrescente dos valores dist(s, u).
Na demonstracao foi importante o fato de nao haver arestasnegativas no grafo. De fato, nao se pode garantir que o algoritmode Dijkstra funciona se o grafo de entrada nao satisfaz estarestricao.
Exercıcio. Encontre um grafo orientado ponderado com 4 verticespara o qual o algoritmo de Dijkstra nao funciona. Ha pelo menosum exemplo com apenas uma unica aresta negativa e sem ciclos depeso negativo.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 163: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/163.jpg)
Complexidade de tempo
Dijkstra(G , ω, s)1 Initialize-Single-Source(G , s)2 S ← ∅3 Q ← V [G ]4 enquanto Q 6= ∅ faca
5 u ← Extract-Min(Q)6 S ← S ∪ {u}7 para cada vertice v ∈ Adj[u] faca8 Relax(u, v , ω)9 devolva d , π
Depende de como a fila de prioridade Q e implementada.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 164: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/164.jpg)
Complexidade do algoritmo de Dijkstra
As linhas 1–3 correspondem a |V | chamadas a Insert.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 165: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/165.jpg)
Complexidade do algoritmo de Dijkstra
As linhas 1–3 correspondem a |V | chamadas a Insert.
O laco da linha 4 e executado O(V ) vezes.Total: O(V ) chamadas a Extract-Min.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 166: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/166.jpg)
Complexidade do algoritmo de Dijkstra
As linhas 1–3 correspondem a |V | chamadas a Insert.
O laco da linha 4 e executado O(V ) vezes.Total: O(V ) chamadas a Extract-Min.
O laco das linhas 7–8 e executado O(E ) vezes no total.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 167: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/167.jpg)
Complexidade do algoritmo de Dijkstra
As linhas 1–3 correspondem a |V | chamadas a Insert.
O laco da linha 4 e executado O(V ) vezes.Total: O(V ) chamadas a Extract-Min.
O laco das linhas 7–8 e executado O(E ) vezes no total.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 168: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/168.jpg)
Complexidade do algoritmo de Dijkstra
As linhas 1–3 correspondem a |V | chamadas a Insert.
O laco da linha 4 e executado O(V ) vezes.Total: O(V ) chamadas a Extract-Min.
O laco das linhas 7–8 e executado O(E ) vezes no total.Ao atualizar uma chave na linha 8 e feita uma chamada
implıcita a Decrease-Key.Total: O(E ) chamadas a Decrease-Key.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 169: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/169.jpg)
Complexidade do algoritmo de Dijkstra
As linhas 1–3 correspondem a |V | chamadas a Insert.
O laco da linha 4 e executado O(V ) vezes.Total: O(V ) chamadas a Extract-Min.
O laco das linhas 7–8 e executado O(E ) vezes no total.Ao atualizar uma chave na linha 8 e feita uma chamada
implıcita a Decrease-Key.Total: O(E ) chamadas a Decrease-Key.
Tempo total:O(V ) Insert+ O(V ) Extract-Min+O(E ) Decrease-Key
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 170: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/170.jpg)
Complexidade do algoritmo de Dijkstra
Tempo total
O(V ) Insert+ O(V ) Extract-Min+O(E ) Decrease-Key
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 171: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/171.jpg)
Complexidade do algoritmo de Dijkstra
Tempo total
O(V ) Insert+ O(V ) Extract-Min+O(E ) Decrease-Key
Implementando Q como um vetor (coloque d [v ] na posicao v
do vetor), Insert e Decrease-Key gastam tempo Θ(1) eExtract-Min gasta tempo O(V ), resultando em um totalde O(V 2 + E ) = O(V 2).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 172: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/172.jpg)
Complexidade do algoritmo de Dijkstra
Tempo total
O(V ) Insert+ O(V ) Extract-Min+O(E ) Decrease-Key
Implementando Q como um vetor (coloque d [v ] na posicao v
do vetor), Insert e Decrease-Key gastam tempo Θ(1) eExtract-Min gasta tempo O(V ), resultando em um totalde O(V 2 + E ) = O(V 2).
Implementando a fila de prioridade Q como um min-heap,Insert, Extract-Min e Decrease-Key gastam tempoO(lgV ), resultando em um total de O((V + E ) lgV ).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 173: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/173.jpg)
Complexidade do algoritmo de Dijkstra
Tempo total
O(V ) Insert+ O(V ) Extract-Min+O(E ) Decrease-Key
Implementando Q como um vetor (coloque d [v ] na posicao v
do vetor), Insert e Decrease-Key gastam tempo Θ(1) eExtract-Min gasta tempo O(V ), resultando em um totalde O(V 2 + E ) = O(V 2).
Implementando a fila de prioridade Q como um min-heap,Insert, Extract-Min e Decrease-Key gastam tempoO(lgV ), resultando em um total de O((V + E ) lgV ).
Usando heaps de Fibonacci (Extract-Min e O(lgV ) eInsert e Decrease-Key sao O(1)) a complexidade caipara O(V lgV + E ).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 174: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/174.jpg)
Arestas/ciclos de peso negativo
O algoritmo de Dijkstra resolve o Problema dos CaminhosMınimos quando (G , ω) nao possui arestas de peso negativo.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 175: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/175.jpg)
Arestas/ciclos de peso negativo
O algoritmo de Dijkstra resolve o Problema dos CaminhosMınimos quando (G , ω) nao possui arestas de peso negativo.
Quando (G , ω) possui arestas de peso negativo, o algoritmode Dijkstra nao funciona.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 176: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/176.jpg)
Arestas/ciclos de peso negativo
O algoritmo de Dijkstra resolve o Problema dos CaminhosMınimos quando (G , ω) nao possui arestas de peso negativo.
Quando (G , ω) possui arestas de peso negativo, o algoritmode Dijkstra nao funciona.
Uma das dificuldades com arestas de peso negativo e apossıvel existencia de ciclos negativos.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 177: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/177.jpg)
Ciclos negativos — uma dificuldade
Pode-se mostrar que o Problema dos Caminhos Mınimos parainstancias com ciclos negativos e NP-difıcil.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 178: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/178.jpg)
Ciclos negativos — uma dificuldade
Pode-se mostrar que o Problema dos Caminhos Mınimos parainstancias com ciclos negativos e NP-difıcil.
Informalmente, se um problema pertence a classe dosproblemas NP-difıceis entao acredita-se que nao existealgoritmo eficiente para resolve-lo.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 179: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/179.jpg)
Ciclos negativos — uma dificuldade
Pode-se mostrar que o Problema dos Caminhos Mınimos parainstancias com ciclos negativos e NP-difıcil.
Informalmente, se um problema pertence a classe dosproblemas NP-difıceis entao acredita-se que nao existealgoritmo eficiente para resolve-lo.
Este e o principal motivo do porque nos restringimos aoProblema de Caminhos Mınimos sem ciclos negativos.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 180: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/180.jpg)
Revisao: inicializacao
Initialize-Single-Source(G , s)1 para cada vertice v ∈ V [G ] faca2 d [v ] ← ∞3 π[v ] ← nil
4 d [s] ← 0
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 181: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/181.jpg)
Revisao: inicializacao
Initialize-Single-Source(G , s)1 para cada vertice v ∈ V [G ] faca2 d [v ] ← ∞3 π[v ] ← nil
4 d [s] ← 0
O valor d [v ] e uma estimativa superior de dist(s, v), o pesode um caminho mınimo de s a v .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 182: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/182.jpg)
Revisao: inicializacao
Initialize-Single-Source(G , s)1 para cada vertice v ∈ V [G ] faca2 d [v ] ← ∞3 π[v ] ← nil
4 d [s] ← 0
O valor d [v ] e uma estimativa superior de dist(s, v), o pesode um caminho mınimo de s a v .
Se d [v ] < ∞, entao algoritmo encontrou ate aquele momentoum caminho de s a v com peso d [v ].
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 183: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/183.jpg)
Revisao: inicializacao
Initialize-Single-Source(G , s)1 para cada vertice v ∈ V [G ] faca2 d [v ] ← ∞3 π[v ] ← nil
4 d [s] ← 0
O valor d [v ] e uma estimativa superior de dist(s, v), o pesode um caminho mınimo de s a v .
Se d [v ] < ∞, entao algoritmo encontrou ate aquele momentoum caminho de s a v com peso d [v ].
O caminho de s a v pode ser recuperado por meio dospredecessores π[ ], se nao houver ciclos negativos.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 184: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/184.jpg)
Revisao: relaxacao
Tenta melhorar a estimativa d [v ] examinando (u, v).
5
5 5
59
6
62
2
2
27
u
uu
u
vv
vv
Relax(u, v , ω)Relax(u, v , ω)
Relax(u, v , ω)1 se d [v ] > d [u] + ω(u, v)2 entao d [v ] ← d [u] + ω(u, v)3 π[v ] ← u
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 185: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/185.jpg)
Revisao: algoritmos baseados em relaxacao
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 186: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/186.jpg)
Revisao: algoritmos baseados em relaxacao
As propriedades que veremos valem para qualquer “algoritmo” quesatisfaz as restricoes abaixo.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 187: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/187.jpg)
Revisao: algoritmos baseados em relaxacao
As propriedades que veremos valem para qualquer “algoritmo” quesatisfaz as restricoes abaixo.
A inicializacao e feita por Initialize-Single-Source(G , s).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 188: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/188.jpg)
Revisao: algoritmos baseados em relaxacao
As propriedades que veremos valem para qualquer “algoritmo” quesatisfaz as restricoes abaixo.
A inicializacao e feita por Initialize-Single-Source(G , s).
Um valor d [v ] (e π[v ]) so pode ser modificado atraves de umachamada de Relax(u, v , ω) para alguma aresta (u, v).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 189: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/189.jpg)
Revisao: algoritmos baseados em relaxacao
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 190: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/190.jpg)
Revisao: algoritmos baseados em relaxacao
Lema 24.10, CLRS Para toda aresta (u, v) temos que
dist(s, v) ≤ dist(s, u) + ω(u, v).
u vsdist(s, u)
dist(s, v)
Lema 24.15, CLRS Seja P = (v0 = s, v1, . . . , vk) um caminhomınimo de s = v0 a vk e suponha que as arestas (v0, v1),. . . ,(vk−1, vk) sao relaxadas nesta ordem.Entao apos as relaxacoes, temos d [vk ] = dist(s, vk) e d [vk ] nuncamais muda.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 191: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/191.jpg)
Revisao: algoritmos baseados em relaxacao
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 192: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/192.jpg)
Revisao: algoritmos baseados em relaxacao
Seja Gπ com conjunto de vertices Vπ = {s}∪{v ∈ V : π[v ] 6= nil}e conjunto de arestas Eπ = {(π[v ], v) : v ∈ V , π[v ] 6= nil}.
Lema 24.16, CLRS Suponha que (G , ω) nao contem ciclosnegativos atingıveis por s. Entao em qualquer iteracao apos achamada Initialize-Single-Source, o subgrafo Gπ e umaarvore de raiz s.
Lema 24.17, CLRS Suponha que (G , ω) nao contem ciclosnegativos atingıveis por s. Suponha que sejam feitas uma chamadaa Initialize-Single-Source e uma sequencia de chamadas aRelax que resulta em d [v ] = dist(s, v) para todo v ∈ V . EntaoGπ e uma Arvore de Caminhos Mınimos.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 193: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/193.jpg)
Ideia do algoritmo de Bellman-Ford
Descreveremos a seguir o algoritmo de Bellman-Ford queresolver o Problema dos Caminhos Mınimos em grafo (G , ω)que podem ter arestas de peso negativo, mas nao contemciclos negativos.
Na verdade, o algoritmo consegue resolver problema mesmoque tenham ciclos negativos, mas nao sejam atingıveis pelaorigem s.
Ele tambem consegue detectar se existe um ciclo negativoatingıvel por s.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 194: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/194.jpg)
Ideia do algoritmo de Bellman-Ford
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 195: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/195.jpg)
Ideia do algoritmo de Bellman-Ford
Na iteracao i = 1 executamos Relax para todas as arestas.Isto garante que a primeira aresta de qualquer caminhomınimo sera relaxada.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 196: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/196.jpg)
Ideia do algoritmo de Bellman-Ford
Na iteracao i = 1 executamos Relax para todas as arestas.Isto garante que a primeira aresta de qualquer caminhomınimo sera relaxada.
Repetimos este passo para as iteracoes i = 2, 3, . . . , |V | − 1.Por que |V | − 1?
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 197: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/197.jpg)
Ideia do algoritmo de Bellman-Ford
Na iteracao i = 1 executamos Relax para todas as arestas.Isto garante que a primeira aresta de qualquer caminhomınimo sera relaxada.
Repetimos este passo para as iteracoes i = 2, 3, . . . , |V | − 1.Por que |V | − 1?Porque um caminho (simples) tem no maximo |V | − 1 arestas.Assim, apos essas |V | − 1 iteracoes, garantidamente, todas asarestas de um caminho mınimo foram relaxadas na ordemdesejada.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 198: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/198.jpg)
Ideia do algoritmo de Bellman-Ford
Na iteracao i = 1 executamos Relax para todas as arestas.Isto garante que a primeira aresta de qualquer caminhomınimo sera relaxada.
Repetimos este passo para as iteracoes i = 2, 3, . . . , |V | − 1.Por que |V | − 1?Porque um caminho (simples) tem no maximo |V | − 1 arestas.Assim, apos essas |V | − 1 iteracoes, garantidamente, todas asarestas de um caminho mınimo foram relaxadas na ordemdesejada.
E preciso fazer mais uma iteracao de relaxar todas as arestaspara verificar se o grafo contem ciclos negativos.Se houver, nao ha garantia de que os valores obtidos nas|V | − 1 primeiras iteracoes estao corretas.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 199: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/199.jpg)
O algoritmo de Bellman-Ford
O algoritmo de Bellman-Ford recebe um grafo orientado (G , ω)(possivelmente com arestas de peso negativo) e um vertice origems de G .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 200: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/200.jpg)
O algoritmo de Bellman-Ford
O algoritmo de Bellman-Ford recebe um grafo orientado (G , ω)(possivelmente com arestas de peso negativo) e um vertice origems de G .
Ele devolve um valor booleano
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 201: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/201.jpg)
O algoritmo de Bellman-Ford
O algoritmo de Bellman-Ford recebe um grafo orientado (G , ω)(possivelmente com arestas de peso negativo) e um vertice origems de G .
Ele devolve um valor booleano
FALSE se existe um ciclo negativo atingıvel a partir de s, ou
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 202: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/202.jpg)
O algoritmo de Bellman-Ford
O algoritmo de Bellman-Ford recebe um grafo orientado (G , ω)(possivelmente com arestas de peso negativo) e um vertice origems de G .
Ele devolve um valor booleano
FALSE se existe um ciclo negativo atingıvel a partir de s, ou
TRUE e neste caso devolve tambem uma Arvore de CaminhosMınimos com raiz s.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 203: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/203.jpg)
O algoritmo de Bellman-Ford
Bellman-Ford(G , ω, s)1 Initialize-Single-Source(G , s)2 para i ← 1 ate |V [G ]| − 1 faca
3 para cada aresta (u, v) ∈ E [G ] faca4 Relax(u, v , ω)5 para cada aresta (u, v) ∈ E [G ] faca6 se d [v ] > d [u] + ω(u, v)7 entao devolva FALSE8 devolva TRUE, d , π
Complexidade de tempo: O(VE )
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 204: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/204.jpg)
Exemplo (CLRS)
0 7
5
−2
−3
−42
7
9
6
8
∞∞
∞∞
s
t
z
x
y
Ordem:(t, x), (t, y), (t, z), (x , t), (y , x), (y , z), (z , x), (z , s), (s, t), (s, y).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 205: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/205.jpg)
Exemplo (CLRS)
0 7
5
−2
−3
−42
7
9
6
8
6
7
∞
∞
s
t
z
x
y
Ordem:(t, x), (t, y), (t, z), (x , t), (y , x), (y , z), (z , x), (z , s), (s, t), (s, y).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 206: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/206.jpg)
Exemplo (CLRS)
0 7
5
−2
−3
−42
7
9
6
8
6
7
4
2
s
t
z
x
y
Ordem:(t, x), (t, y), (t, z), (x , t), (y , x), (y , z), (z , x), (z , s), (s, t), (s, y).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 207: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/207.jpg)
Exemplo (CLRS)
0 7
5
−2
−3
−42
7
9
6
8
7
4
2
2
s
t
z
x
y
Ordem:(t, x), (t, y), (t, z), (x , t), (y , x), (y , z), (z , x), (z , s), (s, t), (s, y).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 208: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/208.jpg)
Exemplo (CLRS)
0 7
5
−2
−3
−42
7
9
6
8
7
4
−2
2
s
t
z
x
y
Ordem:(t, x), (t, y), (t, z), (x , t), (y , x), (y , z), (z , x), (z , s), (s, t), (s, y).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 209: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/209.jpg)
Exemplo com ciclo negativo
Inicializacao.
1 1 1
−10
s u v t
0 ∞ ∞ ∞
Ordem: (t, u), (v , t), (u, v), (s, u).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 210: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/210.jpg)
Exemplo com ciclo negativo
Final da iteracao 1.
1 1 1
−10
s u v t
0 1 ∞ ∞
Ordem: (t, u), (v , t), (u, v), (s, u).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 211: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/211.jpg)
Exemplo com ciclo negativo
Final da iteracao 2.
1 1 1
−10
s u v t
0 1 2 ∞
Ordem: (t, u), (v , t), (u, v), (s, u).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 212: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/212.jpg)
Exemplo com ciclo negativo
Final da iteracao 3.
1 1 1
−10
s u v t
0 1 2 3
Ordem: (t, u), (v , t), (u, v), (s, u).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 213: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/213.jpg)
Exemplo com ciclo negativo
Iteracao 4: 1 = d [u] > d [t] + ω(t, u) = 3− 10 = −7
1 1 1
−10
s u v t
0 1 2 3
Ordem: (t, u), (v , t), (u, v), (s, u).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 214: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/214.jpg)
Correcao do algoritmo Bellman-Ford
Teorema 24.4 (CLRS).Se (G , ω) nao contem ciclos negativos atingıveis por s, entao nofinal
o algoritmo devolve TRUE,
d [v ] = dist(s, v) para v ∈ V e
π[ ] define uma Arvore de Caminhos Mınimos.
Se (G , ω) contem ciclos negativos atingıveis por s, entao no final oalgoritmo devolve FALSE.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 215: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/215.jpg)
Correcao do algoritmo Bellman-Ford
Primeiramente, vamos supor que o grafo nao possui ciclosnegativos atingıveis por s.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 216: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/216.jpg)
Correcao do algoritmo Bellman-Ford
Primeiramente, vamos supor que o grafo nao possui ciclosnegativos atingıveis por s.
Relembrando. . .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 217: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/217.jpg)
Correcao do algoritmo Bellman-Ford
Primeiramente, vamos supor que o grafo nao possui ciclosnegativos atingıveis por s.
Relembrando. . .
Lema 24.15, CLRS Seja P = (v0 = s, v1, . . . , vk) um caminhomınimo de s = v0 a vk e suponha que as arestas (v0, v1),. . . ,(vk−1, vk) sao relaxadas nesta ordem.Entao apos as relaxacoes, temos d [vk ] = dist(s, vk) e d [vk ] nuncamais muda.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 218: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/218.jpg)
Correcao do algoritmo Bellman-Ford
Seja v um vertice atingıvel por s e seja
P = (v0 = s, v1, . . . , vk = v)
um caminho mınimo de s a v .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 219: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/219.jpg)
Correcao do algoritmo Bellman-Ford
Seja v um vertice atingıvel por s e seja
P = (v0 = s, v1, . . . , vk = v)
um caminho mınimo de s a v .
Note que P tem no maximo |V | − 1 arestas. Cada uma das|V | − 1 iteracoes do laco das linhas 2–4 relaxa todas as |E | arestas.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 220: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/220.jpg)
Correcao do algoritmo Bellman-Ford
Seja v um vertice atingıvel por s e seja
P = (v0 = s, v1, . . . , vk = v)
um caminho mınimo de s a v .
Note que P tem no maximo |V | − 1 arestas. Cada uma das|V | − 1 iteracoes do laco das linhas 2–4 relaxa todas as |E | arestas.
Na iteracao i a aresta (vi−1, vi ) e relaxada.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 221: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/221.jpg)
Correcao do algoritmo Bellman-Ford
Seja v um vertice atingıvel por s e seja
P = (v0 = s, v1, . . . , vk = v)
um caminho mınimo de s a v .
Note que P tem no maximo |V | − 1 arestas. Cada uma das|V | − 1 iteracoes do laco das linhas 2–4 relaxa todas as |E | arestas.
Na iteracao i a aresta (vi−1, vi ) e relaxada.
Logo, pelo Lema 24.16, d [v ] = d [vk ] = dist(s, v).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 222: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/222.jpg)
Correcao do algoritmo Bellman-Ford
Se v e um vertice nao atingıvel por s entao d [v ] = ∞, pois d [v ]foi inicializado com este valor e ao longo do algoritmo vale qued [v ] ≥ dist(s, v) = ∞.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 223: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/223.jpg)
Correcao do algoritmo Bellman-Ford
Se v e um vertice nao atingıvel por s entao d [v ] = ∞, pois d [v ]foi inicializado com este valor e ao longo do algoritmo vale qued [v ] ≥ dist(s, v) = ∞.
Assim, no final do algoritmo d [v ] = dist(s, v) para v ∈ V .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 224: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/224.jpg)
Correcao do algoritmo Bellman-Ford
Se v e um vertice nao atingıvel por s entao d [v ] = ∞, pois d [v ]foi inicializado com este valor e ao longo do algoritmo vale qued [v ] ≥ dist(s, v) = ∞.
Assim, no final do algoritmo d [v ] = dist(s, v) para v ∈ V .
Pelo Lema 24.17, Gπ e uma Arvore de Caminhos Mınimos com raizs de (G , ω).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 225: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/225.jpg)
Correcao do algoritmo Bellman-Ford
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 226: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/226.jpg)
Correcao do algoritmo Bellman-Ford
Agora falta mostrar que Bellman-Ford devolve TRUE.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 227: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/227.jpg)
Correcao do algoritmo Bellman-Ford
Agora falta mostrar que Bellman-Ford devolve TRUE.
Seja (u, v) uma aresta de G . Entao
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 228: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/228.jpg)
Correcao do algoritmo Bellman-Ford
Agora falta mostrar que Bellman-Ford devolve TRUE.
Seja (u, v) uma aresta de G . Entao
d [v ] = dist(s, v)
≤ dist(s, u) + ω(u, v) (Lema 24.10)
= d [u] + ω(u, v).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 229: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/229.jpg)
Correcao do algoritmo Bellman-Ford
Agora falta mostrar que Bellman-Ford devolve TRUE.
Seja (u, v) uma aresta de G . Entao
d [v ] = dist(s, v)
≤ dist(s, u) + ω(u, v) (Lema 24.10)
= d [u] + ω(u, v).
Assim, nenhum dos testes da linha 6 faz com que o algoritmodevolva FALSE. Logo, ele devolve TRUE.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 230: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/230.jpg)
Correcao do algoritmo Bellman-Ford
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 231: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/231.jpg)
Correcao do algoritmo Bellman-Ford
Suponha que (G , ω) contem um ciclo negativo atingıvel por s.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 232: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/232.jpg)
Correcao do algoritmo Bellman-Ford
Suponha que (G , ω) contem um ciclo negativo atingıvel por s.
Seja C = (v0, v1, . . . , vk = v0) um tal ciclo.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 233: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/233.jpg)
Correcao do algoritmo Bellman-Ford
Suponha que (G , ω) contem um ciclo negativo atingıvel por s.
Seja C = (v0, v1, . . . , vk = v0) um tal ciclo.
Entao∑k
i=1 ω(vi−1, vi ) < 0.
v0 = vk v1
v2
v3v4
vk−1
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 234: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/234.jpg)
Correcao do algoritmo Bellman-Ford
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 235: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/235.jpg)
Correcao do algoritmo Bellman-Ford
Suponha por contradicao que o algoritmo devolve TRUE.Entao d [vi ] ≤ d [vi−1] + ω(vi−1, vi ) para i = 1, 2 . . . , k .
v0 = vk v1
v2
v3v4
vk−1
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 236: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/236.jpg)
Correcao do algoritmo Bellman-Ford
Somando as desigualdades ao longo do ciclo temos
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 237: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/237.jpg)
Correcao do algoritmo Bellman-Ford
Somando as desigualdades ao longo do ciclo temos
k∑
i=1
d [vi ] ≤k
∑
i=1
(d [vi−1] + ω(vi−1, vi ))
=k
∑
i=1
d [vi−1] +k
∑
i=1
ω(vi−1, vi ).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 238: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/238.jpg)
Correcao do algoritmo Bellman-Ford
Somando as desigualdades ao longo do ciclo temos
k∑
i=1
d [vi ] ≤k
∑
i=1
(d [vi−1] + ω(vi−1, vi ))
=k
∑
i=1
d [vi−1] +k
∑
i=1
ω(vi−1, vi ).
Como v0 = vk , temos que∑k
i=1 d [vi ] =∑k
i=1 d [vi−1].
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 239: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/239.jpg)
Correcao do algoritmo Bellman-Ford
Somando as desigualdades ao longo do ciclo temos
k∑
i=1
d [vi ] ≤k
∑
i=1
(d [vi−1] + ω(vi−1, vi ))
=k
∑
i=1
d [vi−1] +k
∑
i=1
ω(vi−1, vi ).
Como v0 = vk , temos que∑k
i=1 d [vi ] =∑k
i=1 d [vi−1].
Mas entao∑k
i=1 ω(vi−1, vi ) ≥ 0 o que contraria o fato do ciclo sernegativo.Isto conclui a prova de correcao.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 240: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/240.jpg)
Reducao para PCM sem pesos negativos
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 241: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/241.jpg)
Reducao para PCM sem pesos negativos
As vezes e possıvel transformar uma instancia (G , ω) comarestas de peso negativo (mas sem ciclos negativos) em umainstancia equivalente (G , ω′) sem arestas de peso negativo.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 242: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/242.jpg)
Reducao para PCM sem pesos negativos
As vezes e possıvel transformar uma instancia (G , ω) comarestas de peso negativo (mas sem ciclos negativos) em umainstancia equivalente (G , ω′) sem arestas de peso negativo.
Suponha que voce conhece um valor p[v ] para todo v ∈ V
que satisfaz a seguinte propriedade:
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 243: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/243.jpg)
Reducao para PCM sem pesos negativos
As vezes e possıvel transformar uma instancia (G , ω) comarestas de peso negativo (mas sem ciclos negativos) em umainstancia equivalente (G , ω′) sem arestas de peso negativo.
Suponha que voce conhece um valor p[v ] para todo v ∈ V
que satisfaz a seguinte propriedade:
p[v ] ≤ p[u] + ω(u, v) para toda aresta (u, v) ∈ E .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 244: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/244.jpg)
Reducao para PCM sem pesos negativos
As vezes e possıvel transformar uma instancia (G , ω) comarestas de peso negativo (mas sem ciclos negativos) em umainstancia equivalente (G , ω′) sem arestas de peso negativo.
Suponha que voce conhece um valor p[v ] para todo v ∈ V
que satisfaz a seguinte propriedade:
p[v ] ≤ p[u] + ω(u, v) para toda aresta (u, v) ∈ E .
Por exemplo, a funcao p[v ] := dist(s, v) satisfaz estapropriedade!
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 245: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/245.jpg)
Reducao para PCM sem pesos negativos
As vezes e possıvel transformar uma instancia (G , ω) comarestas de peso negativo (mas sem ciclos negativos) em umainstancia equivalente (G , ω′) sem arestas de peso negativo.
Suponha que voce conhece um valor p[v ] para todo v ∈ V
que satisfaz a seguinte propriedade:
p[v ] ≤ p[u] + ω(u, v) para toda aresta (u, v) ∈ E .
Por exemplo, a funcao p[v ] := dist(s, v) satisfaz estapropriedade!Mas suporemos que nao e este o caso, pois o que queremosdeterminar e exatamente dist(s, v) para v ∈ V .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 246: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/246.jpg)
Reducao para PCM sem pesos negativos
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 247: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/247.jpg)
Reducao para PCM sem pesos negativos
Considere a instancia (G , ω′) onde
ω′(u, v) = ω(u, v)+p[u]−p[v ] para toda aresta (u, v) ∈ E .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 248: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/248.jpg)
Reducao para PCM sem pesos negativos
Considere a instancia (G , ω′) onde
ω′(u, v) = ω(u, v)+p[u]−p[v ] para toda aresta (u, v) ∈ E .
Note que ω′(u, v) ≥ 0 para toda aresta (u, v) ∈ E .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 249: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/249.jpg)
Reducao para PCM sem pesos negativos
Considere a instancia (G , ω′) onde
ω′(u, v) = ω(u, v)+p[u]−p[v ] para toda aresta (u, v) ∈ E .
Note que ω′(u, v) ≥ 0 para toda aresta (u, v) ∈ E .Seja P = (s = v0, v1, . . . , vk−1, vk = t) um caminho de s a t
em G . Entao
ω′(P) =
k∑
i=1
ω′(vi−1, vi )
=
k∑
i=1
(
ω(vi−1, vi ) + p[vi−1]− p[vi ])
=k
∑
i=1
ω(vi−1, vi ) +k
∑
i=1
(p[vi−1]− p[vi ])
= ω(P) + p[v0]− p[vk ] = ω(P) + p[s]− p[t].
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 250: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/250.jpg)
Reducao para PCM sem pesos negativos
Considere a instancia (G , ω′) onde
ω′(u, v) = ω(u, v)+p[u]−p[v ] para toda aresta (u, v) ∈ E .
Seja P = (s = v0, v1, . . . , vk−1, vk = t) um caminho de s a t
em G .
Entao ω′(P) = ω(P) + p[s]− p[t].
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 251: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/251.jpg)
Reducao para PCM sem pesos negativos
Considere a instancia (G , ω′) onde
ω′(u, v) = ω(u, v)+p[u]−p[v ] para toda aresta (u, v) ∈ E .
Seja P = (s = v0, v1, . . . , vk−1, vk = t) um caminho de s a t
em G .
Entao ω′(P) = ω(P) + p[s]− p[t].
Como p esta fixo, encontrar um caminho mınimo de s a t em(G , ω) e equivalente a encontrar um caminho mınimo de s a t
em (G , ω′).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 252: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/252.jpg)
Reducao para PCM sem pesos negativos
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 253: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/253.jpg)
Reducao para PCM sem pesos negativos
O unico problema com esta ideia e que para encontrar uma talfuncao p, aparentemente e preciso resolver um PCM comarestas de peso negativo, o que invalida a ideia de modogeral.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 254: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/254.jpg)
Reducao para PCM sem pesos negativos
O unico problema com esta ideia e que para encontrar uma talfuncao p, aparentemente e preciso resolver um PCM comarestas de peso negativo, o que invalida a ideia de modogeral.
Entretanto, ha situacoes em que tal funcao p e conhecida eneste caso pode-se usar o algoritmo de Dijkstra que e maiseficiente que o o algoritmo de Bellman-Ford que resolve oPCM com arestas de peso negativo.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 255: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/255.jpg)
Reducao para PCM sem pesos negativos
O unico problema com esta ideia e que para encontrar uma talfuncao p, aparentemente e preciso resolver um PCM comarestas de peso negativo, o que invalida a ideia de modogeral.
Entretanto, ha situacoes em que tal funcao p e conhecida eneste caso pode-se usar o algoritmo de Dijkstra que e maiseficiente que o o algoritmo de Bellman-Ford que resolve oPCM com arestas de peso negativo.
Uma funcao p como descrita e chamada potencial em algunscontextos. Depois veremos como usar o algoritmo deBellman-Ford para encontrar uma funcao potencial.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 256: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/256.jpg)
Aplicacao: Sistemas de restricoes de diferencas
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 257: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/257.jpg)
Aplicacao: Sistemas de restricoes de diferencas
Considere o seguinte sistema de desigualdades lineares:
x1 − x2 ≤ 0x1 − x5 ≤ −1x2 − x5 ≤ 1x3 − x1 ≤ 5x4 − x1 ≤ 4x4 − x3 ≤ −1x5 − x3 ≤ −3x5 − x4 ≤ −3
Queremos encontrar valores x1, x2, . . . , xn que satisfazem estasrestricoes de diferenca.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 258: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/258.jpg)
Aplicacao: Sistemas de restricoes de diferencas
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 259: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/259.jpg)
Aplicacao: Sistemas de restricoes de diferencas
Considere o seguinte sistema de desigualdades lineares:
x1 − x2 ≤ 0x1 − x5 ≤ −1x2 − x5 ≤ 1x3 − x1 ≤ 5x4 − x1 ≤ 4x4 − x3 ≤ −1x5 − x3 ≤ −3x5 − x4 ≤ −3
Podemos modelar o problema de encontrar uma funcao potencialusando um sistema deste tipo. Uma funcao potencial de (G , ω)satisfaz p(v)− p(u) ≤ ω(u, v) para cada aresta (u, v) de G ..Assim, temos uma desigualdade xv − xu ≤ bk := ω(u, v) para cadaaresta (u, v) de G .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 260: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/260.jpg)
Sistemas de restricoes de diferencas
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 261: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/261.jpg)
Sistemas de restricoes de diferencas
Sistemas de restricoes de diferenca tem varias aplicacoes.
x1 − x2 ≤ 0x1 − x5 ≤ −1x2 − x5 ≤ 1x3 − x1 ≤ 5x4 − x1 ≤ 4x4 − x3 ≤ −1x5 − x3 ≤ −3x5 − x4 ≤ −3
Por exemplo, a incognita xi pode representar o instante do tempoque um evento i deve ocorrer. Uma restricao xj − xi ≤ bk diz queuma certa quantidade de tempo bk deve passar entre os eventos ie j . Um evento poderia ser a execucao de uma certa tarefa durantea fabricacao de um produto.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 262: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/262.jpg)
Aplicacao: Sistemas de restricoes de diferencas
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 263: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/263.jpg)
Aplicacao: Sistemas de restricoes de diferencas
Considere o seguinte sistema de desigualdades lineares:
x1 − x2 ≤ 0x1 − x5 ≤ −1x2 − x5 ≤ 1x3 − x1 ≤ 5x4 − x1 ≤ 4x4 − x3 ≤ −1x5 − x3 ≤ −3x5 − x4 ≤ −3
Podemos resolver um sistema deste tipo para encontrar umafuncao potencial p de um grafo (G , ω). Uma funcao potencial de(G , ω) deve satisfazer p(v)− p(u) ≤ ω(u, v) para cada aresta(u, v) de G . Assim, temos uma desigualdade xv − xu ≤ ω(u, v)para cada aresta (u, v) de G .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 264: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/264.jpg)
Sistemas de restricoes de diferencas
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 265: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/265.jpg)
Sistemas de restricoes de diferencas
Podemos reescrever as restricoes matricialmente:
1 −1 0 0 01 0 0 0 −10 1 0 0 −1
−1 0 1 0 0−1 0 0 1 00 0 −1 1 00 0 −1 0 10 0 0 −1 1
x1x2x3x4x5
≤
0−1154
−1−3−3
Um sistema de restricoes de diferenca e um sistema da formaAx ≤ b onde A e uma matriz com entradas {−1, 0, 1} em quecada linha ha exatamente um 1 e um −1.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 266: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/266.jpg)
Sistemas de restricoes de diferencas
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 267: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/267.jpg)
Sistemas de restricoes de diferencas
Podemos reescrever as restricoes matricialmente:
1 −1 0 0 01 0 0 0 −10 1 0 0 −1
−1 0 1 0 0−1 0 0 1 00 0 −1 1 00 0 −1 0 10 0 0 −1 1
x1x2x3x4x5
≤
0−1154
−1−3−3
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 268: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/268.jpg)
Sistemas de restricoes de diferencas
Podemos reescrever as restricoes matricialmente:
1 −1 0 0 01 0 0 0 −10 1 0 0 −1
−1 0 1 0 0−1 0 0 1 00 0 −1 1 00 0 −1 0 10 0 0 −1 1
x1x2x3x4x5
≤
0−1154
−1−3−3
Uma solucao e x = (−5,−3, 0,−1,−4).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 269: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/269.jpg)
Sistemas de restricoes de diferencas
Podemos reescrever as restricoes matricialmente:
1 −1 0 0 01 0 0 0 −10 1 0 0 −1
−1 0 1 0 0−1 0 0 1 00 0 −1 1 00 0 −1 0 10 0 0 −1 1
x1x2x3x4x5
≤
0−1154
−1−3−3
Uma solucao e x = (−5,−3, 0,−1,−4).Outra solucao e x ′ = (0, 2, 5, 4, 1).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 270: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/270.jpg)
Sistemas de restricoes de diferencas
Lema 24.8 (CLRS) Seja x = (x1, . . . , xn) uma solucao de umsistema Ax ≤ b de restricoes de diferenca. Seja d uma constante.Entao
x + d = (x1 + d , . . . , xn + d)
tambem e uma solucao de Ax ≤ b.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 271: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/271.jpg)
Sistemas de restricoes de diferencas
Lema 24.8 (CLRS) Seja x = (x1, . . . , xn) uma solucao de umsistema Ax ≤ b de restricoes de diferenca. Seja d uma constante.Entao
x + d = (x1 + d , . . . , xn + d)
tambem e uma solucao de Ax ≤ b.
Mostraremos a seguir como encontrar uma solucao de um sistemaAx ≤ b de restricoes de diferenca resolvendo um problema decaminhos mınimos.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 272: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/272.jpg)
Grafo de restricoes
A matriz A de dimensoes m × n pode ser vista como a transpostade uma matriz de incidencia de um grafo orientado (veja a lista deexercıcios) com n vertices e m arestas.
Cada vertice vi corresponde a uma variavel xi .
Cada aresta (vi , vj) corresponde a uma restricao xj − xi ≤ bk .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 273: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/273.jpg)
Grafo de restricoes
A matriz A de dimensoes m × n pode ser vista como a transpostade uma matriz de incidencia de um grafo orientado (veja a lista deexercıcios) com n vertices e m arestas.
Cada vertice vi corresponde a uma variavel xi .
Cada aresta (vi , vj) corresponde a uma restricao xj − xi ≤ bk .
A este grafo acrescentamos um vertice origem v0.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 274: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/274.jpg)
Grafo de restricoes
Formalmente, dado o sistema Ax ≤ b de restricoes de diferenca,construımos o grafo G = (V ,E ) tal que
V = {v0, v1, . . . , vn}
eE = {(vi , vj) : xj − xi ≤ bk e uma restricao}
∪ {(v0, v1), (v0, v2), . . . , (v0, vn)}.
Para cada restricao xj − xi ≤ bk temos uma aresta (vi , vj) compeso ω(vi , vj) = bk . O peso da aresta (v0, vi ) e igual a zero paratodo vi .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 275: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/275.jpg)
Grafo de restricoes
−1
0
0
0
−1
0
1
−3
54
−1
00
−3
−1 0
0−4
−5
v0
v1
v2
v3v4
v5
Uma restricao xi − xj ≤ bk corresponde a uma aresta (vj , vi ) compeso bk . Note que todo vertice e atingıvel a partir de v0.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 276: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/276.jpg)
Grafo de restricoes
−1
0
0
0
−1
0
1
−3
54
−1
00
−3
−1 0
0−4
−5
v0
v1
v2
v3v4
v5
Uma solucao viavel e x = (−5,−3,−0,−1,−4).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 277: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/277.jpg)
Grafo de restricoes e sistemas de diferencas
Teorema 24.9 (CLRS) Seja Ax ≤ b um sistema de restricoes dediferenca e seja G = (V ,E ) o grafo de restricoes associado.Se G nao contem ciclos negativos, entao
x = (dist(v0, v1), dist(v0, v2), . . . , dist(v0, vn))
e uma solucao viavel do sistema.Se G contem ciclos negativos, entao o sistema nao possui solucaoviavel.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 278: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/278.jpg)
Grafo de restricoes e sistemas de diferencas
Suponha que (G , ω) nao contem ciclos negativos. Para ver quexi = dist(v0, vi ) para i = 1, 2, . . . , n e uma solucao do sistemas dediferenca lembre-se que dist(v0, vi ) ≤ dist(v0, vj) + ω(vj , vi ) paratoda aresta (vj , vi ).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 279: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/279.jpg)
Grafo de restricoes e sistemas de diferencas
Suponha que (G , ω) nao contem ciclos negativos. Para ver quexi = dist(v0, vi ) para i = 1, 2, . . . , n e uma solucao do sistemas dediferenca lembre-se que dist(v0, vi ) ≤ dist(v0, vj) + ω(vj , vi ) paratoda aresta (vj , vi ).
Assim,
xi − xj = dist(v0, vi )− dist(v0, vj) ≤ ω(vj , vi ) = bk
e x e uma solucao do sistema de diferencas.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 280: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/280.jpg)
Grafo de restricoes e sistemas de diferencas
Suponha agora que (G , ω) contem um ciclo negativo C . Como aorigem v0 e uma fonte, ela nao pertence a nenhum ciclo. Podemossupor sem perda de generalidade que:
C = (v1, v2, . . . , vk = v1).
v1 = vk v2
v3
v4v5
vk−1
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 281: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/281.jpg)
Grafo de restricoes e sistemas de diferencas
Podemos supor sem perda de generalidade que:
C = (v1, v2, . . . , vk = v1).
Suponha por contradicao que existe uma solucao viavel x dosistema de diferencas. Entao
x2 − x1 ≤ ω(v1, v2)
x3 − x2 ≤ ω(v2, v3)
...
xk−1 − xk−2 ≤ ω(vk−2, vk−1)
xk − xk−1 ≤ ω(vk−1, vk).
Somando todas as desigualdades, obtemos 0 ≤ ω(C ), o que e umacontradicao. Logo, se (G , ω) contem um ciclo negativo, entao osistema nao tem solucao viavel.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 282: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/282.jpg)
Resolvendo um sistema de restricoes de diferenca
O Teorema 24.9 nos diz que podemos usar o algoritmo deBellman-Ford (com origem v0) para resolver um sistema derestricoes de diferenca!
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 283: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/283.jpg)
Resolvendo um sistema de restricoes de diferenca
O Teorema 24.9 nos diz que podemos usar o algoritmo deBellman-Ford (com origem v0) para resolver um sistema derestricoes de diferenca!
Como todo vertice e atingıvel a partir de v0, se existir um ciclonegativo, este sera detectado pelo algoritmo.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 284: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/284.jpg)
Resolvendo um sistema de restricoes de diferenca
O Teorema 24.9 nos diz que podemos usar o algoritmo deBellman-Ford (com origem v0) para resolver um sistema derestricoes de diferenca!
Como todo vertice e atingıvel a partir de v0, se existir um ciclonegativo, este sera detectado pelo algoritmo.
Se nao existir ciclo negativo, entao as distancias computadas peloalgoritmo formam uma solucao viavel do sistema.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 285: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/285.jpg)
Resolvendo um sistema de restricoes de diferenca
O Teorema 24.9 nos diz que podemos usar o algoritmo deBellman-Ford (com origem v0) para resolver um sistema derestricoes de diferenca!
Como todo vertice e atingıvel a partir de v0, se existir um ciclonegativo, este sera detectado pelo algoritmo.
Se nao existir ciclo negativo, entao as distancias computadas peloalgoritmo formam uma solucao viavel do sistema.
Se A e uma matriz m × n, entao o grafo de restricoes G possuin + 1 vertices e n +m arestas. Assim, usando o algoritmo deBellman-Ford podemos encontrar uma solucao em tempoO((n + 1)(n +m)) = O(n2 + nm).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 286: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/286.jpg)
Caminhos mınimos entre todos os pares
O problema agora e dado um grafo (G , ω) encontrar para todo paru, v de vertices um caminho mınimo de u a v .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 287: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/287.jpg)
Caminhos mınimos entre todos os pares
O problema agora e dado um grafo (G , ω) encontrar para todo paru, v de vertices um caminho mınimo de u a v .
Obviamente podemos executar |V | vezes um algoritmo deCaminhos Mınimos com Mesma Origem.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 288: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/288.jpg)
Caminhos mınimos entre todos os pares
O problema agora e dado um grafo (G , ω) encontrar para todo paru, v de vertices um caminho mınimo de u a v .
Obviamente podemos executar |V | vezes um algoritmo deCaminhos Mınimos com Mesma Origem.
Se (G , ω) nao possui arestas negativas, entao podemos usar oalgoritmo de Dijkstra implementando a fila de prioridade como
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 289: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/289.jpg)
Caminhos mınimos entre todos os pares
O problema agora e dado um grafo (G , ω) encontrar para todo paru, v de vertices um caminho mınimo de u a v .
Obviamente podemos executar |V | vezes um algoritmo deCaminhos Mınimos com Mesma Origem.
Se (G , ω) nao possui arestas negativas, entao podemos usar oalgoritmo de Dijkstra implementando a fila de prioridade como
um vetor: |V |.O(V 2) = O(V 3) ou
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 290: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/290.jpg)
Caminhos mınimos entre todos os pares
O problema agora e dado um grafo (G , ω) encontrar para todo paru, v de vertices um caminho mınimo de u a v .
Obviamente podemos executar |V | vezes um algoritmo deCaminhos Mınimos com Mesma Origem.
Se (G , ω) nao possui arestas negativas, entao podemos usar oalgoritmo de Dijkstra implementando a fila de prioridade como
um vetor: |V |.O(V 2) = O(V 3) oumin-heap binario: |V |.O(E lgV ) = O(VE lgV ) ou
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 291: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/291.jpg)
Caminhos mınimos entre todos os pares
O problema agora e dado um grafo (G , ω) encontrar para todo paru, v de vertices um caminho mınimo de u a v .
Obviamente podemos executar |V | vezes um algoritmo deCaminhos Mınimos com Mesma Origem.
Se (G , ω) nao possui arestas negativas, entao podemos usar oalgoritmo de Dijkstra implementando a fila de prioridade como
um vetor: |V |.O(V 2) = O(V 3) oumin-heap binario: |V |.O(E lgV ) = O(VE lgV ) ouheap de Fibonacci: |V |.O(V lgV + E ) = O(V 2 lgV + VE ).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 292: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/292.jpg)
Caminhos mınimos entre todos os pares
O problema agora e dado um grafo (G , ω) encontrar para todo paru, v de vertices um caminho mınimo de u a v .
Obviamente podemos executar |V | vezes um algoritmo deCaminhos Mınimos com Mesma Origem.
Se (G , ω) nao possui arestas negativas, entao podemos usar oalgoritmo de Dijkstra implementando a fila de prioridade como
um vetor: |V |.O(V 2) = O(V 3) oumin-heap binario: |V |.O(E lgV ) = O(VE lgV ) ouheap de Fibonacci: |V |.O(V lgV + E ) = O(V 2 lgV + VE ).
Se (G , ω) possui arestas negativas podemos usar o algoritmode Bellman-Ford: |V |.O(VE ) = O(V 2E ).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 293: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/293.jpg)
O algoritmo de Floyd-Warshall
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 294: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/294.jpg)
O algoritmo de Floyd-Warshall
Veremos agora um metodo direto para resolver o problema que eassintoticamente melhor se G e denso.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 295: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/295.jpg)
O algoritmo de Floyd-Warshall
Veremos agora um metodo direto para resolver o problema que eassintoticamente melhor se G e denso.
O algoritmo de Floyd-Warshall baseia-se em programacao dinamicae resolve o problema em tempo O(V 3).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 296: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/296.jpg)
O algoritmo de Floyd-Warshall
Veremos agora um metodo direto para resolver o problema que eassintoticamente melhor se G e denso.
O algoritmo de Floyd-Warshall baseia-se em programacao dinamicae resolve o problema em tempo O(V 3).
O grafo (G , ω) pode ter arestas negativas, mas suporemos que naocontem ciclos negativos.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 297: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/297.jpg)
O algoritmo de Floyd-Warshall
Veremos agora um metodo direto para resolver o problema que eassintoticamente melhor se G e denso.
O algoritmo de Floyd-Warshall baseia-se em programacao dinamicae resolve o problema em tempo O(V 3).
O grafo (G , ω) pode ter arestas negativas, mas suporemos que naocontem ciclos negativos.
Adotaremos a convencao de que se (i , j) nao e uma aresta de G
entao ω(i , j) = ∞.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 298: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/298.jpg)
Estrutura de um caminho mınimo
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 299: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/299.jpg)
Estrutura de um caminho mınimo
Seja P = (v1, v2, . . . , vℓ) um caminho.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 300: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/300.jpg)
Estrutura de um caminho mınimo
Seja P = (v1, v2, . . . , vℓ) um caminho.
Um vertice interno de P e qualquer vertice de P distinto de v1 evl , ou seja, em {v2, . . . , vℓ−1}.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 301: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/301.jpg)
Estrutura de um caminho mınimo
Seja P = (v1, v2, . . . , vℓ) um caminho.
Um vertice interno de P e qualquer vertice de P distinto de v1 evl , ou seja, em {v2, . . . , vℓ−1}.
Para simplificar, suponha que V = {1, 2, . . . , n}.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 302: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/302.jpg)
Estrutura de um caminho mınimo
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 303: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/303.jpg)
Estrutura de um caminho mınimo
Sejam i e j dois vertices de G . Considere todos os caminhos de i aj cujos vertices internos pertencem a {1, . . . , k}.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 304: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/304.jpg)
Estrutura de um caminho mınimo
Sejam i e j dois vertices de G . Considere todos os caminhos de i aj cujos vertices internos pertencem a {1, . . . , k}.
Exemplo: i = 5, j = 9 e k = 7.
5 2 6 3 4 9
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 305: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/305.jpg)
Estrutura de um caminho mınimo
Sejam i e j dois vertices de G . Considere todos os caminhos de i aj cujos vertices internos pertencem a {1, . . . , k}.
Exemplo: i = 5, j = 9 e k = 7.
5 2 6 3 4 9
Seja P um caminho mınimo de i a j com esta forma.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 306: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/306.jpg)
Estrutura de um caminho mınimo
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 307: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/307.jpg)
Estrutura de um caminho mınimo
O algoritmo de Floyd-Warshall explora a relacao entre P e certoscaminhos mınimos com vertices internos em {1, . . . , k − 1}.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 308: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/308.jpg)
Estrutura de um caminho mınimo
O algoritmo de Floyd-Warshall explora a relacao entre P e certoscaminhos mınimos com vertices internos em {1, . . . , k − 1}.
Caso 1: Se k nao e um vertice interno de P entao P e umcaminho mınimo de i a j com vertices internos em {1, . . . , k − 1}.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 309: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/309.jpg)
Estrutura de um caminho mınimo
O algoritmo de Floyd-Warshall explora a relacao entre P e certoscaminhos mınimos com vertices internos em {1, . . . , k − 1}.
Caso 1: Se k nao e um vertice interno de P entao P e umcaminho mınimo de i a j com vertices internos em {1, . . . , k − 1}.
Exemplo: i = 5, j = 9 e k = 7.
5 2 6 3 4 9
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 310: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/310.jpg)
Estrutura de um caminho mınimo
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 311: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/311.jpg)
Estrutura de um caminho mınimo
Caso 2: Se k e um vertice interno de P entao P pode ser divididoem dois caminhos P1 (com inıcio em i e fim em k) e P2 (cominıcio em k e fim em j).
replacements
i j
kP1
P2
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 312: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/312.jpg)
Estrutura de um caminho mınimo
Caso 2: Se k e um vertice interno de P entao P pode ser divididoem dois caminhos P1 (com inıcio em i e fim em k) e P2 (cominıcio em k e fim em j).
replacements
i j
kP1
P2
P1 e um caminho mınimo de i a k com vertices internos em{1, . . . , k − 1}
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 313: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/313.jpg)
Estrutura de um caminho mınimo
Caso 2: Se k e um vertice interno de P entao P pode ser divididoem dois caminhos P1 (com inıcio em i e fim em k) e P2 (cominıcio em k e fim em j).
replacements
i j
kP1
P2
P1 e um caminho mınimo de i a k com vertices internos em{1, . . . , k − 1}
P2 e um caminho mınimo de k a j com vertices internos em{1, . . . , k − 1}.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 314: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/314.jpg)
Recorrencia para caminhos mınimos
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 315: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/315.jpg)
Recorrencia para caminhos mınimos
Seja d(k)i j o peso de um caminho mınimo de i a j com vertices
internos em {1, 2, . . . , k}.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 316: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/316.jpg)
Recorrencia para caminhos mınimos
Seja d(k)i j o peso de um caminho mınimo de i a j com vertices
internos em {1, 2, . . . , k}.
Quando k = 0 entao d(0)i j = ω(i , j).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 317: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/317.jpg)
Recorrencia para caminhos mınimos
Seja d(k)i j o peso de um caminho mınimo de i a j com vertices
internos em {1, 2, . . . , k}.
Quando k = 0 entao d(0)i j = ω(i , j).
Temos a seguinte recorrencia:
d(k)i j =
{
ω(i , j) se k = 0,
min(d(k−1)i j , d
(k−1)ik + d
(k−1)kj ) se k ≥ 1.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 318: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/318.jpg)
Recorrencia para caminhos mınimos
Seja d(k)i j o peso de um caminho mınimo de i a j com vertices
internos em {1, 2, . . . , k}.
Quando k = 0 entao d(0)i j = ω(i , j).
Temos a seguinte recorrencia:
d(k)i j =
{
ω(i , j) se k = 0,
min(d(k−1)i j , d
(k−1)ik + d
(k−1)kj ) se k ≥ 1.
Note que d(n)i j = dist(i , j).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 319: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/319.jpg)
Recorrencia para caminhos mınimos
Seja d(k)i j o peso de um caminho mınimo de i a j com vertices
internos em {1, 2, . . . , k}.
Quando k = 0 entao d(0)i j = ω(i , j).
Temos a seguinte recorrencia:
d(k)i j =
{
ω(i , j) se k = 0,
min(d(k−1)i j , d
(k−1)ik + d
(k−1)kj ) se k ≥ 1.
Note que d(n)i j = dist(i , j).
Podemos calcular as matrizes D(k) = (d(k)i j ) para k = 1, 2 . . . , n.
A resposta do problema e D(n).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 320: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/320.jpg)
Algoritmo de Floyd-Warshall
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 321: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/321.jpg)
Algoritmo de Floyd-Warshall
A entrada do algoritmo e a matriz W = (ω(i , j)) com n = |V |linhas e colunas.
A saıda e a matriz D(n).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 322: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/322.jpg)
Algoritmo de Floyd-Warshall
A entrada do algoritmo e a matriz W = (ω(i , j)) com n = |V |linhas e colunas.
A saıda e a matriz D(n).
Floyd-Warshall(W , n)1 D(0) ← W
2 para k ← 1 ate n faca
3 para i ← 1 ate n faca
4 para j ← 1 ate n faca
5 d(k)i j ← min(d
(k−1)ij , d
(k−1)ik + d
(k−1)kj )
6 devolva D(n)
Complexidade: O(V 3)
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 323: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/323.jpg)
Como encontrar os caminhos?
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 324: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/324.jpg)
Como encontrar os caminhos?
O algoritmo devolve tambem uma matriz Π = (πij) tal que(a) πi j = nil se i = j ou se nao existe caminho de i a j , ou(b) πi j e o predecessor de j em algum caminho mınimo a de i a j ,caso contrario.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 325: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/325.jpg)
Como encontrar os caminhos?
O algoritmo devolve tambem uma matriz Π = (πij) tal que(a) πi j = nil se i = j ou se nao existe caminho de i a j , ou(b) πi j e o predecessor de j em algum caminho mınimo a de i a j ,caso contrario.
Podemos computar os predecessores ao mesmo tempo que oalgoritmo calcula as matrizes D(k). Determinamos uma sequencia
de matrizes Π(0),Π(1), . . . ,Π(n) e π(k)i j e o predecessor de j em um
caminho mınimo de i a j com vertices internos em {1, 2, . . . , k}.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 326: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/326.jpg)
Como encontrar os caminhos?
O algoritmo devolve tambem uma matriz Π = (πij) tal que(a) πi j = nil se i = j ou se nao existe caminho de i a j , ou(b) πi j e o predecessor de j em algum caminho mınimo a de i a j ,caso contrario.
Podemos computar os predecessores ao mesmo tempo que oalgoritmo calcula as matrizes D(k). Determinamos uma sequencia
de matrizes Π(0),Π(1), . . . ,Π(n) e π(k)i j e o predecessor de j em um
caminho mınimo de i a j com vertices internos em {1, 2, . . . , k}.
Quando k = 0 temos
π(0)i j =
{
nil se i = j ou ω(i , j) = ∞,i se i 6= j e ω(i , j) < ∞.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 327: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/327.jpg)
Como encontrar os caminhos?
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 328: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/328.jpg)
Como encontrar os caminhos?
Para k ≥ 1 procedemos da seguinte forma. Considere um caminhomınimo P de i a j com vertices internos em {1, 2, . . . , k}.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 329: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/329.jpg)
Como encontrar os caminhos?
Para k ≥ 1 procedemos da seguinte forma. Considere um caminhomınimo P de i a j com vertices internos em {1, 2, . . . , k}.
Se k nao aparece em P entao tomamos como π(k)i j o predecessor
de j em um caminho mınimo de i a j com vertices internos em
{1, 2, . . . , k − 1}, ou seja, π(k−1)i j .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 330: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/330.jpg)
Como encontrar os caminhos?
Para k ≥ 1 procedemos da seguinte forma. Considere um caminhomınimo P de i a j com vertices internos em {1, 2, . . . , k}.
Se k nao aparece em P entao tomamos como π(k)i j o predecessor
de j em um caminho mınimo de i a j com vertices internos em
{1, 2, . . . , k − 1}, ou seja, π(k−1)i j .
Caso contrario, tomamos como π(k)i j o predecessor de j em um
caminho mınimo de k a j com vertices internos em
{1, 2, . . . , k − 1}, ou seja, π(k−1)kj .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 331: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/331.jpg)
Como encontrar os caminhos?
Para k ≥ 1 procedemos da seguinte forma. Considere um caminhomınimo P de i a j com vertices internos em {1, 2, . . . , k}.
Se k nao aparece em P entao tomamos como π(k)i j o predecessor
de j em um caminho mınimo de i a j com vertices internos em
{1, 2, . . . , k − 1}, ou seja, π(k−1)i j .
Caso contrario, tomamos como π(k)i j o predecessor de j em um
caminho mınimo de k a j com vertices internos em
{1, 2, . . . , k − 1}, ou seja, π(k−1)kj .
Formalmente,
π(k)i j =
{
π(k−1)i j se d
(k−1)i j ≤ d
(k−1)ik + d
(k−1)kj ,
π(k−1)kj se d
(k−1)i j > d
(k−1)ik + d
(k−1)kj .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 332: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/332.jpg)
Como encontrar os caminhos?
Para k ≥ 1 procedemos da seguinte forma. Considere um caminhomınimo P de i a j com vertices internos em {1, 2, . . . , k}.
Se k nao aparece em P entao tomamos como π(k)i j o predecessor
de j em um caminho mınimo de i a j com vertices internos em
{1, 2, . . . , k − 1}, ou seja, π(k−1)i j .
Caso contrario, tomamos como π(k)i j o predecessor de j em um
caminho mınimo de k a j com vertices internos em
{1, 2, . . . , k − 1}, ou seja, π(k−1)kj .
Formalmente,
π(k)i j =
{
π(k−1)i j se d
(k−1)i j ≤ d
(k−1)ik + d
(k−1)kj ,
π(k−1)kj se d
(k−1)i j > d
(k−1)ik + d
(k−1)kj .
Exercıcio. Incorpore esta parte no algoritmo!
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 333: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/333.jpg)
Exemplo
1
3 4
8
2
−4 −5
6
7
5 4
3
2
1 d(k)i j = min(d
(k−1)i j , d
(k−1)ik + d
(k−1)kj )
D(0) =
0 3 8 ∞ −4∞ 0 ∞ 1 7∞ 4 0 ∞ ∞2 ∞ −5 0 ∞
∞ ∞ ∞ 6 0
Π(0) =
N 1 1 N 1N N N 2 2N 3 N N N
4 N 4 N N
N N N 5 N
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 334: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/334.jpg)
Exemplo
1
3 4
8
2
−4 −5
6
7
5 4
3
2
1 d(k)i j = min(d
(k−1)i j , d
(k−1)ik + d
(k−1)kj )
D(0) =
0 3 8 ∞ −4∞ 0 ∞ 1 7∞ 4 0 ∞ ∞2 ∞ −5 0 ∞
∞ ∞ ∞ 6 0
Π(0) =
N 1 1 N 1N N N 2 2N 3 N N N
4 N 4 N N
N N N 5 N
D(1) =
0 3 8 ∞ −4∞ 0 ∞ 1 7∞ 4 0 ∞ ∞2 5 −5 0 −2
∞ ∞ ∞ 6 0
Π(1) =
N 1 1 N 1N N N 2 2N 3 N N N
4 1 4 N 1N N N 5 N
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 335: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/335.jpg)
Exemplo
1
3 4
8
2
−4 −5
6
7
5 4
3
2
1 d(k)i j = min(d
(k−1)i j , d
(k−1)ik + d
(k−1)kj )
D(1) =
0 3 8 ∞ −4∞ 0 ∞ 1 7∞ 4 0 ∞ ∞2 5 −5 0 −2
∞ ∞ ∞ 6 0
Π(1) =
N 1 1 N 1N N N 2 2N 3 N N N
4 1 4 N 1N N N 5 N
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 336: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/336.jpg)
Exemplo
1
3 4
8
2
−4 −5
6
7
5 4
3
2
1 d(k)i j = min(d
(k−1)i j , d
(k−1)ik + d
(k−1)kj )
D(1) =
0 3 8 ∞ −4∞ 0 ∞ 1 7∞ 4 0 ∞ ∞2 5 −5 0 −2
∞ ∞ ∞ 6 0
Π(1) =
N 1 1 N 1N N N 2 2N 3 N N N
4 1 4 N 1N N N 5 N
D(2) =
0 3 8 4 −4∞ 0 ∞ 1 7∞ 4 0 5 112 5 −5 0 −2∞ ∞ ∞ 6 0
Π(2) =
N 1 1 2 1N N N 2 2N 3 N 2 24 1 4 N 1N N N 5 N
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 337: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/337.jpg)
Exemplo
1
3 4
8
2
−4 −5
6
7
5 4
3
2
1 d(k)i j = min(d
(k−1)i j , d
(k−1)ik + d
(k−1)kj )
D(2) =
0 3 8 4 −4∞ 0 ∞ 1 7∞ 4 0 5 112 5 −5 0 −2∞ ∞ ∞ 6 0
Π(2) =
N 1 1 2 1N N N 2 2N 3 N 2 24 1 4 N 1N N N 5 N
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 338: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/338.jpg)
Exemplo
1
3 4
8
2
−4 −5
6
7
5 4
3
2
1 d(k)i j = min(d
(k−1)i j , d
(k−1)ik + d
(k−1)kj )
D(2) =
0 3 8 4 −4∞ 0 ∞ 1 7∞ 4 0 5 112 5 −5 0 −2∞ ∞ ∞ 6 0
Π(2) =
N 1 1 2 1N N N 2 2N 3 N 2 24 1 4 N 1N N N 5 N
D(3) =
0 3 8 4 −4∞ 0 ∞ 1 7∞ 4 0 5 112 −1 −5 0 −2
∞ ∞ ∞ 6 0
Π(3) =
N 1 1 2 1N N N 2 2N 3 N 2 24 3 4 N 1N N N 5 N
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 339: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/339.jpg)
Exemplo
1
3 4
8
2
−4 −5
6
7
5 4
3
2
1 d(k)i j = min(d
(k−1)i j , d
(k−1)ik + d
(k−1)kj )
D(3) =
0 3 8 4 −4∞ 0 ∞ 1 7∞ 4 0 5 112 −1 −5 0 −2
∞ ∞ ∞ 6 0
Π(3) =
N 1 1 2 1N N N 2 2N 3 N 2 24 3 4 N 1N N N 5 N
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 340: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/340.jpg)
Exemplo
1
3 4
8
2
−4 −5
6
7
5 4
3
2
1 d(k)i j = min(d
(k−1)i j , d
(k−1)ik + d
(k−1)kj )
D(3) =
0 3 8 4 −4∞ 0 ∞ 1 7∞ 4 0 5 112 −1 −5 0 −2
∞ ∞ ∞ 6 0
Π(3) =
N 1 1 2 1N N N 2 2N 3 N 2 24 3 4 N 1N N N 5 N
D(4) =
0 3 −1 4 −43 0 −4 1 −17 4 0 5 32 −1 −5 0 −28 5 1 6 0
Π(4) =
N 1 4 2 14 N 4 2 14 3 N 2 14 3 4 N 14 3 4 5 N
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 341: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/341.jpg)
Exemplo
1
3 4
8
2
−4 −5
6
7
5 4
3
2
1 d(k)i j = min(d
(k−1)i j , d
(k−1)ik + d
(k−1)kj )
D(4) =
0 3 −1 4 −43 0 −4 1 −17 4 0 5 32 −1 −5 0 −28 5 1 6 0
Π(4) =
N 1 4 2 14 N 4 2 14 3 N 2 14 3 4 N 14 3 4 5 N
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 342: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/342.jpg)
Exemplo
1
3 4
8
2
−4 −5
6
7
5 4
3
2
1 d(k)i j = min(d
(k−1)i j , d
(k−1)ik + d
(k−1)kj )
D(4) =
0 3 −1 4 −43 0 −4 1 −17 4 0 5 32 −1 −5 0 −28 5 1 6 0
Π(4) =
N 1 4 2 14 N 4 2 14 3 N 2 14 3 4 N 14 3 4 5 N
D(5) =
0 1 −3 2 −43 0 −4 1 −17 4 0 5 32 −1 −5 0 −28 5 1 6 0
Π(5) =
N 3 4 5 14 N 4 2 14 3 N 2 14 3 4 N 14 3 4 5 N
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 343: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/343.jpg)
Fecho transitivo de grafos orientados
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 344: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/344.jpg)
Fecho transitivo de grafos orientados
Seja G = (V ,E ) um grafo orientado com V = {1, 2, . . . , n}.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 345: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/345.jpg)
Fecho transitivo de grafos orientados
Seja G = (V ,E ) um grafo orientado com V = {1, 2, . . . , n}.
Suponha que para cada par i , j ∈ V , queremos determinar se existeum caminho de i a j em G .
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 346: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/346.jpg)
Fecho transitivo de grafos orientados
Seja G = (V ,E ) um grafo orientado com V = {1, 2, . . . , n}.
Suponha que para cada par i , j ∈ V , queremos determinar se existeum caminho de i a j em G .
O fecho transitivo de G = (V ,E ) e o grafo G ∗ = (V ,E ∗) onde
E ∗ = {(i , j) : existe um caminho de i a j em G}.
2 1
4 3
21
4 3
G G ∗
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 347: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/347.jpg)
Fecho transitivo de grafos orientados
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 348: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/348.jpg)
Fecho transitivo de grafos orientados
Um modo de determinar o fecho transitivo de um grafoG = (V ,E ) em tempo Θ(V 3) = Θ(n3) e atribuir peso 1 a cadaaresta de E e executar Floyd-Warshall. Se di j < n entaoexiste um caminho de i a j . Caso contrario, nao existe tal caminho.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 349: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/349.jpg)
Fecho transitivo de grafos orientados
Um modo de determinar o fecho transitivo de um grafoG = (V ,E ) em tempo Θ(V 3) = Θ(n3) e atribuir peso 1 a cadaaresta de E e executar Floyd-Warshall. Se di j < n entaoexiste um caminho de i a j . Caso contrario, nao existe tal caminho.
Ha outra forma de fazer isto com mesma complexidade assintotica,mas que pode economizar tempo e espaco na pratica.
A ideia e adaptar o algoritmo de Floyd-Warshall substituindo asoperacoes aritmeticas min e + pelas operacoes logicas ∨ (ORlogico) e ∧ (AND logico).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 350: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/350.jpg)
Fecho transitivo de grafos orientados
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 351: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/351.jpg)
Fecho transitivo de grafos orientados
Para i , j , k em {1, 2, . . . , n}, seja t(k)i ,j o valor logico da expressao
“existe um caminho de i a j em G com vertices internos em{1, 2, . . . , k}”.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 352: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/352.jpg)
Fecho transitivo de grafos orientados
Para i , j , k em {1, 2, . . . , n}, seja t(k)i ,j o valor logico da expressao
“existe um caminho de i a j em G com vertices internos em{1, 2, . . . , k}”.
Assim, t(k)i ,j = 1 se:
1 existe um caminho de i a j em G com vertices internos em
{1, 2, . . . , k − 1}, ou seja, t(k−1)i ,j = 1, ou
2 existem um caminho de i a k em G com vertices internos em{1, 2, . . . , k − 1} e um caminho de k a j em G com vertices
internos em {1, 2, . . . , k − 1}, ou seja, t(k−1)ik ∧ t
(k−1)kj = 1.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 353: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/353.jpg)
Fecho transitivo de grafos orientados
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 354: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/354.jpg)
Fecho transitivo de grafos orientados
Para i , j , k em {1, 2, . . . , n}, seja t(k)i ,j o valor logico da expressao
“existe um caminho de i a j em G com vertices internos em{1, 2, . . . , k}”.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 355: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/355.jpg)
Fecho transitivo de grafos orientados
Para i , j , k em {1, 2, . . . , n}, seja t(k)i ,j o valor logico da expressao
“existe um caminho de i a j em G com vertices internos em{1, 2, . . . , k}”.
Portanto,
t(0)i j =
{
0 se i 6= j e (i , j) 6∈ E ,1 se i = j ou (i , j) ∈ E .
e para k ≥ 1,
t(k)i j = t
(k−1)i j ∨
(
t(k−1)ik ∧ t
(k−1)kj
)
.
Assim, (i , j) e uma aresta do fecho transitivo G ∗ se e somente se
t(n)i ,j = 1.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 356: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/356.jpg)
Fecho transitivo de grafos orientados
Para i , j , k em {1, 2, . . . , n}, seja t(k)i ,j o valor logico da expressao
“existe um caminho de i a j em G com vertices internos em{1, 2, . . . , k}”.
Portanto,
t(0)i j =
{
0 se i 6= j e (i , j) 6∈ E ,1 se i = j ou (i , j) ∈ E .
e para k ≥ 1,
t(k)i j = t
(k−1)i j ∨
(
t(k−1)ik ∧ t
(k−1)kj
)
.
Assim, (i , j) e uma aresta do fecho transitivo G ∗ se e somente se
t(n)i ,j = 1.
Como no Floyd-Warshall, calculamos as matrizes T (k) = (t(k)i j ).
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 357: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/357.jpg)
Algoritmo de Fecho Transitivo
A entrada do algoritmo e uma matriz de adjacencia A com n = |V |linhas e colunas.
A saıda e a matriz T (n).
Transitive-Closure(A, n)1 T (0) ← A+ In2 para k ← 1 ate n faca
3 para i ← 1 ate n faca
4 para j ← 1 ate n faca
5 t(k)i j ← t
(k−1)i j ∨
(
t(k−1)ik ∧ t
(k−1)kj
)
6 devolva T (n)
Complexidade: O(V 3)
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 358: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/358.jpg)
Exemplo
2 1
4 3
21
4 3
G G ∗
t(k)i j = t
(k−1)i j ∨
(
t(k−1)ik ∧ t
(k−1)kj
)
.
T (0) =
1 0 0 00 1 1 10 1 1 01 0 1 1
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 359: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/359.jpg)
Exemplo
2 1
4 3
21
4 3
G G ∗
t(k)i j = t
(k−1)i j ∨
(
t(k−1)ik ∧ t
(k−1)kj
)
.
T (0) =
1 0 0 00 1 1 10 1 1 01 0 1 1
T (1) =
1 0 0 00 1 1 10 1 1 01 0 1 1
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 360: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/360.jpg)
Exemplo
2 1
4 3
21
4 3
G G ∗
t(k)i j = t
(k−1)i j ∨
(
t(k−1)ik ∧ t
(k−1)kj
)
.
T (1) =
1 0 0 00 1 1 10 1 1 01 0 1 1
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 361: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/361.jpg)
Exemplo
2 1
4 3
21
4 3
G G ∗
t(k)i j = t
(k−1)i j ∨
(
t(k−1)ik ∧ t
(k−1)kj
)
.
T (1) =
1 0 0 00 1 1 10 1 1 01 0 1 1
T (2) =
1 0 0 00 1 1 10 1 1 11 0 1 1
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 362: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/362.jpg)
Exemplo
2 1
4 3
21
4 3
G G ∗
t(k)i j = t
(k−1)i j ∨
(
t(k−1)ik ∧ t
(k−1)kj
)
.
T (2) =
1 0 0 00 1 1 10 1 1 11 0 1 1
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 363: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/363.jpg)
Exemplo
2 1
4 3
21
4 3
G G ∗
t(k)i j = t
(k−1)i j ∨
(
t(k−1)ik ∧ t
(k−1)kj
)
.
T (2) =
1 0 0 00 1 1 10 1 1 11 0 1 1
T (3) =
1 0 0 00 1 1 10 1 1 11 1 1 1
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 364: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/364.jpg)
Exemplo
2 1
4 3
21
4 3
G G ∗
t(k)i j = t
(k−1)i j ∨
(
t(k−1)ik ∧ t
(k−1)kj
)
.
T (3) =
1 0 0 00 1 1 10 1 1 11 1 1 1
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 365: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/365.jpg)
Exemplo
2 1
4 3
21
4 3
G G ∗
t(k)i j = t
(k−1)i j ∨
(
t(k−1)ik ∧ t
(k−1)kj
)
.
T (3) =
1 0 0 00 1 1 10 1 1 11 1 1 1
T (4) =
1 0 0 01 1 1 11 1 1 11 1 1 1
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II
![Page 366: MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu](https://reader034.vdocuments.us/reader034/viewer/2022042318/5f06ea937e708231d41a5fb5/html5/thumbnails/366.jpg)
Algoritmo de Transitive-Closure
Note que poderıamos usar um bit para cada posicao das matrizesT (k) e as operacoes logicas ∨ e ∧ podem ser implementadas comoperadores de bits.
Isto reduz consideravelmente o espaco do ponto de vista pratico epode acelerar o algoritmo se a implementacao de operacoes logicasfor eficiente. Note que isto nao afeta a analise assintotica.
Cid C. de Souza, Candida N. da Silva, Orlando Lee MC558 — Projeto e Analise de Algoritmos II