149
Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões Defesa de dissertação de mestrado k -menores caminhos Fábio Pisaruk Instituto de Matemática e Estatística Universidade de São Paulo 16 de Julho de 2009

k-menores caminhos

Embed Size (px)

Citation preview

Page 1: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Defesa de dissertação de mestradok -menores caminhos

Fábio Pisaruk

Instituto de Matemática e EstatísticaUniversidade de São Paulo

16 de Julho de 2009

Page 2: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Sumário

1 Motivação

2 k -menores caminhos

3 Partições

4 YEN

5 KIM

6 Implementação

7 Conclusões

Page 3: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema

Provisionamento de sinais

Serviço de interligação de sinais.Permite que sinais do ponto a sejam enviados ao ponto b.

Figura: Destacamos um possível caminho interligando a e b.

Page 4: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema

Processo de provisionamento

Requisitos do clienteQuantidade de sinais.Tipos de sinais.Origem e destino.Qualidade de serviço.

Page 5: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema

Processo de provisionamento

ConsideraçõesCusto é função do número de equipamentos usados.Número de caminhos depende da quantidade de sinais.Critério de desempate é a distância total.

Page 6: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Definição

Problema k -menores caminhos

Problema k-MC(V ,A, c, s, t , k):Dados:

Grafo: (V ,A)Função custo: cVértices: s e tInteiro positivo: k

Encontrar os k-menores caminhos de s a t.

Page 7: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Definição

Exemplo

sb

g l tt

f

e

h

i

c

a

j

d

Caminhos

〈s,a, i , t〉〈s,b, f , l , t〉〈s,b,g, l , t〉〈s,b,h, l , t〉〈s,b,h, i , t〉〈s,a, i ,h, l , t〉

Page 8: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Definição

Exemplo

sb

g l tt

f

e

h

i

c

a

j

d

Caminhos〈s,a, i , t〉

〈s,b, f , l , t〉〈s,b,g, l , t〉〈s,b,h, l , t〉〈s,b,h, i , t〉〈s,a, i ,h, l , t〉

Page 9: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Definição

Exemplo

sb

g l tt

f

e

h

i

c

a

j

d

Caminhos〈s,a, i , t〉〈s,b, f , l , t〉

〈s,b,g, l , t〉〈s,b,h, l , t〉〈s,b,h, i , t〉〈s,a, i ,h, l , t〉

Page 10: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Definição

Exemplo

sb

g l tt

f

e

h

i

c

a

j

d

Caminhos〈s,a, i , t〉〈s,b, f , l , t〉〈s,b,g, l , t〉

〈s,b,h, l , t〉〈s,b,h, i , t〉〈s,a, i ,h, l , t〉

Page 11: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Definição

Exemplo

sb

g l tt

f

e

h

i

c

a

j

d

Caminhos〈s,a, i , t〉〈s,b, f , l , t〉〈s,b,g, l , t〉〈s,b,h, l , t〉

〈s,b,h, i , t〉〈s,a, i ,h, l , t〉

Page 12: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Definição

Exemplo

sb

g l tt

f

e

h

i

c

a

j

d

Caminhos〈s,a, i , t〉〈s,b, f , l , t〉〈s,b,g, l , t〉〈s,b,h, l , t〉〈s,b,h, i , t〉

〈s,a, i ,h, l , t〉

Page 13: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Definição

Exemplo

sb

g l tt

f

e

h

i

c

a

j

d

Caminhos〈s,a, i , t〉〈s,b, f , l , t〉〈s,b,g, l , t〉〈s,b,h, l , t〉〈s,b,h, i , t〉〈s,a, i ,h, l , t〉

Page 14: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Soluções

Algoritmo existente na empresaBusca exaustiva

Consumo elevado de memória.

a c

b

d

e

〈a,b〉〈a, c〉〈a,d〉

〈a,b, c〉〈a,b,e〉〈a, c,b〉〈a, c,e〉〈a, c,d〉〈a,d , c〉〈a,d ,e〉

〈a,b, c,e〉〈a,b, c,d〉〈a, c,b,e〉〈a, c,d ,e〉〈a,d , c,e〉〈a,d , c,b〉

〈a,b, c,d ,e〉〈a,d , c,b,e〉

Page 15: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Soluções

Algoritmo existente na empresaBusca exaustiva

Consumo elevado de memória.

a c

b

d

e

〈a,b〉〈a, c〉〈a,d〉

〈a,b, c〉〈a,b,e〉〈a, c,b〉〈a, c,e〉〈a, c,d〉〈a,d , c〉〈a,d ,e〉

〈a,b, c,e〉〈a,b, c,d〉〈a, c,b,e〉〈a, c,d ,e〉〈a,d , c,e〉〈a,d , c,b〉

〈a,b, c,d ,e〉〈a,d , c,b,e〉

Page 16: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Soluções

Algoritmo existente na empresaBusca exaustiva

Consumo elevado de memória.

a c

b

d

e

〈a,b〉〈a, c〉〈a,d〉

〈a,b, c〉〈a,b,e〉〈a, c,b〉〈a, c,e〉〈a, c,d〉〈a,d , c〉〈a,d ,e〉

〈a,b, c,e〉〈a,b, c,d〉〈a, c,b,e〉〈a, c,d ,e〉〈a,d , c,e〉〈a,d , c,b〉

〈a,b, c,d ,e〉〈a,d , c,b,e〉

Page 17: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Soluções

Algoritmo existente na empresaBusca exaustiva

Consumo elevado de memória.

a c

b

d

e

〈a,b〉〈a, c〉〈a,d〉

〈a,b, c〉〈a,b,e〉〈a, c,b〉〈a, c,e〉〈a, c,d〉〈a,d , c〉〈a,d ,e〉

