Algoritmos aproximativos

Preview:

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?

Recommended