Algoritmos aproximativos

447 visualizações

Publicada em

Apresentação sobre Algoritmos Aproximativos, apresentada no 2º semestre de 2014, como um dos requisitos da disciplina de Projeto e Análise de Algoritmos, no Mestrado em Ciência da Computação, pela Universidade Federal de Lavras (UFLA). Disciplina ministrada pelo professor Dr. Sanderson L. Gonzaga de Oliveira.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
447
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
12
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Algoritmos aproximativos

  1. 1. Algoritmos Aproximativos Fernando Simeone Mestrado em Ciência da Computação Universidade Federal de Lavras ! Projeto e Análise de Algoritmos (2014/2)
  2. 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
  3. 3. Introdução
  4. 4. Introdução
  5. 5. Introdução • Problemas com alto custo computacional;
  6. 6. Introdução • Problemas com alto custo computacional; • Problemas da classe NP-difícil;
  7. 7. Introdução • Problemas com alto custo computacional; • Problemas da classe NP-difícil; • Problemas de grande relevância prática.
  8. 8. Introdução
  9. 9. Introdução • Requisitos dos problemas da classe NP-difícil:
  10. 10. Introdução • Requisitos dos problemas da classe NP-difícil: 1. Encontrar a solução ótima
  11. 11. Introdução • Requisitos dos problemas da classe NP-difícil: 1. Encontrar a solução ótima 2. Em tempo polinomial
  12. 12. 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
  13. 13. Conceitos
  14. 14. Problemas de Otimização Problemas de MAXIMIZAÇÃO Problemas de MINIMIZAÇÃOX
  15. 15. Fator de aproximação ρ(n)C C* Algoritmo ρ(n)-aproximativo
  16. 16. Problemas de Minimização
  17. 17. Problemas de Minimização 0 < C* ≤ C
  18. 18. Problemas de Minimização 0 < C* ≤ C ρ(n) ≥ C C*
  19. 19. Problemas de Maximização
  20. 20. Problemas de Maximização 0 < C ≤ C*
  21. 21. Problemas de Maximização 0 < C ≤ C* ρ(n) ≥ C* C
  22. 22. Problemas de Otimização ρ(n) ≥ max C* , C C C*
  23. 23. Esquema Aproximativo 𝟄 > 0 algoritmo (1 + 𝟄)-aproximativo
  24. 24. O problema de cobertura de vértices
  25. 25. O problema de cobertura de vértices b dc e f a g h
  26. 26. O problema de cobertura de vértices b dc e f a g h
  27. 27. Algoritmo Aproximativo 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 O(V + E)
  28. 28. 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)}
  29. 29. 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)}
  30. 30. 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)}
  31. 31. 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' = {}
  32. 32. 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}
  33. 33. 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ção b dc e f a g h A = { (a, b), (c, d), (e, f) } A
  34. 34. 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ção b dc e f a g h A = { (a, b), (c, d), (e, f) } A |A| ≤ |C*|
  35. 35. 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ção b dc e f a g h A = { (a, b), (c, d), (e, f) } A |A| ≤ |C*| |C| = 2|A|
  36. 36. 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ção b dc e f a g h A = { (a, b), (c, d), (e, f) } A |A| ≤ |C*| |C| = 2|A| |C| ≤ 2|C*|
  37. 37. 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ção b dc e f a g h A = { (a, b), (c, d), (e, f) } A |A| ≤ |C*| |C| = 2|A| |C| ≤ 2|C*| ρ(n) = 2
  38. 38. 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ção b 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
  39. 39. O problema do caixeiro viajante
  40. 40. O problema do caixeiro viajante b d c e f a g 12
  41. 41. O problema do caixeiro viajante b d c e f a g
  42. 42. Inequalidade Triangular b c a dist(a, b) + dist(b, c) ≥ dist(a, c)
  43. 43. 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
  44. 44. 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
  45. 45. 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
  46. 46. 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 1 5 3 4 6 7 2 H = {a, b, d, e, f, g, c, a}
  47. 47. 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
  48. 48. 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 g 1 5 3 4 6 7 2
  49. 49. 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
  50. 50. 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 c(T) ≤ c(H*)
  51. 51. Algoritmo Aproximativo b d c e f a g W W = {a, b, d, e, f, g, f, e, d, c, d, b, a}
  52. 52. 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 c(T) ≤ c(H*)
  53. 53. 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 c(T) ≤ c(H*) c(W) = 2c(T)
  54. 54. 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 c(T) ≤ c(H*) c(W) = 2c(T) c(W) ≤ 2c(H*)
  55. 55. Algoritmo Aproximativo b 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}
  56. 56. Algoritmo Aproximativo b 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}
  57. 57. Algoritmo Aproximativo b 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}
  58. 58. Algoritmo Aproximativo b 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}
  59. 59. Algoritmo Aproximativo b 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}
  60. 60. Algoritmo Aproximativo b 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}
  61. 61. Algoritmo Aproximativo b 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}
  62. 62. Algoritmo Aproximativo b 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}
  63. 63. 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 c(T) ≤ c(H*) c(W) = 2c(T) c(W) ≤ 2c(H*)
  64. 64. 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 c(T) ≤ c(H*) c(W) = 2c(T) c(W) ≤ 2c(H*) c(H) ≤ c(W)
  65. 65. 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 c(T) ≤ c(H*) c(W) = 2c(T) c(W) ≤ 2c(H*) c(H) ≤ c(W) c(H) ≤ 2c(H*)
  66. 66. 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 c(T) ≤ c(H*) c(W) = 2c(T) c(W) ≤ 2c(H*) c(H) ≤ c(W) c(H) ≤ 2c(H*) ρ(n) = 2
  67. 67. 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 c(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
  68. 68. O problema da soma de subconjuntos
  69. 69. O problema da soma de subconjuntos S = {1, 3, 5, 15, 18, 26} ! t = 41
  70. 70. Algoritmo Exato S = {1, 3, 5, 15, 18, 26} t = 41
  71. 71. Algoritmo Exato S = {1, 3, 5, 15, 18, 26} L0 = {0} t = 41
  72. 72. Algoritmo Exato S = {1, 3, 5, 15, 18, 26} L0 = {0} L1 = L0 ∪ L0 + 1 = {0} ∪ {1} = {0,1} t = 41
  73. 73. Algoritmo Exato S = {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
  74. 74. Algoritmo Exato S = {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
  75. 75. Algoritmo Exato SOMA-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
  76. 76. Algoritmo Exato SOMA-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
  77. 77. Algoritmo Exato SOMA-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
  78. 78. Algoritmo Exato SOMA-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 n = 3
  79. 79. Algoritmo Exato SOMA-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 n = 3
  80. 80. Algoritmo Exato SOMA-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 n = 3 L0 = {0} estado inicial
  81. 81. Algoritmo Exato SOMA-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 n = 3 L0 = {0} estado inicial
  82. 82. Algoritmo Exato SOMA-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 n = 3 L0 = {0} estado inicial L1 = {0, 1} xi = 1
  83. 83. Algoritmo Exato SOMA-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 n = 3 L0 = {0} estado inicial L1 = {0, 1} xi = 1
  84. 84. Algoritmo Exato SOMA-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 n = 3 L0 = {0} estado inicial L1 = {0, 1} xi = 1 L2 = {0, 1, 3, 4} xi = 3
  85. 85. Algoritmo Exato SOMA-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 n = 3 L0 = {0} estado inicial L1 = {0, 1} xi = 1 L2 = {0, 1, 3, 4} xi = 3
  86. 86. Algoritmo Exato SOMA-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 n = 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
  87. 87. Algoritmo Exato SOMA-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 n = 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
  88. 88. Algoritmo Exato SOMA-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 n = 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
  89. 89. Algoritmo Aproximativo Estratégia: desconsiderar alguns elementos de Li Li = {1, 5, 28, 29, 45, 50, 51, 55, 58, 63, 64}
  90. 90. Algoritmo Aproximativo Estratégia: desconsiderar alguns elementos de Li Li = {1, 5, 28, 29, 45, 50, 51, 55, 58, 63, 64}
  91. 91. Algoritmo Aproximativo Estraté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}
  92. 92. Algoritmo Aproximativo Estraté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 + δ
  93. 93. Algoritmo Aproximativo Li = {1, 5, 28, 29, 45, 50, 51, 55, 58, 63, 64} y ≤ z ≤ y 1 + δ
  94. 94. 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
  95. 95. Esquema Aproximativo TRIM (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'
  96. 96. Esquema Aproximativo SOMA-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
  97. 97. Esquema Aproximativo SOMA-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
  98. 98. Considerações Finais
  99. 99. Considerações Finais
  100. 100. Considerações Finais • Algoritmos aproximativos são aplicáveis para problemas de otimização da classe NP-difícil;
  101. 101. 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;
  102. 102. 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;
  103. 103. 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.
  104. 104. Referências Cormen, 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.
  105. 105. Obrigado Dúvidas?

×