Upload
fernando-simeone
View
59
Download
0
Embed Size (px)
Citation preview
Algoritmos AproximativosFernando Simeone
Mestrado em Ciência da Computação Universidade Federal de Lavras
!Projeto e Análise de Algoritmos (2014/2)
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
Introdução
Introdução
Introdução• Problemas com alto custo computacional;
Introdução• Problemas com alto custo computacional;
• Problemas da classe NP-difícil;
Introdução• Problemas com alto custo computacional;
• Problemas da classe NP-difícil;
• Problemas de grande relevância prática.
Introdução
Introdução• Requisitos dos problemas da classe NP-difícil:
Introdução• Requisitos dos problemas da classe NP-difícil:
1. Encontrar a solução ótima
Introdução• Requisitos dos problemas da classe NP-difícil:
1. Encontrar a solução ótima
2. Em tempo polinomial
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
Conceitos
Problemas de Otimização
Problemas de MAXIMIZAÇÃO
Problemas de MINIMIZAÇÃOX
Fator de aproximação
ρ(n)C C*Algoritmo
ρ(n)-aproximativo
Problemas de Minimização
Problemas de Minimização
0 < C* ≤ C
Problemas de Minimização
0 < C* ≤ C
ρ(n) ≥ C C*
Problemas de Maximização
Problemas de Maximização
0 < C ≤ C*
Problemas de Maximização
0 < C ≤ C*
ρ(n) ≥ C* C
Problemas de Otimização
ρ(n) ≥ max C* , C C C*
Esquema Aproximativo
𝟄 > 0algoritmo (1 + 𝟄)-aproximativo
O problema de cobertura de vértices
O problema de cobertura de vértices
b dc
e f
a
g h
O problema de cobertura de vértices
b dc
e f
a
g h
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)
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)}
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)}
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)}
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' = {}
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}
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
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*|
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|
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*|
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
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
O problema do caixeiro viajante
O problema do caixeiro viajanteb
d
c
e f
a g
12
O problema do caixeiro viajanteb
d
c
e f
a g
Inequalidade Triangular
bc
a
dist(a, b) + dist(b, c) ≥ dist(a, c)
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
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
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
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}
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
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
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
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*)
Algoritmo Aproximativob
d
c
e f
a g
W
W = {a, b, d, e, f, g, f, e, d, c, d, b, a}
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*)
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)
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*)
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}
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}
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}
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}
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}
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}
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}
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}
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*)
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)
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*)
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
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
O problema da soma de subconjuntos
O problema da soma de subconjuntos
S = {1, 3, 5, 15, 18, 26} !
t = 41
Algoritmo ExatoS = {1, 3, 5, 15, 18, 26} t = 41
Algoritmo ExatoS = {1, 3, 5, 15, 18, 26}
L0 = {0}
t = 41
Algoritmo ExatoS = {1, 3, 5, 15, 18, 26}
L0 = {0}
L1 = L0 ∪ L0 + 1 = {0} ∪ {1} = {0,1}
t = 41
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Algoritmo AproximativoEstratégia: desconsiderar alguns elementos de Li
Li = {1, 5, 28, 29, 45, 50, 51, 55, 58, 63, 64}
Algoritmo AproximativoEstratégia: desconsiderar alguns elementos de Li
Li = {1, 5, 28, 29, 45, 50, 51, 55, 58, 63, 64}
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}
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 + δ
Algoritmo Aproximativo
Li = {1, 5, 28, 29, 45, 50, 51, 55, 58, 63, 64}
y ≤ z ≤ y 1 + δ
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
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'
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
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
Considerações Finais
Considerações Finais
Considerações Finais • Algoritmos aproximativos são aplicáveis para problemas
de otimização da classe NP-difícil;
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;
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;
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.
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.
ObrigadoDúvidas?