〈a,b, c,e〉〈a,b, c,d〉〈a, c,b,e〉〈a, c,d ,e〉〈a,d , c,e〉〈a,d , c,b〉

〈a,b, c,d ,e〉〈a,d , c,b,e〉

Page 18: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Soluções

Algoritmo existente na empresaBusca exaustiva

Consumo elevado de memória.

a c

b

d

e

〈a,b〉〈a, c〉〈a,d〉

〈a,b, c〉〈a,b,e〉〈a, c,b〉〈a, c,e〉〈a, c,d〉〈a,d , c〉〈a,d ,e〉

〈a,b, c,e〉〈a,b, c,d〉〈a, c,b,e〉〈a, c,d ,e〉〈a,d , c,e〉〈a,d , c,b〉

〈a,b, c,d ,e〉〈a,d , c,b,e〉

Page 19: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Soluções

Algoritmo existente na empresaBusca exaustiva

Consumo elevado de memória.

a c

b

d

e

〈a,b〉〈a, c〉〈a,d〉

〈a,b, c〉〈a,b,e〉〈a, c,b〉〈a, c,e〉〈a, c,d〉〈a,d , c〉〈a,d ,e〉

〈a,b, c,e〉〈a,b, c,d〉〈a, c,b,e〉〈a, c,d ,e〉〈a,d , c,e〉〈a,d , c,b〉

〈a,b, c,d ,e〉〈a,d , c,b,e〉

Page 20: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Soluções

Primeiro algoritmo implementadoBusca em profundidade iterativa

a c

b

d

e

nível 1

nível 2〈a,b,e〉〈a, c,e〉〈a,d ,e〉

nível 3〈a,b, c,e〉〈a, c,b,e〉〈a, c,d ,e〉〈a,d , c,e〉

nível 4〈a,b, c,d ,e〉〈a,d , c,b,e〉

Menor consumo de memória e maior consumo de processador.

Page 21: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Soluções

Primeiro algoritmo implementadoBusca em profundidade iterativa

a c

b

d

e

nível 1 nível 2〈a,b,e〉〈a, c,e〉〈a,d ,e〉

nível 3〈a,b, c,e〉〈a, c,b,e〉〈a, c,d ,e〉〈a,d , c,e〉

nível 4〈a,b, c,d ,e〉〈a,d , c,b,e〉

Menor consumo de memória e maior consumo de processador.

Page 22: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Soluções

Primeiro algoritmo implementadoBusca em profundidade iterativa

a c

b

d

e

nível 1 nível 2〈a,b,e〉〈a, c,e〉〈a,d ,e〉

nível 3〈a,b, c,e〉〈a, c,b,e〉〈a, c,d ,e〉〈a,d , c,e〉

nível 4〈a,b, c,d ,e〉〈a,d , c,b,e〉

Menor consumo de memória e maior consumo de processador.

Page 23: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Soluções

Primeiro algoritmo implementadoBusca em profundidade iterativa

a c

b

d

e

nível 1 nível 2〈a,b,e〉〈a, c,e〉〈a,d ,e〉

nível 3〈a,b, c,e〉〈a, c,b,e〉〈a, c,d ,e〉〈a,d , c,e〉

nível 4〈a,b, c,d ,e〉〈a,d , c,b,e〉

Menor consumo de memória e maior consumo de processador.

Page 24: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Soluções

Primeiro algoritmo implementadoBusca em profundidade iterativa

a c

b

d

e

nível 1 nível 2〈a,b,e〉〈a, c,e〉〈a,d ,e〉

nível 3〈a,b, c,e〉〈a, c,b,e〉〈a, c,d ,e〉〈a,d , c,e〉

nível 4〈a,b, c,d ,e〉〈a,d , c,b,e〉

Menor consumo de memória e maior consumo de processador.

Page 25: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Soluções

Método genérico

Método GENÉRICO (V ,A, c, s, t , k)

0 P ← conjunto dos caminhos de s a t

1 para i = 1, . . . , k faça

2 Pi ← caminho de custo mínimo em P

3 P ← P − Pi

4 devolva 〈P1, . . . ,Pk 〉

Page 26: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Soluções

P

P1 P2

P3 P4 P5

Pk Pk+1 . . .

Q

Page 27: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Soluções

P

P2

P3

P4

P5

Pk

Pk+1

. . .

Q

P1

Page 28: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Soluções

P

P3 P4 P5

Pk Pk+1 . . .

Q

P1 P2

Page 29: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Soluções

P

Pk+1 . . .

Q

P1

P2

P3

P4

P5

. . .

Pk

Page 30: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo de construção

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

g

l

t3

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

i

t5

s

a

i

t1h

l

t6

b

f

l

t2

g

l

t3

h

l

t4

i

t5

Page 31: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo de construção

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

g

l

t3

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

i

t5

s

a

i

t1h

l

t6

b

f

l

t2

g

l

t3

h

l

t4

i

t5

Page 32: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo de construção

sb

g l tt

f

e

h

i

c

a

jd s

a

i

t1

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

g

l

t3

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

i

t5

s

a

i

t1h

l

t6

b

f

l

t2

g

l

t3

h

l

t4

i

t5

Page 33: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo de construção

sb

g l tt

f

e

h

i

c

a

jd s

a

i

t1

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

g

l

t3

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

i

t5

s

a

i

t1h

l

t6

b

f

l

t2

g

l

t3

h

l

t4

i

t5

Page 34: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo de construção

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

g

l

t3

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

i

t5

s

a

i

t1h

l

t6

b

f

l

t2

g

l

t3

h

l

t4

i

t5

Page 35: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo de construção

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

g

l

t3

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

i

t5

