Algoritmos aproximativos: o problema do...

27
Algoritmos aproximativos: o problema do caixeiro-viajante Universidade Federal do Rio de Janeiro Vinícius Gusmão Pereira de Sá

Transcript of Algoritmos aproximativos: o problema do...

Algoritmos aproximativos: o problema do caixeiro-viajante

Universidade Federal do Rio de Janeiro

Vinícius Gusmão Pereira de Sá

Algoritmos aproximativos

T1

T2

T3

T4

T5

T6

T7

Máquina A

Máquina B

Máquina C

Máquina D

0 8 10 15 18 19 22 25 35 38 42 60 70 (min)‏

Algoritmos aproximativos

10:00 15:00

T1

T2

T3

T4

T5

T6

T7

Máquina A

Máquina B

Máquina C

Máquina D

0 8 10 15 18 19 22 25 35 38 42 60 70 (min)‏

Algoritmos aproximativos

10:00 15:00 19:00

T1

T2

T3

T4

T5

T6

T7

Máquina A

Máquina B

Máquina C

Máquina D

0 8 10 15 18 19 22 25 35 38 42 60 70 (min)‏

Problemas NP-difíceis

→ pelo menos tão difíceis quanto qualquer problema em NP

→ provavelmente não é possível resolvê-los em tempo polinomial (a menos que P = NP)

→ força bruta demanda tempo exorbitante

→ heurísticas e algoritmos aproximativos

→ mochila, cobertura mínima por conjuntos, floresta de Steiner, conjunto independente máximo, escalonamento, caixeiro-viajante etc.

Problemas de minimização: A(I) ≤ α . opt(I) , α ≥ 1

Problemas de maximização: A(I) ≥ α . opt(I) , 0 < α ≤ 1

Algoritmos aproximativos

Algoritmos aproximativos

10:00 15:00 19:00

T1

T2

T3

T4

T5

T6

T7

0 8 10 15 18 19 22 25 35 38 42 60 70 (min)‏

18:20

Algoritmo aproximativo:

α = 4/3

Algoritmos aproximativos

10:00 15:00 19:00

T1

T2

T3

T4

T5

T6

T7

0 8 10 15 18 19 22 25 35 38 42 60 70 (min)‏

18:20

Algoritmo aproximativo:

α = 4/3

16:15

O problema do caixeiro-viajante

18

25

20

9

5

38

4

20

17

7

O problema do caixeiro-viajante → o mais famoso problema de otimização combinatória

→ operações de máquinas em manufatura, otimização do movimento de ferramentas de corte, otimização de perfurações em placas de circuito impresso, roteamento de veículos, distribuição de tarefas etc.

→ ciclo hamiltoniano de custo mínimo

→ NP-difícil, mesmo se as arestas tiverem custos em {1,2}

→ gama enorme de heurísticas

→ diversas formulações e problemas correlatos

Caixeiro-viajante métrico (euclidiano)‏

→ grafo completo → custos das arestas satisfazem a desigualdade triangular

A B

X

c(A,B) ≤ c(A,X) + c(X,B)

A B

O menor caminho entre A e B é sempre a própria aresta (A,B)‏

Algoritmo RSL (Rosenkrantz, Stearns e Lewis)‏

A B

C D

E

F

G

H

Algoritmo RSL (Rosenkrantz, Stearns e Lewis)‏

1) árvore geradora T de custo mínimo

A B

C D

E

F

G

H

Algoritmo RSL (Rosenkrantz, Stearns e Lewis)‏

2) duplicam-se as arestas (multigrafo)‏

A B

C D

E

F

G

H

Algoritmo RSL (Rosenkrantz, Stearns e Lewis)‏

3) determina-se um ciclo euleriano W: A,B,D,G,C,G,H,G,F,G,D,E,D,B,A

A B

C D

E

F

G

H

Algoritmo RSL (Rosenkrantz, Stearns e Lewis)‏

4) constrói-se um circuito hamiltoniano, com os vértices na ordem do ciclo euleriano, sem repetições: A,B,D,G,C,G,H,G,F,G,D,E,D,B,A

A B

C D

E

F

G

H

Algoritmo RSL (Rosenkrantz, Stearns e Lewis)‏

5) retorna-se o circuito hamiltoniano H assim obtido: A,B,D,G,C,H,F,E,A

c(H) ≤ 2 . c(H*)

A B

C D

E

F

G

H

Algoritmo RSL (Rosenkrantz, Stearns e Lewis)‏

Tempo

O (n2)

A B

C D

E

F

G

H

Algoritmo de Christofides

A B

C D

E

F

G

H

1) árvore geradora T de custo mínimo

A B

C D

E

F

G

H

Algoritmo de Christofides

2) emparelhamento perfeito M (de custo mínimo) dos vértices de grau ímpar

A B

C D

E

F

G

H

Algoritmo de Christofides

2) emparelhamento perfeito M (de custo mínimo) dos vértices de grau ímpar

A B

C D

E

F

G

H

Algoritmo de Christofides

A B

C D

E

F

G

H

Algoritmo de Christofides

3) determina-se um ciclo euleriano W: A,B,D,G,F,H,G,C,D,E,A

A B

C D

E

F

G

H

Algoritmo de Christofides

4) constrói-se um circuito hamiltoniano, com os vértices na ordem do ciclo euleriano, sem repetições: A,B,D,G,F,H,G,C,D,E,A

A B

C D

E

F

G

H

Algoritmo de Christofides

5) retorna-se o circuito hamiltoniano H assim obtido: A,B,D,G,F,H,C,E,A

c(H) ≤ 1,5 . c(H*)

A B

C D

E

F

G

H

Algoritmo de Christofides

Tempo

O (n3)

UFRJ