análise e síntese de algoritmos
DESCRIPTION
Análise e Síntese de Algoritmos. Algoritmos de AproximaçãoCLRS, Cap. 35. Resumo. Algoritmos de aproximação Algoritmos, com complexidade polinomial, que calculam soluções aproximadas para problemas de optimização NP-difíceis - PowerPoint PPT PresentationTRANSCRIPT
Análise e Síntese de Algoritmos
Algoritmos de Aproximação CLRS, Cap. 35
2003/2004 Análise e Síntese de Algoritmos 2
Resumo
• Algoritmos de aproximação– Algoritmos, com complexidade polinomial, que calculam
soluções aproximadas para problemas de optimização NP-difíceis
• i.e. problemas de optimização cuja formulação como problema de decisão é NP-completa
2003/2004 Análise e Síntese de Algoritmos 3
Algoritmos de Aproximação
• Motivação
• Definições
• Exemplos de algoritmos de aproximação– Problemas de optimização cuja formulação de decisão é NP-
completa• Problema da Cobertura de Vértices• Problema do Caixeiro Viajante• Problema da Mochila• Problema da Cobertura de Conjuntos
2003/2004 Análise e Síntese de Algoritmos 4
Motivação
• Problemas NP-Completos– Qualquer algoritmo existente demora no pior caso tempo
exponencial no tamanho da instância• Suporta conjectura P NP
– Problemas de decisão• Formulação original requer resposta sim/não
– Problemas de optimização• Formulação de decisão provada NP-completa• Encontrar solução óptima é computacionalmente difícil
– Calcular (em tempo polinomial) solução aproximada ! – Mas estabelecer garantias quanto ao valor da solução calculada
2003/2004 Análise e Síntese de Algoritmos 5
Motivação
• Algoritmos de aproximação– Algoritmos para problemas de optimização NP-completos
(cujas formulações de decisão são NP-completas)• Algoritmos de tempo polinomial • Com garantias quanto ao máximo afastamento do valor
calculado face à solução óptima
2003/2004 Análise e Síntese de Algoritmos 6
Definições
• Limite da razão p(n) – Algoritmo de aproximação para um problema de
optimização– Para qualquer instância de tamanho n
• Custo da solução calculada, C • Custo da solução óptima, C*
• max(C/C*, C*/C) p(n) – maximização: 0 C C*– minimização: 0 C* C– p(n) 1
2003/2004 Análise e Síntese de Algoritmos 7
O Problema da Cobertura de Vértices
• Definição:– G=(V,E), grafo não dirigido
• Cobertura de vértices (VC): conjunto de vértices V’ tal que qualquer arco em G é incidente em pelo menos um dos vértices de V’
• O problema VCopt consiste em calcular uma cobertura de vértices com o número mínimo de vértices
2003/2004 Análise e Síntese de Algoritmos 8
O Problema da Cobertura de Vértices
VC-Approx(G)C = E’ = E[G]while E’
Seja (u, v) arco de E’C = C { u, v }Remover de E’ qualquer arco incidente em u ou v
return C
• Algoritmo de aproximação:
• Exemplo
2003/2004 Análise e Síntese de Algoritmos 9
O Problema da Cobertura de Vértices
• Teorema:– VC-Approx é um algoritmo de aproximação com limite da
razão 2 para o problema VCopt • max(C/C*, C*/C) = C/C* 2
• Prova:– A: conjunto de arcos seleccionados pelo algoritmo– Conjunto C é cobertura de vértices
• Ciclo iterado até todos os arcos de E estarem cobertos– Por inspecção, nenhum par de arcos em A tem vértices
comuns– Também por inspecção, |C| = 2|A|
2003/2004 Análise e Síntese de Algoritmos 10
O Problema da Cobertura de Vértices
– Cobertura dos arcos em A requer pelo menos um vértice incidente em cada um dos arcos de A
• Qualquer cobertura de vértices tem que cobrir arcos de A– Válido também para C*– |A| |C*|
– Conclusão:• |C| = 2|A| 2|C*|
2003/2004 Análise e Síntese de Algoritmos 11
O Problema da Mochila
• Definição:– Dados n objectos com pesos w1, w2, …, wn e valores v1, v2,
…, vn, e uma mochila que pode transportar peso máximo W, o problema KNAPSACKopt consiste em identificar os objectos a transportar, que não excedem o peso máximo W, e que maximizam o valor dos objectos transportados
2003/2004 Análise e Síntese de Algoritmos 12
O Problema da Mochila
• Algoritmo Greedy:
• Problema
• Exemplo
KNAP-Greedy(w,v,W)Ordenar w e v tal que v[i]/w[i] v[j]/w[j] para 1 i j
npeso = 0; valor = 0for i = 1 to n
if peso + w[i] Wvalor += v[i]peso += w[i]
return valor
2003/2004 Análise e Síntese de Algoritmos 13
O Problema da Mochila
• Algoritmo de Aproximação:
• Exemplo
KNAP-Approx(w,v,W)maior = max {v[i] : 1 i n} // Admite-se w[i] W, 1 i
nreturn max {maior, KNAP-Greedy(w,v,W)}
2003/2004 Análise e Síntese de Algoritmos 14
O Problema da Mochila
• Teorema:– O algoritmo KNAP-Approx é um algoritmo de aproximação com
limite da razão 2 para o problema KNAPSACKopt
• Prova:– C*: solução óptima; C: solução retornada pelo algoritmo– Escolher menor l tal que,
– KNAP-Greedy(w,v,W) verifica,
– E, maior vl (por definição de maior)
1l
1iiv W)v,Greedy(w,-KNAP
l
1ii Ww
2003/2004 Análise e Síntese de Algoritmos 15
O Problema da Mochila
– Notando que max(x,y) (x+y)/2, obtemos:
– Definição de W ’ e C’:
– Notar que W ’ W e v1/w1 v2/w2 … vl/wl • Pelo que C’ C*
– C’ é a solução óptima para W’
2/*C
2/'C2/v2/vv
2/W))v,Greedy(w,-KNAP maiorW))v,Greedy(w,-KNAPmax(maior,C
l
1ii
1l
1iil
l
1iiw'W
l
1iiv'C
2003/2004 Análise e Síntese de Algoritmos 16
O Problema do Caixeiro Viajante
• Definição:– G=(V,E), grafo completo não dirigido, com função de pesos
w– Circuito: caminho que visita todos os vértices de G apenas
uma única vez e que termina no vértice de onde começa• Peso de um circuito: peso do caminho respectivo
– Problema do Caixeiro Viajante (TSP):• Encontrar o circuito de menor peso em G
– Desigualdade triangular:• w(t,v) w(t,u) + w(u,v) para quaisquer arcos (t,v), (t,u) e
(u,v) de G
2003/2004 Análise e Síntese de Algoritmos 17
O Problema do Caixeiro Viajante
• Algoritmo de Aproximação:
• Exemplo
TSP-Approx(G,w)Seleccionar qualquer r V para vértice raizConstruir MST T a partir de rL = lista de vértices resultantes de visita de T em pré-ordem Definir circuito H que visita vértices de G pela ordem Lreturn H
Visita de árvore que lista a raiz antesdos vértices de cada sub-árvore
2003/2004 Análise e Síntese de Algoritmos 18
O Problema do Caixeiro Viajante
• Teorema:– O algoritmo TSP-Approx é um algoritmo de aproximação com
limite da razão 2 para instâncias do problema TSP que verificam a desigualdade triangular
• Prova:– H*: circuito com custo mínimo
• Provar: C(H) 2C(H*)– T: MST de G– W: travessia completa de T
• cada vértice u identificado se visitado pela primeira vez ou se travessia retorna a u
• W visita cada arco 2 vezes
2003/2004 Análise e Síntese de Algoritmos 19
O Problema do Caixeiro Viajante
– C(T) C(H*)• T é MST de G e qualquer árvore abrangente pode ser
obtida a partir de circuito por remoção de 1 arco– C(W) = 2C(T)
• W atravessa cada arco 2 vezes– Pelo que,
• C(W) 2C(H*)– Ordem dos vértices visitados em W:
• …,t,v,u,…,u,v,t,…– Desigualdade triangular assegura que podemos apagar um
vértice que o custo total não aumenta• E.g.: com …,t,v,u,…,u,t,… custo total não aumenta
2003/2004 Análise e Síntese de Algoritmos 20
O Problema do Caixeiro Viajante
– Repetir processo de remoção de vértices até cada vértice ser visitado apenas 1 vez
• Obtém-se ordem dos vértices após visita em pré-ordem– Circuito resultante, H, visita todos os vértices de G e
verifica:• C(H) C(W) 2C(H*)
• Exemplo
2003/2004 Análise e Síntese de Algoritmos 21
O Problema da Cobertura de Conjuntos
• Definição:– Uma instância (X,F) do problema de cobertura de conjuntos
consiste de:• Conjunto finito X• Família de subconjuntos de X, F• Tal que, X = SFS
– O problema da cobertura de conjuntos consiste em identificar um subconjunto C de F de menor tamanho e tal que X = SCS
2003/2004 Análise e Síntese de Algoritmos 22
O Problema da Cobertura de Conjuntos
• Algoritmo de Aproximação:
• Exemplo
SC-Approx(X,F)U = XC = while U
Seleccionar S F que maximiza |S U|U = U - SC = C { S }
return C
2003/2004 Análise e Síntese de Algoritmos 23
O Problema da Cobertura de Conjuntos
• Teorema:– O algoritmo SC-Approx tem limite da razão H(max{|S|: S F}),
com H(d) = 1 + 1/2 + … + 1/d, H(0) = 0
• Prova: (ver folhas)
• Colorário:– SC-Approx tem limite da razão de ln |X| + 1
• Prova: (ver folhas)
2003/2004 Análise e Síntese de Algoritmos 24
Revisão
• Algoritmos de Aproximação– Exemplos de algoritmos de aproximação para problemas NP-
difíceis