Algoritmos aproximativos
-
Upload
fernando-simeone -
Category
Technology
-
view
59 -
download
0
Transcript of Algoritmos aproximativos
![Page 1: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/1.jpg)
Algoritmos AproximativosFernando Simeone
Mestrado em Ciência da Computação Universidade Federal de Lavras
!Projeto e Análise de Algoritmos (2014/2)
![Page 2: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/2.jpg)
Tópicos • Introdução
• Conceitos
• O problema de cobertura de vértices
• O problema do caixeiro viajante
• O problema da soma de subconjuntos
• Considerações finais
• Referências
![Page 3: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/3.jpg)
Introdução
![Page 4: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/4.jpg)
Introdução
![Page 5: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/5.jpg)
Introdução• Problemas com alto custo computacional;
![Page 6: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/6.jpg)
Introdução• Problemas com alto custo computacional;
• Problemas da classe NP-difícil;
![Page 7: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/7.jpg)
Introdução• Problemas com alto custo computacional;
• Problemas da classe NP-difícil;
• Problemas de grande relevância prática.
![Page 8: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/8.jpg)
Introdução
![Page 9: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/9.jpg)
Introdução• Requisitos dos problemas da classe NP-difícil:
![Page 10: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/10.jpg)
Introdução• Requisitos dos problemas da classe NP-difícil:
1. Encontrar a solução ótima
![Page 11: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/11.jpg)
Introdução• Requisitos dos problemas da classe NP-difícil:
1. Encontrar a solução ótima
2. Em tempo polinomial
![Page 12: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/12.jpg)
Introdução• Requisitos dos problemas da classe NP-difícil:
1. Encontrar a solução ótima
2. Em tempo polinomial
3. Para todas as instâncias
![Page 13: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/13.jpg)
Conceitos
![Page 14: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/14.jpg)
Problemas de Otimização
Problemas de MAXIMIZAÇÃO
Problemas de MINIMIZAÇÃOX
![Page 15: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/15.jpg)
Fator de aproximação
ρ(n)C C*Algoritmo
ρ(n)-aproximativo
![Page 16: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/16.jpg)
Problemas de Minimização
![Page 17: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/17.jpg)
Problemas de Minimização
0 < C* ≤ C
![Page 18: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/18.jpg)
Problemas de Minimização
0 < C* ≤ C
ρ(n) ≥ C C*
![Page 19: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/19.jpg)
Problemas de Maximização
![Page 20: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/20.jpg)
Problemas de Maximização
0 < C ≤ C*
![Page 21: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/21.jpg)
Problemas de Maximização
0 < C ≤ C*
ρ(n) ≥ C* C
![Page 22: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/22.jpg)
Problemas de Otimização
ρ(n) ≥ max C* , C C C*
![Page 23: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/23.jpg)
Esquema Aproximativo
𝟄 > 0algoritmo (1 + 𝟄)-aproximativo
![Page 24: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/24.jpg)
O problema de cobertura de vértices
![Page 25: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/25.jpg)
O problema de cobertura de vértices
b dc
e f
a
g h
![Page 26: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/26.jpg)
O problema de cobertura de vértices
b dc
e f
a
g h
![Page 27: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/27.jpg)
Algoritmo AproximativoCOBERTURA-VÉRTICES-APROXIMADO (G) 1 C = ∅ 2 E' = G.E 3 enquanto E' ≠ ∅ 4 escolha uma aresta (u, v) ∈ E' 5 C = C ∪ {u, v} 6 remover de E' todas as arestas incidentes em u ou v 7 retorna C
O(V + E)
![Page 28: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/28.jpg)
COBERTURA-VÉRTICES-APROXIMADO (G) 1 C = ∅ 2 E' = G.E 3 enquanto E' ≠ ∅ 4 escolha uma aresta (u, v) ∈ E' 5 C = C ∪ {u, v} 6 remover de E' todas as arestas incidentes em u ou v 7 retorna C
Algoritmo Aproximativo
b dc
e f
a
g h
C = {} !E' = {(a,b), (a,e), (b,c), (b,g), (c,d), (d,g), (d,h), (e,f), (f,g)}
![Page 29: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/29.jpg)
COBERTURA-VÉRTICES-APROXIMADO (G) 1 C = ∅ 2 E' = G.E 3 enquanto E' ≠ ∅ 4 escolha uma aresta (u, v) ∈ E' 5 C = C ∪ {u, v} 6 remover de E' todas as arestas incidentes em u ou v 7 retorna C
Algoritmo Aproximativo
b dc
e f
a
g h
C = {a, b} !E' = {(c,d), (d,g), (d,h), (e,f), (f,g)}
![Page 30: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/30.jpg)
COBERTURA-VÉRTICES-APROXIMADO (G) 1 C = ∅ 2 E' = G.E 3 enquanto E' ≠ ∅ 4 escolha uma aresta (u, v) ∈ E' 5 C = C ∪ {u, v} 6 remover de E' todas as arestas incidentes em u ou v 7 retorna C
Algoritmo Aproximativo
b dc
e f
a
g h
C = {a, b, c, d} !E' = {(e,f), (f,g)}
![Page 31: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/31.jpg)
COBERTURA-VÉRTICES-APROXIMADO (G) 1 C = ∅ 2 E' = G.E 3 enquanto E' ≠ ∅ 4 escolha uma aresta (u, v) ∈ E' 5 C = C ∪ {u, v} 6 remover de E' todas as arestas incidentes em u ou v 7 retorna C
Algoritmo Aproximativo
b dc
e f
a
g h
C = {a, b, c, d, e, f} !E' = {}
![Page 32: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/32.jpg)
Algoritmo Aproximativo
b dc
e f
a
g h
Solução Encontrada
b dc
e f
a
g h
C = {b, d, e, f}
Solução Ótima
C = {a, b, c, d, e, f}
![Page 33: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/33.jpg)
COBERTURA-VÉRTICES-APROXIMADO (G) 1 C = ∅ 2 E' = G.E 3 enquanto E' ≠ ∅ 4 escolha uma aresta (u, v) ∈ E' 5 C = C ∪ {u, v} 6 remover de E' todas as arestas incidentes em u ou v 7 retorna C
Fator de Aproximaçãob dc
e f
a
g h
A = { (a, b), (c, d), (e, f) }
A
![Page 34: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/34.jpg)
COBERTURA-VÉRTICES-APROXIMADO (G) 1 C = ∅ 2 E' = G.E 3 enquanto E' ≠ ∅ 4 escolha uma aresta (u, v) ∈ E' 5 C = C ∪ {u, v} 6 remover de E' todas as arestas incidentes em u ou v 7 retorna C
Fator de Aproximaçãob dc
e f
a
g h
A = { (a, b), (c, d), (e, f) }
A
|A| ≤ |C*|
![Page 35: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/35.jpg)
COBERTURA-VÉRTICES-APROXIMADO (G) 1 C = ∅ 2 E' = G.E 3 enquanto E' ≠ ∅ 4 escolha uma aresta (u, v) ∈ E' 5 C = C ∪ {u, v} 6 remover de E' todas as arestas incidentes em u ou v 7 retorna C
Fator de Aproximaçãob dc
e f
a
g h
A = { (a, b), (c, d), (e, f) }
A
|A| ≤ |C*|
|C| = 2|A|
![Page 36: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/36.jpg)
COBERTURA-VÉRTICES-APROXIMADO (G) 1 C = ∅ 2 E' = G.E 3 enquanto E' ≠ ∅ 4 escolha uma aresta (u, v) ∈ E' 5 C = C ∪ {u, v} 6 remover de E' todas as arestas incidentes em u ou v 7 retorna C
Fator de Aproximaçãob dc
e f
a
g h
A = { (a, b), (c, d), (e, f) }
A
|A| ≤ |C*|
|C| = 2|A|
|C| ≤ 2|C*|
![Page 37: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/37.jpg)
COBERTURA-VÉRTICES-APROXIMADO (G) 1 C = ∅ 2 E' = G.E 3 enquanto E' ≠ ∅ 4 escolha uma aresta (u, v) ∈ E' 5 C = C ∪ {u, v} 6 remover de E' todas as arestas incidentes em u ou v 7 retorna C
Fator de Aproximaçãob dc
e f
a
g h
A = { (a, b), (c, d), (e, f) }
A
|A| ≤ |C*|
|C| = 2|A|
|C| ≤ 2|C*|
ρ(n) = 2
![Page 38: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/38.jpg)
COBERTURA-VÉRTICES-APROXIMADO (G) 1 C = ∅ 2 E' = G.E 3 enquanto E' ≠ ∅ 4 escolha uma aresta (u, v) ∈ E' 5 C = C ∪ {u, v} 6 remover de E' todas as arestas incidentes em u ou v 7 retorna C
Fator de Aproximaçãob dc
e f
a
g h
A = { (a, b), (c, d), (e, f) }
A
|A| ≤ |C*|
|C| = 2|A|
|C| ≤ 2|C*|
ρ(n) = 2 Algoritmo 2-aproximativo de tempo polinomial
![Page 39: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/39.jpg)
O problema do caixeiro viajante
![Page 40: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/40.jpg)
O problema do caixeiro viajanteb
d
c
e f
a g
12
![Page 41: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/41.jpg)
O problema do caixeiro viajanteb
d
c
e f
a g
![Page 42: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/42.jpg)
Inequalidade Triangular
bc
a
dist(a, b) + dist(b, c) ≥ dist(a, c)
![Page 43: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/43.jpg)
Algoritmo Aproximativo
𝜣(V2)
CAIXEIRO-VIAJANTE-APROXIMADO (G, c) 1 seleciona vértice r ∈ G.E para ser a raiz 2 T = PRIM(G, c, r) 3 H = vértices ordenados de acordo com sua ordem de visitação em um percurso de pré-ordem em T 4 retorna ciclo hamiltoniano H
![Page 44: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/44.jpg)
CAIXEIRO-VIAJANTE-APROXIMADO (G, c) 1 seleciona vértice r ∈ G.E para ser a raiz 2 T = PRIM(G, c, r) 3 H = vértices ordenados de acordo com sua ordem de visitação em um percurso de pré-ordem em T 4 retorna ciclo hamiltoniano H
Algoritmo Aproximativo
b
d
c
e f
a g
![Page 45: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/45.jpg)
CAIXEIRO-VIAJANTE-APROXIMADO (G, c) 1 seleciona vértice r ∈ G.E para ser a raiz 2 T = PRIM(G, c, r) 3 H = vértices ordenados de acordo com sua ordem de visitação em um percurso de pré-ordem em T 4 retorna ciclo hamiltoniano H
Algoritmo Aproximativo
b
d
c
e f
a g
![Page 46: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/46.jpg)
CAIXEIRO-VIAJANTE-APROXIMADO (G, c) 1 seleciona vértice r ∈ G.E para ser a raiz 2 T = PRIM(G, c, r) 3 H = vértices ordenados de acordo com sua ordem de visitação em um percurso de pré-ordem em T 4 retorna ciclo hamiltoniano H
Algoritmo Aproximativo
b
d
c
e f
a g1
5
3
4
6
7
2
H = {a, b, d, e, f, g, c, a}
![Page 47: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/47.jpg)
CAIXEIRO-VIAJANTE-APROXIMADO (G, c) 1 seleciona vértice r ∈ G.E para ser a raiz 2 T = PRIM(G, c, r) 3 H = vértices ordenados de acordo com sua ordem de visitação em um percurso de pré-ordem em T 4 retorna ciclo hamiltoniano H
Algoritmo Aproximativo
H = {a, b, d, e, f, g, c, a}
b
d
c
e f
a g
![Page 48: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/48.jpg)
Algoritmo Aproximativo
b
d
c
e f
a g
b
d
c
e f
a g
b
d
c
e f
a g
b
d
c
e f
a g1
5
3
4
6
7
2
![Page 49: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/49.jpg)
CAIXEIRO-VIAJANTE-APROXIMADO (G, c) 1 seleciona vértice r ∈ G.E para ser a raiz 2 T = PRIM(G, c, r) 3 H = vértices ordenados de acordo com sua ordem de visitação em um percurso de pré-ordem em T 4 retorna ciclo hamiltoniano H
Fator de Aproximação
![Page 50: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/50.jpg)
CAIXEIRO-VIAJANTE-APROXIMADO (G, c) 1 seleciona vértice r ∈ G.E para ser a raiz 2 T = PRIM(G, c, r) 3 H = vértices ordenados de acordo com sua ordem de visitação em um percurso de pré-ordem em T 4 retorna ciclo hamiltoniano H
Fator de Aproximaçãoc(T) ≤ c(H*)
![Page 51: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/51.jpg)
Algoritmo Aproximativob
d
c
e f
a g
W
W = {a, b, d, e, f, g, f, e, d, c, d, b, a}
![Page 52: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/52.jpg)
CAIXEIRO-VIAJANTE-APROXIMADO (G, c) 1 seleciona vértice r ∈ G.E para ser a raiz 2 T = PRIM(G, c, r) 3 H = vértices ordenados de acordo com sua ordem de visitação em um percurso de pré-ordem em T 4 retorna ciclo hamiltoniano H
Fator de Aproximaçãoc(T) ≤ c(H*)
![Page 53: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/53.jpg)
CAIXEIRO-VIAJANTE-APROXIMADO (G, c) 1 seleciona vértice r ∈ G.E para ser a raiz 2 T = PRIM(G, c, r) 3 H = vértices ordenados de acordo com sua ordem de visitação em um percurso de pré-ordem em T 4 retorna ciclo hamiltoniano H
Fator de Aproximaçãoc(T) ≤ c(H*)
c(W) = 2c(T)
![Page 54: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/54.jpg)
CAIXEIRO-VIAJANTE-APROXIMADO (G, c) 1 seleciona vértice r ∈ G.E para ser a raiz 2 T = PRIM(G, c, r) 3 H = vértices ordenados de acordo com sua ordem de visitação em um percurso de pré-ordem em T 4 retorna ciclo hamiltoniano H
Fator de Aproximaçãoc(T) ≤ c(H*)
c(W) = 2c(T)
c(W) ≤ 2c(H*)
![Page 55: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/55.jpg)
Algoritmo Aproximativob
d
c
e f
a g
W = {a, b, d, e, f, g, f, e, d, c, d, b, a}H = {a, b, d, e, f, g, c, a}
![Page 56: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/56.jpg)
Algoritmo Aproximativob
d
c
e f
a g
W = {a, b, d, e, f, g, f, e, d, c, d, b, a}H = {a, b, d, e, f, g, c, a}
![Page 57: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/57.jpg)
Algoritmo Aproximativob
d
c
e f
a g
W = {a, b, d, e, f, g, f, e, d, c, d, b, a}H = {a, b, d, e, f, g, c, a}
![Page 58: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/58.jpg)
Algoritmo Aproximativob
d
c
e f
a g
W = {a, b, d, e, f, g, f, e, d, c, d, b, a}H = {a, b, d, e, f, g, c, a}
![Page 59: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/59.jpg)
Algoritmo Aproximativob
d
c
e f
a g
W = {a, b, d, e, f, g, f, e, d, c, d, b, a}H = {a, b, d, e, f, g, c, a}
![Page 60: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/60.jpg)
Algoritmo Aproximativob
d
c
e f
a g
W = {a, b, d, e, f, g, f, e, d, c, d, b, a}H = {a, b, d, e, f, g, c, a}
![Page 61: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/61.jpg)
Algoritmo Aproximativob
d
c
e f
a g
W = {a, b, d, e, f, g, f, e, d, c, d, b, a}H = {a, b, d, e, f, g, c, a}
![Page 62: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/62.jpg)
Algoritmo Aproximativob
d
c
e f
a g
W = {a, b, d, e, f, g, f, e, d, c, d, b, a}H = {a, b, d, e, f, g, c, a}
![Page 63: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/63.jpg)
CAIXEIRO-VIAJANTE-APROXIMADO (G, c) 1 seleciona vértice r ∈ G.E para ser a raiz 2 T = PRIM(G, c, r) 3 H = vértices ordenados de acordo com sua ordem de visitação em um percurso de pré-ordem em T 4 retorna ciclo hamiltoniano H
Fator de Aproximaçãoc(T) ≤ c(H*)
c(W) = 2c(T)
c(W) ≤ 2c(H*)
![Page 64: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/64.jpg)
CAIXEIRO-VIAJANTE-APROXIMADO (G, c) 1 seleciona vértice r ∈ G.E para ser a raiz 2 T = PRIM(G, c, r) 3 H = vértices ordenados de acordo com sua ordem de visitação em um percurso de pré-ordem em T 4 retorna ciclo hamiltoniano H
Fator de Aproximaçãoc(T) ≤ c(H*)
c(W) = 2c(T)
c(W) ≤ 2c(H*)
c(H) ≤ c(W)
![Page 65: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/65.jpg)
CAIXEIRO-VIAJANTE-APROXIMADO (G, c) 1 seleciona vértice r ∈ G.E para ser a raiz 2 T = PRIM(G, c, r) 3 H = vértices ordenados de acordo com sua ordem de visitação em um percurso de pré-ordem em T 4 retorna ciclo hamiltoniano H
Fator de Aproximaçãoc(T) ≤ c(H*)
c(W) = 2c(T)
c(W) ≤ 2c(H*)
c(H) ≤ c(W)
c(H) ≤ 2c(H*)
![Page 66: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/66.jpg)
CAIXEIRO-VIAJANTE-APROXIMADO (G, c) 1 seleciona vértice r ∈ G.E para ser a raiz 2 T = PRIM(G, c, r) 3 H = vértices ordenados de acordo com sua ordem de visitação em um percurso de pré-ordem em T 4 retorna ciclo hamiltoniano H
Fator de Aproximaçãoc(T) ≤ c(H*)
c(W) = 2c(T)
c(W) ≤ 2c(H*)
c(H) ≤ c(W)
c(H) ≤ 2c(H*)
ρ(n) = 2
![Page 67: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/67.jpg)
CAIXEIRO-VIAJANTE-APROXIMADO (G, c) 1 seleciona vértice r ∈ G.E para ser a raiz 2 T = PRIM(G, c, r) 3 H = vértices ordenados de acordo com sua ordem de visitação em um percurso de pré-ordem em T 4 retorna ciclo hamiltoniano H
Fator de Aproximaçãoc(T) ≤ c(H*)
c(W) = 2c(T)
c(W) ≤ 2c(H*)
c(H) ≤ c(W)
c(H) ≤ 2c(H*)
ρ(n) = 2
Algoritmo 2-aproximativo de tempo polinomial
![Page 68: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/68.jpg)
O problema da soma de subconjuntos
![Page 69: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/69.jpg)
O problema da soma de subconjuntos
S = {1, 3, 5, 15, 18, 26} !
t = 41
![Page 70: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/70.jpg)
Algoritmo ExatoS = {1, 3, 5, 15, 18, 26} t = 41
![Page 71: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/71.jpg)
Algoritmo ExatoS = {1, 3, 5, 15, 18, 26}
L0 = {0}
t = 41
![Page 72: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/72.jpg)
Algoritmo ExatoS = {1, 3, 5, 15, 18, 26}
L0 = {0}
L1 = L0 ∪ L0 + 1 = {0} ∪ {1} = {0,1}
t = 41
![Page 73: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/73.jpg)
Algoritmo ExatoS = {1, 3, 5, 15, 18, 26}
L0 = {0}
L1 = L0 ∪ L0 + 1 = {0} ∪ {1} = {0,1}
L2 = L1 ∪ L1 + 3 = {0,1} ∪ {3, 4} = {0, 1, 3, 4}
t = 41
![Page 74: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/74.jpg)
Algoritmo ExatoS = {1, 3, 5, 15, 18, 26}
L0 = {0}
L1 = L0 ∪ L0 + 1 = {0} ∪ {1} = {0,1}
L2 = L1 ∪ L1 + 3 = {0,1} ∪ {3, 4} = {0, 1, 3, 4}
Li = Li-1 ∪ Li-1 + xi …
t = 41
![Page 75: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/75.jpg)
Algoritmo ExatoSOMA-SUBCONJUNTOS (S, t) 1 n = |S| 2 L0 = ⟨0⟩
3 para i = 1 até n 4 Li = MERGE-LIST(Li-1, Li-1 + xi) 5 remover de Li todos os elementos maiores que t 6 retorna maior elemento em Ln
![Page 76: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/76.jpg)
Algoritmo ExatoSOMA-SUBCONJUNTOS (S, t) 1 n = |S| 2 L0 = ⟨0⟩
3 para i = 1 até n 4 Li = MERGE-LIST(Li-1, Li-1 + xi) 5 remover de Li todos os elementos maiores que t
6 retorna maior elemento em Ln
![Page 77: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/77.jpg)
Algoritmo ExatoSOMA-SUBCONJUNTOS (S, t) 1 n = |S| 2 L0 = ⟨0⟩
3 para i = 1 até n 4 Li = MERGE-LIST(Li-1, Li-1 + xi) 5 remover de Li todos os elementos maiores que t
6 retorna maior elemento em Ln
S = {1, 3, 6}, t = 5
![Page 78: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/78.jpg)
Algoritmo ExatoSOMA-SUBCONJUNTOS (S, t) 1 n = |S| 2 L0 = ⟨0⟩
3 para i = 1 até n 4 Li = MERGE-LIST(Li-1, Li-1 + xi) 5 remover de Li todos os elementos maiores que t
6 retorna maior elemento em Ln
S = {1, 3, 6}, t = 5n = 3
![Page 79: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/79.jpg)
Algoritmo ExatoSOMA-SUBCONJUNTOS (S, t) 1 n = |S| 2 L0 = ⟨0⟩
3 para i = 1 até n 4 Li = MERGE-LIST(Li-1, Li-1 + xi) 5 remover de Li todos os elementos maiores que t
6 retorna maior elemento em Ln
S = {1, 3, 6}, t = 5n = 3
![Page 80: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/80.jpg)
Algoritmo ExatoSOMA-SUBCONJUNTOS (S, t) 1 n = |S| 2 L0 = ⟨0⟩
3 para i = 1 até n 4 Li = MERGE-LIST(Li-1, Li-1 + xi) 5 remover de Li todos os elementos maiores que t
6 retorna maior elemento em Ln
S = {1, 3, 6}, t = 5n = 3
L0 = {0} estado inicial
![Page 81: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/81.jpg)
Algoritmo ExatoSOMA-SUBCONJUNTOS (S, t) 1 n = |S| 2 L0 = ⟨0⟩
3 para i = 1 até n 4 Li = MERGE-LIST(Li-1, Li-1 + xi) 5 remover de Li todos os elementos maiores que t
6 retorna maior elemento em Ln
S = {1, 3, 6}, t = 5n = 3
L0 = {0} estado inicial
![Page 82: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/82.jpg)
Algoritmo ExatoSOMA-SUBCONJUNTOS (S, t) 1 n = |S| 2 L0 = ⟨0⟩
3 para i = 1 até n 4 Li = MERGE-LIST(Li-1, Li-1 + xi) 5 remover de Li todos os elementos maiores que t
6 retorna maior elemento em Ln
S = {1, 3, 6}, t = 5n = 3
L0 = {0} estado inicial
L1 = {0, 1} xi = 1
![Page 83: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/83.jpg)
Algoritmo ExatoSOMA-SUBCONJUNTOS (S, t) 1 n = |S| 2 L0 = ⟨0⟩
3 para i = 1 até n 4 Li = MERGE-LIST(Li-1, Li-1 + xi) 5 remover de Li todos os elementos maiores que t
6 retorna maior elemento em Ln
S = {1, 3, 6}, t = 5n = 3
L0 = {0} estado inicial
L1 = {0, 1} xi = 1
![Page 84: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/84.jpg)
Algoritmo ExatoSOMA-SUBCONJUNTOS (S, t) 1 n = |S| 2 L0 = ⟨0⟩
3 para i = 1 até n 4 Li = MERGE-LIST(Li-1, Li-1 + xi) 5 remover de Li todos os elementos maiores que t
6 retorna maior elemento em Ln
S = {1, 3, 6}, t = 5n = 3
L0 = {0} estado inicial
L1 = {0, 1} xi = 1
L2 = {0, 1, 3, 4} xi = 3
![Page 85: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/85.jpg)
Algoritmo ExatoSOMA-SUBCONJUNTOS (S, t) 1 n = |S| 2 L0 = ⟨0⟩
3 para i = 1 até n 4 Li = MERGE-LIST(Li-1, Li-1 + xi) 5 remover de Li todos os elementos maiores que t
6 retorna maior elemento em Ln
S = {1, 3, 6}, t = 5n = 3
L0 = {0} estado inicial
L1 = {0, 1} xi = 1
L2 = {0, 1, 3, 4} xi = 3
![Page 86: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/86.jpg)
Algoritmo ExatoSOMA-SUBCONJUNTOS (S, t) 1 n = |S| 2 L0 = ⟨0⟩
3 para i = 1 até n 4 Li = MERGE-LIST(Li-1, Li-1 + xi) 5 remover de Li todos os elementos maiores que t
6 retorna maior elemento em Ln
S = {1, 3, 6}, t = 5n = 3
L0 = {0} estado inicial
L1 = {0, 1} xi = 1
L2 = {0, 1, 3, 4} xi = 3
L3 = {0, 1, 3, 4, 6, 7, 9, 10} xi = 6
![Page 87: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/87.jpg)
Algoritmo ExatoSOMA-SUBCONJUNTOS (S, t) 1 n = |S| 2 L0 = ⟨0⟩
3 para i = 1 até n 4 Li = MERGE-LIST(Li-1, Li-1 + xi) 5 remover de Li todos os elementos maiores que t
6 retorna maior elemento em Ln
S = {1, 3, 6}, t = 5n = 3
L0 = {0} estado inicial
L1 = {0, 1} xi = 1
L2 = {0, 1, 3, 4} xi = 3
L3 = {0, 1, 3, 4, 6, 7, 9, 10} xi = 6
![Page 88: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/88.jpg)
Algoritmo ExatoSOMA-SUBCONJUNTOS (S, t) 1 n = |S| 2 L0 = ⟨0⟩
3 para i = 1 até n 4 Li = MERGE-LIST(Li-1, Li-1 + xi) 5 remover de Li todos os elementos maiores que t
6 retorna maior elemento em Ln
S = {1, 3, 6}, t = 5n = 3
L0 = {0} estado inicial
L1 = {0, 1} xi = 1
L2 = {0, 1, 3, 4} xi = 3
L3 = {0, 1, 3, 4, 6, 7, 9, 10} xi = 6
Tamanho de Li pode chegar a 2i
![Page 89: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/89.jpg)
Algoritmo AproximativoEstratégia: desconsiderar alguns elementos de Li
Li = {1, 5, 28, 29, 45, 50, 51, 55, 58, 63, 64}
![Page 90: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/90.jpg)
Algoritmo AproximativoEstratégia: desconsiderar alguns elementos de Li
Li = {1, 5, 28, 29, 45, 50, 51, 55, 58, 63, 64}
![Page 91: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/91.jpg)
Algoritmo AproximativoEstratégia: desconsiderar alguns elementos de Li
Li = {1, 5, 28, 29, 45, 50, 51, 55, 58, 63, 64}
TRIM(Li, δ) = {1, 5, 28, 45, 50, 55, 58, 63}
![Page 92: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/92.jpg)
Algoritmo AproximativoEstratégia: desconsiderar alguns elementos de Li
Li = {1, 5, 28, 29, 45, 50, 51, 55, 58, 63, 64}
TRIM(Li, δ) = {1, 5, 28, 45, 50, 55, 58, 63}
y ≤ z ≤ y 1 + δ
![Page 93: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/93.jpg)
Algoritmo Aproximativo
Li = {1, 5, 28, 29, 45, 50, 51, 55, 58, 63, 64}
y ≤ z ≤ y 1 + δ
![Page 94: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/94.jpg)
Algoritmo Aproximativo
Li = {1, 5, 28, 29, 45, 50, 51, 55, 58, 63, 64}
y ≤ z ≤ y 1 + δ
z y
Se y ≤ z(1 + δ), remover y
![Page 95: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/95.jpg)
Esquema AproximativoTRIM (L, δ) 1 m = |L| 2 L'= ⟨yi⟩ 3 z = yi
4 para i = 2 até m 5 se yi > z(1 + δ) 6 adicionar yi a L’ 7 z = yi 6 retorna L'
![Page 96: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/96.jpg)
Esquema AproximativoSOMA-SUBCONJUNTOS-APROXIMADO (S, t, ϵ) 1 n = |S| 2 L0 = ⟨0⟩
3 para i = 1 até n 4 Li = MERGE-LIST(Li-1, Li-1 + xi) 5 Li = TRIM(Li, ϵ/2n) 6 remover de Li todos os elementos maiores que t
7 retorna maior elemento em Ln
![Page 97: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/97.jpg)
Esquema AproximativoSOMA-SUBCONJUNTOS-APROXIMADO (S, t, ϵ) 1 n = |S| 2 L0 = ⟨0⟩
3 para i = 1 até n 4 Li = MERGE-LIST(Li-1, Li-1 + xi) 5 Li = TRIM(Li, ϵ/2n) 6 remover de Li todos os elementos maiores que t
7 retorna maior elemento em Ln
Se n = 4 e ϵ = 0.4 então δ = ϵ / 8 = 0,05
![Page 98: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/98.jpg)
Considerações Finais
![Page 99: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/99.jpg)
Considerações Finais
![Page 100: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/100.jpg)
Considerações Finais • Algoritmos aproximativos são aplicáveis para problemas
de otimização da classe NP-difícil;
![Page 101: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/101.jpg)
Considerações Finais • Algoritmos aproximativos são aplicáveis para problemas
de otimização da classe NP-difícil;
• Conhecer o fator de aproximação possui importância prática;
![Page 102: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/102.jpg)
Considerações Finais • Algoritmos aproximativos são aplicáveis para problemas
de otimização da classe NP-difícil;
• Conhecer o fator de aproximação possui importância prática;
• Provar o fator aproximativo pode ser uma tarefa complexa;
![Page 103: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/103.jpg)
Considerações Finais • Algoritmos aproximativos são aplicáveis para problemas
de otimização da classe NP-difícil;
• Conhecer o fator de aproximação possui importância prática;
• Provar o fator aproximativo pode ser uma tarefa complexa;
• Desenvolvimento de heurísticas.
![Page 104: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/104.jpg)
ReferênciasCormen, T. H., Leiserson, C. E., Rivest, R. L., and Stein, C. (2009). Introduction to Algorithms, Third Edition. The MIT Press, 3rd edition. !
Vazirani, V. V. (2001). Approximation algorithms. springer. !
Williamson, D. P. and Shmoys, D. B. (2011). The design of approximation algorithms. Cambridge University Press.
![Page 105: Algoritmos aproximativos](https://reader030.fdocumentos.com/reader030/viewer/2022032716/55b3659dbb61eb99548b477d/html5/thumbnails/105.jpg)
ObrigadoDúvidas?