s

a

i

t1h

l

t6

b

f

l

t2

g

l

t3

h

l

t4

i

t5

Page 36: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo de construção

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

g

l

t3

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

i

t5

s

a

i

t1h

l

t6

b

f

l

t2

g

l

t3

h

l

t4

i

t5

Page 37: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo de construção

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

g

l

t3

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

i

t5

s

a

i

t1h

l

t6

b

f

l

t2

g

l

t3

h

l

t4

i

t5

Page 38: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo de construção

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

g

l

t3

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

i

t5

s

a

i

t1h

l

t6

b

f

l

t2

g

l

t3

h

l

t4

i

t5

Page 39: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo de construção

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

g

l

t3

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

i

t5

s

a

i

t1h

l

t6

b

f

l

t2

g

l

t3

h

l

t4

i

t5

Page 40: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo de construção

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

g

l

t3

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

i

t5

s

a

i

t1h

l

t6

b

f

l

t2

g

l

t3

h

l

t4

i

t5

Page 41: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo de construção

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

g

l

t3

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

i

t5

s

a

i

t1h

l

t6

b

f

l

t2

g

l

t3

h

l

t4

i

t5

Page 42: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo de construção

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

g

l

t3

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

i

t5

s

a

i

t1h

l

t6

b

f

l

t2

g

l

t3

h

l

t4

i

t5

Page 43: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo de construção

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

g

l

t3

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

i

t5

s

a

i

t1h

l

t6

b

f

l

t2

g

l

t3

h

l

t4

i

t5

Page 44: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Questões

k é, potencialmente, exponencial no número de vértices

um grafo completo com 15 vértices possui 16.926.797.485de caminhos entre dois vértices fixadosparticionar os caminhos utilizando a árvore dos prefixos

Page 45: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Questões

k é, potencialmente, exponencial no número de vérticesum grafo completo com 15 vértices possui 16.926.797.485de caminhos entre dois vértices fixados

particionar os caminhos utilizando a árvore dos prefixos

Page 46: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Questões

k é, potencialmente, exponencial no número de vérticesum grafo completo com 15 vértices possui 16.926.797.485de caminhos entre dois vértices fixadosparticionar os caminhos utilizando a árvore dos prefixos

Page 47: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

DescriçãoQ: coleção de caminhos(N,E , f ): árvore dos prefixos de QPara cada nó u da árvore temos uma partição πu

Π = {πu,u ∈ (N,E , f )}

Partição πu

caminhos com ponta inicial na raizcompartilham o prefixo f (Ru)

não possuem arcos em Au

Page 48: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Π contém todos os caminhos de s a t

Π

P1 P2

P3 P4 P5

Pk Pk+1 . . .

Page 49: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Q ← P1 = 〈s,a, i , t〉

Π

πs

πa πi

Page 50: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Q ← 〈s,a, i , t〉 ∪ 〈s,b, f , l , t〉

Ππs

πa πi

πb πl

Page 51: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

b...

t

a

i

t1

c

...

t

s

a

i

t1h

...

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

...

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

...

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

...

t

s

a

i

t1

b

f

l

g

...

t

t2

h...

t

j

...

t

Page 52: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

b...

t

a

i

t1

c

...

t

s

a

i

t1h

...

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

...

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

...

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

...

t

s

a

i

t1

b

f

l

g

...

t

t2

h...

t

j

...

t

Page 53: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo

sb

g l tt

f

e

h

i

c

a

jds

a

i

t1

s

b...

t

a

i

t1

c

...

t

s

a

i

t1h

...

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

...

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

...

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

...

t

s

a

i

t1

b

f

l

g

...

t

t2

h...

t

j

...

t

Page 54: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo

sb

g l tt

f

e

h

i

c

a

jds

a

i

t1

s

b...

t

a

i

t1

c

...

t

s

a

i

t1h

...

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

...

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

...

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

...

t

s

a

i

t1

b

f

l

g

...

t

t2

h...

t

j

...

t

Page 55: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo

sb

g l tt

f

e

h

i

c

a

jds

a

i

t1

s

b...

t

a

i

t1

c

...

t

s

a

i

t1h

...

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

...

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

...

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

...

t

s

a

i

t1

b

f

l

g

...

t

t2

h...

t

j

...

t

Page 56: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo

sb

g l tt

f

e

h

i

c

a

jds

a

i

t1

s

b...

t

a

i

t1

c

...

t

s

a

i

t1h

...

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

...

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

...

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

...

t

s

a

i

t1

b

f

l

g

...

t

t2

h...

t

j

...

t

Page 57: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

b...

t

a

i

t1

c

...

t

s

a

i

t1h

...

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

...

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

...

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

...

t

s

a

i

t1

b

f

l

g

...

t

t2

h...

t

j

...

t

Page 58: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

b...

t

a

i

t1

c

...

t

s

a

i

t1h

...

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

...

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

...

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

...

t

s

a

i

t1

b

f

l

g

...

t

t2

h...

t

j

...

t

Page 59: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

b...

t

a

i

t1

c

...

t

s

a

i

t1h

...

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

...

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

...

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

...

t

s

a

i

t1

b

f

l

g

...

t

t2

h...

t

j

...

t

Page 60: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

b...

t

a

i

t1

c

...

t

s

a

i

t1h

...

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

...

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

...

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

...

t

s

a

i

t1

b

f

l

g

...

t

t2

h...

t

j

...

t

Page 61: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

b...

t

a

i

t1

c

...

t

s

a

i

t1h

...

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

...

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

...

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

...

t

s

a

i

t1

b

f

l

g

...

t

t2

h...

t

j

...

t

Page 62: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

s

b...

t

a

i

t1

c

...

t

s

a

i

