Title: Algoritmos de aproxima
1Algoritmos de aproximação
- Aula adaptada do seminário apresentado pelo
mestrando - Luiz Josué da Silva Filho
2Roteiro
- Motivação
- Definições
- Razão de aproximação
- Esquema de aproximação
- Problemas
- Cobertura de vértices
- Caixeiro viajante
- Cobertura de conjuntos
- Soma de subconjuntos
3Motivação
4Motivação
- Muitos problemas de significância prática são
NP-completos - Três abordagens
- Entradas pequenas
- Isolamento de casos especiais solúveis em tempo
polinomial - Pode ser possível achar soluções próximas da
solução ótima
5Problema de otimização
- Em um problema de otimização onde cada solução
viável tem associada um custo positivo, deseja-se
achar uma solução próxima da ótima. - Dependendo da natureza do problema, a solução
ótima pode ser definida como um custo máximo ou
mínimo possível.
6Definições
7Razão de aproximação
- Suponha que em um problema de otimização
- cada solução potencial tem um custo
- e deseja-se encontrar uma solução próxima da
ótima - determina a medida de aproximação do
algoritmo - Razão de aproximação
- em função da entrada de tamanho
n.
8Razão de aproximação
- Para muitos problemas foram desenvolvidos
algoritmos polinomiais - Com razão pequena constante
- Com razões que crescem em função do tamanho da
entrada - Há algoritmos que produzem razões muito pequenas
mas ao custo de um tempo de computação muito alto.
9Esquema de aproximação
- É um algoritmo de aproximação que
- toma como entrada uma instancia do problema
- e um valor e gt 0
- tal que para um e fixo
- o esquema é um algoritmo (1 e)-aproximação.
- Um esquema de aproximação de tempo polinomial
(PTAS) é um esquema que - para qualquer egt0 fixo o esquema executa em tempo
polinomial em função do tamanho n da entrada.
10Esquema de aproximação
- O tempo de execução de um esquema de aproximação
em tempo polinomial pode crescer tão rápido
quanto e decresce. - Ex
- O ideal é que o tempo seja polinomial tanto em
1/e quanto em n. - Em um esquema de aproximação de tempo
completamente polinomial (FPTAS) tanto o esquema
quanto seu tempo de execução são polinomiais em
1/e e n. - Ex
11Problemas
12O problema de cobertura de vértices
- É um problema NP-completo
- A cobertura de vértices de um grafo não
direcionado é um
subconjunto V de V tal que se é uma
aresta de G, então u está em V ou v está em V
(ou os dois). - O problema consiste em achar uma cobertura de
tamanho mínimo dado um grafo não-direcionado. - Tal cobertura é uma cobertura de vértices ótima
13Exemplo
14O algoritmo
- INPUT G // grafo não direcionado
- C ?
- E ? EG
- while E is not empty do
- Let (u,v) be an arbitrary edge of E
- C ? C U u, v
- Remove from E every edge incident on either
u or v - return C
15Execução
16Aproximação do algoritmo
- O algoritmo é 2-aproximação em tempo polinomial
- Prova
- Faça A denotar as arestas tomadas na linha 5.
- C deve incluir pelo menos um terminal de cada
aresta em A. - Todas as arestas incidentes nos terminais da
aresta escolhida são removidas de E na linha 7. - Como não há duas arestas cobertas pelo mesmo
vértice de C, então temos um limite inferior
17Aproximação do algoritmo
- Cada execução da linha 5 toma uma aresta os quais
nenhum de seus terminais (vértices) já está em C,
o que nos leva a um limite superior
18O problema do caixeiro viajante
- Dado um grafo não direcionado
onde existe um custo associado a cada aresta.
Deve-se achar um ciclo hamiltoniano de G com um
custo mínimo. Assim - onde A é um subconjunto das arestas de G.
19Desigualdade triangular
- É comum em muitas aplicações verificar a
propriedade da desigualdade triangular - É provado que o problema do caixeiro viajante é
NP-completo mesmo verificando-se a propriedade da
desigualdade triangular para a função de custo.
20O problema do caixeiro viajante com desigualdade
triangular
- Computa-se uma MST o qual o peso é um limite
inferior em função do tamanho de uma solução
ótima do TSP. - O custo do ciclo será no máximo duas vezes o peso
da MST - Approx-TSP-Tour(G, c)
- select root vertex r in VG
- T MST-Prim(G, c, r) // computes a MST
- L list of vertices in preorder traversal of T
- return hamiltonian cycle with vertices ordered as
in L
21O problema do caixeiro viajante com desigualdade
triangular
22O problema do caixeiro viajante com desigualdade
triangular
- Approx-TSP-Tour é um algoritmo 2-aproximação em
tempo polinomial. - Prova
- Faça H ser o ciclo ótimo para o dado conjunto de
vértices. - Como a MST T é obtida pela deleção de arestas, o
peso de T é um limite inferior com relação ao
custo de H. Temos - Um caminho completo W de T
- a,b,c,b,h,b,a,d,e,f,e,g,e,d,a
23O problema do caixeiro viajante com desigualdade
triangular
- W percorre as arestas de T duas vezes, logo
- Das equações anteriores temos
- W não é um ciclo hamiltoniano, mas pela
desigualdade triangular - H a,b,c,h,d,e,f,g
- H é a pré-ordem de T e também é um ciclo
hamiltoniano. Como H é obtido deletando-se
vértices de W, temos - Assim
24O problema de cobertura de conjuntos
- Uma instância (X,F) do problema de cobertura de
conjuntos consiste em - um conjunto finito X
- uma família F de subconjuntos
- tal que todo elemento em X pertence a pelo menos
um subconjunto em F - É dito que um subconjunto cobre seus
elementos.
25O problema de cobertura de conjuntos
- O problema é achar um subconjunto de tamanho
mínimo, tal que seus membros cubram todos os
eltos de X.
26Um algoritmo de aproximação guloso
- GREEDY-SET-COVER(X,F)
- U X
- C ?
- while U ? ? do
- select S ? F that maximizes S n U
- U U - S
- C C U S
- return C
27Um algoritmo de aproximação guloso
- GREEDY-SET-COVER é um algoritmo ?(n)-aproximação
onde - onde H(d) corresponde ao d-ésimo número
harmônico
28Um algoritmo de aproximação guloso
- Prova
- Atribui-se um custo de 1 a cada conjunto
selecionado pelo algoritmo - Distribui-se este custo para os elementos
cobertos pela primeira vez - Utiliza-se estes custos para derivar o
relacionamento desejado entre - o tamanho de uma cobertura de conjuntos ótima C
- e o tamanho do conjunto de cobertura C retornado
pelo algoritmo
29Um algoritmo de aproximação guloso
- Faça-se Si o i-ésimo subconjunto selecionado pelo
algoritmo - O custo de 1 é atribuído ao adicionar-se Si a C.
- Distribui-se este custo aos elementos cobertos
pela primeira vez - Tome Cx o custo alocado ao elemento x para cada
- O custo só é atribuído uma vez a x.
- Se x é coberto a primeira vez por Si, então
30Um algoritmo de aproximação guloso
- A cada passo do algoritmo uma unidade de custo é
atribuída, então - O custo atribuído a cobertura ótima é
- E como cada x está em pelo menos um conjunto
31Um algoritmo de aproximação guloso
- Então
- Como para qualquer conjunto S pertencente a
família F temos - Assim (desigualdade (1))
32Resta-os mostrar a desigualdade (1)
Livro do Cormen (seção
37.3) Vamos demonstrar no quadro.....
33O problema da soma de subconjuntos
- Uma instância do problema da soma de subconjuntos
é a seguinte - Dado um par (S,t), onde S é um conjunto
x1,x2,...,xn de inteiros positivos e t é um
inteiro positivo. - Este problema de decisão questiona se existe um
subconjunto de S que tendo seus valores
adicionados somam exatamente o valor de t. - Este problema é NP-Completo.
34O problema da soma de subconjuntos
- No problema de otimização associado
- Deseja-se encontrar um subconjunto x1,x2,...,xn
cujo a soma de seus elementos aproxima-se o
máximo mas não supera t.
35O algoritmo
- EXACT-SUBSET-SUM(S, t)
- n ? S
- L0 ? 0
- for i ? 1 to n do
- Li ? MERGE-LISTS(Li-1, Li-1 xi)
- remove from Li every element that is greater
than t - return the largest element in Ln
- É um algoritmo exponencial, mas em alguns casos
especiais é polinomial
36Outro algoritmo
- Pode-se derivar um esquema de aproximação em
tempo polinomial completo. - Realiza-se um trimming de cada lista após sua
criação.
37Trimming
- Idéia
- Se dois valores em uma lista são próximos o
suficiente, - para o propósito se encontrar uma solução
aproximada, - não há necessidade de manter-se os dois
explicitamente
38Trimming
- Utiliza-se um parâmetro d tal que 0 lt d lt 1.
- Então remove-se da lista L tantos elementos
quanto for possível, - de forma que para cada y removido em L exista um
z na lista resultante que se aproxima de y, tal
que
39Trimming
- Exemplo
- Dado L 10,11,12,15,20,21,22,23,24,29 e d
0,1 - Após realizarmos Trim em em L teremos
- L 10,12,15,20,23,29
- onde
- 11 está representado por 10
- 21 e 22 estão representados por 20
- 24 está representado por 23
- Complexidade ?(n)
40Trimming
- TRIM(L, d)
- m ? L
- L' ? y1
- last ? y1
- for i ? 2 to m do
- if yi gt last (1 d) // yi last
because L is sorted - then append yi onto the end of L'
- last ? yi
- return L'
41SUBSET-SUM aproximada
- APPROX-SUBSET-SUM(S, t,)
- n ? S
- L0 ? 0
- for i ? 1 to n do
- Li ? MERGE-LISTS(Li-1, Li-1 xi)
- Li ? TRIM(Li, e /2n)
- remove from Li every element that is
greater than t - let z be the largest value in Ln
- return z
- Com 0ltelt1
- z é o valor com 1 e o valor da solução ótima
42Exemplo
- S104,102,201,101, t308, e0,40 e d e/80,05
- linha 2 L0 0,
- linha 4 L1 0, 104,
- linha 5 L1 0, 104,
- linha 6 L1 0, 104,
- linha 4 L2 0, 102, 104, 206,
- linha 5 L2 0, 102, 206,
- linha 6 L2 0, 102, 206,
- linha 4 L3 0, 102, 201, 206, 303, 407,
- linha 5 L3 0, 102, 201, 303, 407,
- linha 6 L3 0, 102, 201, 303,
- linha 4 L4 0, 101, 102, 201, 203, 302, 303,
404, - linha 5 L4 0, 101, 201, 302, 404,
- linha 6 L4 0, 101, 201, 302
- z 302 que está dentro dos 40 de aproximação
da solução ótima (307)