366
MC558 — An´ alise de Algoritmos II Cid C. de Souza andida N. da Silva Orlando Lee 4 de maio de 2020 Cid C. de Souza, Cˆ andida N. da Silva, Orlando Lee MC558 — Projeto e An´ alise de Algoritmos II

MC558 Análise de Algoritmos II - Home | INSTITUTO DE ...lee/mc558/sp.pdf · Dag-Shortest-Paths(G,ω,s) 1 Ordenetopologicamenteosv´erticesdeG 2 Initialize-Single-Source(G,s) 3 paracadav´erticeu

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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