t1h

...

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

...

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

...

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

...

t

s

a

i

t1

b

f

l

g

...

t

t2

h...

t

j

...

t

Page 63: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de Yen

Método YEN-GENÉRICO

Método YEN-GENÉRICO (V ,A, c, s, t , k)

0 Π← {conjunto dos caminhos de s a t}

1 Q ← ∅

2 para i = 1, . . . , k faça

3 L ← {Pπ : Pπ é caminho mínimo na parte π de Π}

4 Pi ← caminho de custo mínimo em L

5 Q ← Q∪ {Pi}

6 Π← ATUALIZE-GENÉRICO (V ,A, s, t ,Q)

7 devolva 〈P1, . . . ,Pk 〉

Page 64: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de Yen

ATUALIZE-GENÉRICO

Algoritmo ATUALIZE-GENÉRICO (V ,A, s, t ,Q)

0 Π← ∅ P ← Pst −Q

1 (N,E , f )← árvore dos prefixos de Q

2 para cada u ∈ N que não é uma folha faça

3 πu ← {caminhos em P com prefixo f (Ru)

e que não possuem arcos em Au}

4 Π← Π ∪ {πu}

5 devolva Π

Page 65: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de Yen

Exemplo

sb

g l tt

f

e

h

i

c

a

jdf (Ru) = 〈s,b〉

Au

s

a

i

t1

f (u)=b

f

l

t2

g

l

t3

Page 66: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de Yen

Exemplo

sb

g l tt

f

e

h

i

c

a

jdf (Ru) = 〈s,b〉

s

a

i

t1

f (u)=b

f

l

t2

g

l

t3

c

. . .

t

d

. . .

t

h

. . .

t

πu

Page 67: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de Yen

Exemplo

sb

g l tt

f

e

h

i

c

a

jdf (Ru) = 〈s,b〉

s

a

i

t1

f (u)=b

f

l

t2

g

l

t3

c

. . .

t

d

. . .

t

h

l

t

πu

Page 68: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de Yen

Exemplo

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1h

l

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

b

f

l

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

l

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

l

t

s

a

i

t1

b

f

l

g

...

t

t2

h

i

t

j

...

t

Page 69: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de Yen

Exemplo

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1h

l

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

b

f

l

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

l

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

l

t

s

a

i

t1

b

f

l

g

...

t

t2

h

i

t

j

...

t

Page 70: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de Yen

Exemplo

sb

g l tt

f

e

h

i

c

a

jds

a

i

t1

s

a

i

t1h

l

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

b

f

l

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

l

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

l

t

s

a

i

t1

b

f

l

g

...

t

t2

h

i

t

j

...

t

Page 71: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de Yen

Exemplo

sb

g l tt

f

e

h

i

c

a

jds

b...

t

a

i

t1

c

...

t

s

a

i

t1h

l

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

b

f

l

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

l

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

l

t

s

a

i

t1

b

f

l

g

...

t

t2

h

i

t

j

...

t

Page 72: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de Yen

Exemplo

sb

g l tt

f

e

h

i

c

a

jds

b

f

l

t

a

i

t1

c

...

t

s

a

i

t1h

l

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

b

f

l

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

l

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

l

t

s

a

i

t1

b

f

l

g

...

t

t2

h

i

t

j

...

t

Page 73: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de Yen

Exemplo

sb

g l tt

f

e

h

i

c

a

jds

a

i

t1h

l

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

b

f

l

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

l

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

l

t

s

a

i

t1

b

f

l

g

...

t

t2

h

i

t

j

...

t

Page 74: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de Yen

Exemplo

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1h

l

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

b

f

l

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

l

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

l

t

s

a

i

t1

b

f

l

g

...

t

t2

h

i

t

j

...

t

Page 75: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de Yen

Exemplo

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1h

l

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

b

f

l

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

l

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

l

t

s

a

i

t1

b

f

l

g

...

t

t2

h

i

t

j

...

t

Page 76: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de Yen

Exemplo

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1h

l

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

b

f

l

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

l

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

l

t

s

a

i

t1

b

f

l

g

...

t

t2

h

i

t

j

...

t

Page 77: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de Yen

Exemplo

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1h

l

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

b

f

l

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

l

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

l

t

s

a

i

t1

b

f

l

g

...

t

t2

h

i

t

j

...

t

Page 78: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de Yen

Exemplo

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1h

l

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

b

f

l

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

l

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

l

t

s

a

i

t1

b

f

l

g

...

t

t2

h

i

t

j

...

t

Page 79: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de Yen

Exemplo

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1h

l

t

s

a

i

t1

b

f

l

t2

s

a

i

t1

b

f

l

t2

c

b

f

l

t

s

a

i

t1

b

c

...

t

d...

t

f

l

t2

g

l

t

h...

t

s

a

i

t1

b

f

e

...

t

l

t2

g

l

t

s

a

i

t1

b

f

l

g

...

t

t2

h

i

t

j

...

t

Page 80: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de YEN

Método de YEN

Algoritmo YEN (V ,A, c, s, t , k)

1 P1 ← um caminho de custo mínimo de s a t

2 (N,E , f )← árvore dos prefixos de P1

3 para i = 2, . . . , k faça

4 Pi ← caminho de custo mínimo em L

5 (N,E , f ,L)←ATUALIZE-YEN (V ,A, c, s, t ,Pi ,N,E , f ,L)

6 devolva 〈P1, . . . ,Pk 〉

Page 81: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de YEN

ATUALIZE-YEN

Algoritmo ATUALIZE-YEN (V ,A, c, s, t ,P,N ′,E ′, f ′,L′)

0 L ← L′ − {P}

1 RP ← maior caminho em (N ′,E ′) com ponta inicial na

raiz tal que QP := f (RP) é prefixo de P

2 (N,E , f )← ÁRVORE-DOS-PREFIXOS(N ′,E ′, f ′,P)

3 Seja f (〈u0, . . . ,uk , . . . ,uq〉) = P e RP = 〈u0, . . . ,uk 〉.

4 para cada u ∈ {uk , . . . ,uq−1} faça

5 Pu ← st-caminho de custo mínimo com prefixo f (Ru)e que não possui arcos em Au

6 L ← L ∪ {Pu}

7 devolva (N,E , f ,L)

Page 82: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de YEN

Exemplo

sb

g l tt

f

e

h

i

c

a

jd f (Ru) = 〈s,b〉

Au

s

a

i

t1

f (u)=b

f

l

t2

g

l

t3

Page 83: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Método de YEN

Exemplo

sb

g l tt

f

e

h

i

c

a

jd

s

a

i

t1

b

f

l

t2

g

l

t3

h

l

t4

Page 84: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Algoritmo de Katoh, Ibaraki e Mine

Específico para grafos simétricos

Método eficiente para o problema do desvio mínimoDiminuição do número de caminhos candidatos gerados acada iteraçãoBaseado no método de YenPartições definidas apenas para nós com mais de um filhoDepende rotina para o problema CM: T (n,m)

Melhor desempenho assintótico: Θ(kT (n,m))

Page 85: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Algoritmo de Katoh, Ibaraki e Mine

Específico para grafos simétricosMétodo eficiente para o problema do desvio mínimo

Diminuição do número de caminhos candidatos gerados acada iteraçãoBaseado no método de YenPartições definidas apenas para nós com mais de um filhoDepende rotina para o problema CM: T (n,m)

Melhor desempenho assintótico: Θ(kT (n,m))

Page 86: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Algoritmo de Katoh, Ibaraki e Mine

Específico para grafos simétricosMétodo eficiente para o problema do desvio mínimoDiminuição do número de caminhos candidatos gerados acada iteração

Baseado no método de YenPartições definidas apenas para nós com mais de um filhoDepende rotina para o problema CM: T (n,m)

Melhor desempenho assintótico: Θ(kT (n,m))

Page 87: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Algoritmo de Katoh, Ibaraki e Mine

Específico para grafos simétricosMétodo eficiente para o problema do desvio mínimoDiminuição do número de caminhos candidatos gerados acada iteraçãoBaseado no método de Yen

Partições definidas apenas para nós com mais de um filhoDepende rotina para o problema CM: T (n,m)

Melhor desempenho assintótico: Θ(kT (n,m))

Page 88: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Algoritmo de Katoh, Ibaraki e Mine

Específico para grafos simétricosMétodo eficiente para o problema do desvio mínimoDiminuição do número de caminhos candidatos gerados acada iteraçãoBaseado no método de YenPartições definidas apenas para nós com mais de um filho

Depende rotina para o problema CM: T (n,m)

Melhor desempenho assintótico: Θ(kT (n,m))

Page 89: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Algoritmo de Katoh, Ibaraki e Mine

Específico para grafos simétricosMétodo eficiente para o problema do desvio mínimoDiminuição do número de caminhos candidatos gerados acada iteraçãoBaseado no método de YenPartições definidas apenas para nós com mais de um filhoDepende rotina para o problema CM: T (n,m)

Melhor desempenho assintótico: Θ(kT (n,m))

Page 90: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Algoritmo de Katoh, Ibaraki e Mine

Específico para grafos simétricosMétodo eficiente para o problema do desvio mínimoDiminuição do número de caminhos candidatos gerados acada iteraçãoBaseado no método de YenPartições definidas apenas para nós com mais de um filhoDepende rotina para o problema CM: T (n,m)

Melhor desempenho assintótico: Θ(kT (n,m))

Page 91: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo árvore dos menores caminhos

a b

c

d

f

e1 1 1

10 10 1

1 1

a

b

d

e1

c1

1

f1

1

e

d

b

a1

1

c

1f

1

1

Page 92: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo árvore dos menores caminhos

a b

c

d

f

e1 1 1

10 10 1

1 1

a

b

d

e1

c1

1

f1

1

e

d

b

a1

1

c

1f

1

1

Page 93: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Exemplo árvore dos menores caminhos

a b

c

d

f

e1 1 1

10 10 1

1 1

a

b

d

e1

c1

1

f1

1

e

d

b

a1

1

c

1f

1

1

Page 94: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema do desvio de custo mínimo

Definição

Problema do desvio de custo mínimo (V ,A, c, s, t):Dados:

Grafo simétrico com custo: (V ,A, c)Vértices: s e tP = 〈s = a1, . . . ,an = t〉 um caminho de custo mínimode s a t

Encontrar um caminho de custo mínimo, diferente deP, entre s e t.

Page 95: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema do desvio de custo mínimo

Exemplo

s t

s δ

u ...

t

t

arco δu ∈ Ts

s −→Ts

u −→Tt

t

arco δu /∈ Ts

s −→Ts

u →∈A

v −→Tt

t

Page 96: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema do desvio de custo mínimo

Exemplo

s δ

u ...

t

t

arco δu ∈ Ts

s −→Ts

u −→Tt

t

arco δu /∈ Ts

s −→Ts

u →∈A

v −→Tt

t

Page 97: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema do desvio de custo mínimo

Exemplo

s δ

u ...

t

t

arco δu ∈ Ts

s −→Ts

u −→Tt

t

arco δu /∈ Ts

s −→Ts

u →∈A

v −→Tt

t

Page 98: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema do desvio de custo mínimo

Exemplo

s δ

u ...

t

t

arco δu ∈ Tss −→

Tsu −→

Ttt

arco δu /∈ Ts

s −→Ts

u →∈A

v −→Tt

t

Page 99: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema do desvio de custo mínimo

Exemplo

s δ

u ...

t

t

arco δu ∈ Tss −→

Tsu −→

Ttt

arco δu /∈ Tss −→

Tsu →∈A

v −→Tt

t

Page 100: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema do desvio de custo mínimo

Tipos de caminhos

Um novo caminho de custo mínimo construído através deu ∈ V é de um dos dois tipos definidos a seguir:

tipo I : s −→Ts

u −→Tt

t .

tipo II : s −→Ts

u →∈A

v −→Tt

t .

Ts uma árvore de menores caminhos com raiz em sTt uma árvore de menores caminhos com raiz em tPr = 〈t = an, . . . ,a1 = s〉P ∈ Ts e Pr ∈ Tt

Page 101: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema do desvio de custo mínimo

Desvio de custo mínimo

s b

c

d

f

t1 1 1

10 10 1

1 1

Tipo I

〈s,b, f ,d , t〉

Tipo II

〈s, c,d , t〉〈s,b, c,d , t〉

s

b

d

t1

c1

1

f1

1

t

d

b

s1

1

c

1f

1

1

Page 102: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema do desvio de custo mínimo

Desvio de custo mínimo

s b

c

d

f

t1

1 1

11

10 10 1

Tipo I〈s,b, f ,d , t〉

〈s,b, f ,d , t〉

Tipo II

〈s, c,d , t〉〈s,b, c,d , t〉

s

b

d

t1

c1

1

f1

1

t

d

b

s1

1

c

1f

1

1

Page 103: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema do desvio de custo mínimo

Desvio de custo mínimo

s b

c

d

f

t1 1 1

10 10 1

1 1

Tipo I〈s,b, f ,d , t〉

Tipo II〈s, c,d , t〉

〈s, c,d , t〉〈s,b, c,d , t〉

s

b

d

t1

c1

1

f1

1

t

d

b

s1

1

c

1f

1

1

Page 104: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema do desvio de custo mínimo

Desvio de custo mínimo

s b

c

d

f

t1 1 1

10 10 1

1 1

Tipo I〈s,b, f ,d , t〉

Tipo II〈s, c,d , t〉〈s,b, c,d , t〉

s

b

d

t1

c1

1

f1

1

t

d

b

s1

1

c

1f

1

1

Page 105: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema do desvio de custo mínimo

Rotulações ε e ζ

P = 〈a,b,d ,e〉

Rotulação ε

ε(a) = 1Se u ∈ P então ε(u) = ε(ψ(u)) + 1Se u /∈ P então ε(u) = ε(ψ(u))

a ε = 1

b 2

d 3

e4 c 3

f 2

Rotulação ζ

ζ(e) = |P|Se u ∈ P então ζ(u) = ζ(ψ(u))− 1Se u /∈ P então ζ(u) = ζ(ψ(u))

e ζ = 4

d 3

b2

a1

c 3f 3

Page 106: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema do desvio de custo mínimo

Desvio de custo mínimo com rotulações

s b

c

d

f

t1 1 1

10 10 1

1 1

Tipo I

〈s,b, f ,d , t〉

Tipo II

〈s,b, c,d , t〉

s ε = 1

b 2

d 3

t4

1

c 3

1

1

f 2

1

1

t ζ = 4

d 3

b2

s11

1

c 3

1f 3

1

1

Page 107: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema do desvio de custo mínimo

Desvio de custo mínimo com rotulações

s b

c

d

f

t1

1 1

11

10 10 1

Tipo I〈s,b, f ,d , t〉

〈s,b, f ,d , t〉

Tipo II

〈s,b, c,d , t〉

s ε = 1

b 2

d 3

t4

1

c 3

1

1

f 2

1

1

t ζ = 4

d 3

b2

s11

1

c 3

1f 3

1

1

Page 108: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema do desvio de custo mínimo

Desvio de custo mínimo com rotulações

s b

c

d

f

t1 1 1

10 10 1

1 1

Tipo I〈s,b, f ,d , t〉

Tipo II〈s, c,d , t〉

〈s,b, c,d , t〉

s ε = 1

b 2

d 3

t4

1

c 3

1

1

f 2

1

1

t ζ = 4

d 3

b2

s11

1

c 3

1f 3

1

1

Page 109: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema do desvio de custo mínimo

Desvio de custo mínimo com rotulações

s b

c

d

f

t1 1 1

10 10 1

1 1

Tipo I〈s,b, f ,d , t〉

Tipo II〈s,b, c,d , t〉

s ε = 1

b 2

d 3

t4

1

c 3

1

1

f 2

1

1

t ζ = 4

d 3

b2

s11

1

c 3

1f 3

1

1

Page 110: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Problema do desvio de custo mínimo

Disposição esquemática das partições

s tP1

P2

Pc

Pb

Pa

Page 111: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Implementação

Implementação

Codificação em Java

Biblioteca open source JUNG: 1.7 e 2.0Diversos algoritmos já implementados, incluindo o DijkstraVisualização de grafos

Page 112: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Implementação

Implementação

Codificação em JavaBiblioteca open source JUNG: 1.7 e 2.0

Diversos algoritmos já implementados, incluindo o DijkstraVisualização de grafos

Page 113: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Implementação

Implementação

Codificação em JavaBiblioteca open source JUNG: 1.7 e 2.0Diversos algoritmos já implementados, incluindo o Dijkstra

Visualização de grafos

Page 114: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Implementação

Implementação

Codificação em JavaBiblioteca open source JUNG: 1.7 e 2.0Diversos algoritmos já implementados, incluindo o DijkstraVisualização de grafos

Page 115: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Experimentos

Variáveisn: número de vérticesm: número de arestasd : densidade=m/

(n2

)k : quantidade de menores caminhos

MetodologiaGrafos simétricos conexos com custos positivos5 pontas iniciais e finaisUm grafo por densidade

Consumo de tempoKIM: Θ(kT (n,m)) = Θ(km log n) usando-se DIJKSTRA

KIM: Θ(km log n) = Θ(kdn2 log n)

Page 116: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Experimentos

Variáveisn: número de vérticesm: número de arestasd : densidade=m/

(n2

)k : quantidade de menores caminhos

MetodologiaGrafos simétricos conexos com custos positivos5 pontas iniciais e finaisUm grafo por densidade

Consumo de tempoKIM: Θ(kT (n,m)) = Θ(km log n) usando-se DIJKSTRA

KIM: Θ(km log n) = Θ(kdn2 log n)

Page 117: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Experimentos

Variáveisn: número de vérticesm: número de arestasd : densidade=m/

(n2

)k : quantidade de menores caminhos

MetodologiaGrafos simétricos conexos com custos positivos5 pontas iniciais e finaisUm grafo por densidade

Consumo de tempoKIM: Θ(kT (n,m)) = Θ(km log n) usando-se DIJKSTRA

KIM: Θ(km log n) = Θ(kdn2 log n)

Page 118: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Experimentos

Tempo em função do número de caminhos

Consumo de tempo KIM: Θ(kT (n,m))

Page 119: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Experimentos

Tempo em função do número de caminhos

0

1000

2000

3000

4000

5000

6000

7000

100 200 300 400 500 600 700 800 900 1000

Tem

po(s

)

Quantidade de caminhos gerados(k)

Tempo de execução em função do número de caminhos. n=900

densidade0.10.51.0

Page 120: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Experimentos

Tempo em função do número de vértices

Consumo de tempo KIM usando DIJKSTRA "min-heap":Θ(kdn2 log n)

Page 121: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Experimentos

Tempo em função do número de vértices

0

100

200

300

400

500

600

700

100 200 300 400 500 600 700 800 900

Tem

po(s

)

Tempo em função do número de vértices. Densidade 0.1

número de caminhos(k)k=100k=200k=300k=400k=500k=600k=700k=800k=900

k=1000

Page 122: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Experimentos

Tempo em função do número de vértices

0

500

1000

1500

2000

2500

3000

100 200 300 400 500 600 700 800 900

Tem

po(s

)

Tempo em função do número de vértices. Densidade 0.5

número de caminhos(k)k=100k=200k=300k=400k=500k=600k=700k=800k=900

k=1000

Page 123: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Experimentos

Tempo em função do número de vértices

0

1000

2000

3000

4000

5000

6000

7000

100 200 300 400 500 600 700 800 900

Tem

po(s

)

Tempo em função do número de vértices. Densidade 1.0

número de caminhos(k)k=100k=200k=300k=400k=500k=600k=700k=800k=900

k=1000

Page 124: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Experimentos

Principais rotinas

RotinasProblema do desvio mínimo, rotina SEPProblema CM, algoritmo Dijkstra

Consumo de tempoSEP: Θ(m + n)

DIJKSTRA com "min-heap": Θ(m log n)

Page 125: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Experimentos

Fatia de tempo utilizada pelas principais rotinas.

0.978

0.98

0.982

0.984

0.986

0.988

0.99

0.992

0.994

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Pro

porç

ão

Densidade

Proporção de tempo utilizada pelas duas principais subrotinas para cada densidade. n=900

número de caminhosk=100k=200k=300k=400k=500k=600k=700k=800k=900

k=1000

Page 126: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Experimentos

Fatia de tempo utilizada pelas execuções do Dijkstra.

0.35

0.4

0.45

0.5

0.55

0.6

0.65

0.7

0.75

0.8

0.85

0.9

100 200 300 400 500 600 700 800 900

Pro

porç

ão

Número de vértices

Proporção de tempo utilizada pelas execuções do algoritmo Dijkstra. Densidade=0.1

número de caminhosk=100k=200k=300k=400k=500k=600k=700k=800k=900

k=1000

Page 127: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Experimentos

Fatia de tempo utilizada pelas execuções do Dijkstra.

0.5

0.55

0.6

0.65

0.7

0.75

0.8

0.85

0.9

100 200 300 400 500 600 700 800 900

Pro

porç

ão

Número de vértices

Proporção de tempo utilizada pelas execuções do algoritmo Dijkstra. Densidade=0.5

número de caminhosk=100k=200k=300k=400k=500k=600k=700k=800k=900

k=1000

Page 128: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Experimentos

Fatia de tempo utilizada pelas execuções do Dijkstra.

0.55

0.6

0.65

0.7

0.75

0.8

0.85

0.9

100 200 300 400 500 600 700 800 900

Pro

porç

ão

Número de vértices

Proporção de tempo utilizada pelas execuções do algoritmo Dijkstra. Densidade=1.0

número de caminhosk=100k=200k=300k=400k=500k=600k=700k=800k=900

k=1000

Page 129: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Experimentos

Fatia de tempo utilizada pelas execuções do algoritmo de desviomínimo.

0.1

0.15

0.2

0.25

0.3

0.35

100 200 300 400 500 600 700 800 900

Pro

porç

ão

Número de vértices

Proporção de tempo utilizada pelas execuções da rotina SEP. Densidade=0.1

número de caminhosk=100k=200k=300k=400k=500k=600k=700k=800k=900

k=1000

Page 130: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Experimentos

Fatia de tempo utilizada pelas execuções do algoritmo de desviomínimo.

0.1

0.15

0.2

0.25

0.3

0.35

100 200 300 400 500 600 700 800 900

Pro

porç

ão

Número de vértices

Proporção de tempo utilizada pelas execuções da rotina SEP. Densidade=0.5

número de caminhosk=100k=200k=300k=400k=500k=600k=700k=800k=900

k=1000

Page 131: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Experimentos

Fatia de tempo utilizada pelas execuções do algoritmo de desviomínimo.

0.1

0.12

0.14

0.16

0.18

0.2

0.22

0.24

0.26

0.28

0.3

100 200 300 400 500 600 700 800 900

Pro

porç

ão

Número de vértices

Proporção de tempo utilizada pelas execuções da rotina SEP. Densidade=1.0

número de caminhosk=100k=200k=300k=400k=500k=600k=700k=800k=900

k=1000

Page 132: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Conclusões

No algoritmo KIM a rotina para o problema CM consome amaior fatia do tempo de execução do algoritmo.

Page 133: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

Trabalhos futuros

Representar caminhos usando TRIEAnalisar idéia de reconstrução de árvoresImplementar algoritmo de Hershberger

Page 134: k-menores caminhos

Motivação k -menores caminhos Árvore dos prefixos Partições YEN KIM Implementação Conclusões

FIM

"Não basta ensinar ao homem uma especialidade,porque se tornará assim uma máquina utilizável e nãouma personalidade.É necessário que adquira um sentimento, sensoprático daquilo que vale a pena ser empreendido,daquilo que é belo, do que é moralmente correto."

Albert Einstein

Page 135: k-menores caminhos

Apêndice

8 ApêndiceKIMÁrvore dos prefixos

Page 136: k-menores caminhos

Apêndice

KIM

Custo zero nas arestas

a b

c

d e1.0 0.0 1.0

1.0 1.0

a ε = 1

b ε = 2

d ε = 3

eε = 4

1.0

c ε = 3

1.0

0.0

1.0

e ζ = 4

d ζ = 3

b ζ = 2

a ζ = 1

1.0

cζ = 2

1.0

0.0

1.0

Problemaε(c) > ζ(c)

Não consegue gerar ocaminho 〈a,b, c,d ,e〉

Page 137: k-menores caminhos

Apêndice

KIM

Custo zero nas arestas

a b

c

d e1.0 0.0 1.0

1.0 1.0

a ε = 1

b ε = 2

d ε = 3

eε = 4

1.0

c ε = 3

1.0

0.0

1.0

e ζ = 4

d ζ = 3

b ζ = 2

a ζ = 1

1.0

cζ = 2

1.0

0.0

1.0

Problemaε(c) > ζ(c)

Não consegue gerar ocaminho 〈a,b, c,d ,e〉

Page 138: k-menores caminhos

Apêndice

KIM

Custo zero nas arestas

a b

c

d e1.0 0.0 1.0

1.0 1.0

a ε = 1

b ε = 2

d ε = 3

eε = 4

1.0

c ε = 3

1.0

0.0

1.0

e ζ = 4

d ζ = 3

b ζ = 2

a ζ = 1

1.0

cζ = 2

1.0

0.0

1.0

Problemaε(c) > ζ(c)

Não consegue gerar ocaminho 〈a,b, c,d ,e〉

Page 139: k-menores caminhos

Apêndice

KIM

Pa

Na figura temos os caminhos Pj e Pk , 1 <= j < k onde Pj é paide Pk e que compartilham o prefixo 〈s, . . . ,u〉 diferenciando-sea partir de u.

s

u

a

tj

b

tk

Page 140: k-menores caminhos

Apêndice

KIM

Pa

Esquema dos caminhos na partição Pa.

s

u

a

tj

b

tk

Page 141: k-menores caminhos

Apêndice

KIM

Pb

s

u

tj

b

tk

Page 142: k-menores caminhos

Apêndice

KIM

Pb

s

u

v

il

ij

b

ik

Page 143: k-menores caminhos

Apêndice

KIM

Pb

s

u

v

tl tj

b

tk

Page 144: k-menores caminhos

Apêndice

KIM

Pc

s

. . .

u

tk tj

Page 145: k-menores caminhos

Apêndice

KIM

Pc

s

. . . vtl

u

tk tj

Page 146: k-menores caminhos

Apêndice

KIM

Pc

s

v

. . .

u

tk tj

tl

Page 147: k-menores caminhos

Apêndice

Árvore dos prefixos

DefiniçãoQ, (N,E), f ,V (Q),A(Q)

Q: uma coleção de caminhos

Caminhos〈s,a, i , t〉〈s,b, f , l , t〉〈s,b,g, l , t〉〈s,b,h, l , t〉〈s,b,h, i , t〉〈s,a, i ,h, l , t〉

V (Q): conjunto de vérticesA(Q): conjunto de arcos

Page 148: k-menores caminhos

Apêndice

Árvore dos prefixos

DefiniçãoQ, (N,E), f ,V (Q),A(Q)

(N,E): uma arborescência

ae

c

b

Grafo acíclico (N,E)|N| = |E |+ 1raiz

Todo vértice, exceto a raiz, é ponta final de exatamenteum arco.

Page 149: k-menores caminhos

Apêndice

Árvore dos prefixos

DefiniçãoQ, (N,E), f ,V (Q),A(Q)

f : uma função rótulo

Associa nós e arestas do grafo aos nós e arestas daárvore de prefixos.

Se

R = 〈u0,e1,u1, . . . ,et ,ut〉for um caminho em (N,E), então

f (R) := 〈f (u0), f (e1), f (u1), . . . , f (et ), f (ut )〉será uma seqüência de vértices e arcos dos caminhos emQ.