análise e síntese de algoritmos

24
Análise e Síntese de Algoritmos Algoritmos de Aproximação CLRS, Cap. 35

Upload: howard-stevenson

Post on 15-Mar-2016

55 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos

Algoritmos de Aproximação CLRS, Cap. 35

Page 2: Análise e Síntese de Algoritmos

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

Page 3: Análise e Síntese de Algoritmos

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

Page 4: Análise e Síntese de Algoritmos

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

Page 5: Análise e Síntese de Algoritmos

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

Page 6: Análise e Síntese de Algoritmos

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

Page 7: Análise e Síntese de Algoritmos

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

Page 8: Análise e Síntese de Algoritmos

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

Page 9: Análise e Síntese de Algoritmos

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|

Page 10: Análise e Síntese de Algoritmos

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*|

Page 11: Análise e Síntese de Algoritmos

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

Page 12: Análise e Síntese de Algoritmos

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

Page 13: Análise e Síntese de Algoritmos

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)}

Page 14: Análise e Síntese de Algoritmos

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

Page 15: Análise e Síntese de Algoritmos

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

Page 16: Análise e Síntese de Algoritmos

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

Page 17: Análise e Síntese de Algoritmos

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

Page 18: Análise e Síntese de Algoritmos

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

Page 19: Análise e Síntese de Algoritmos

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

Page 20: Análise e Síntese de Algoritmos

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

Page 21: Análise e Síntese de Algoritmos

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

Page 22: Análise e Síntese de Algoritmos

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

Page 23: Análise e Síntese de Algoritmos

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)

Page 24: Análise e Síntese de Algoritmos

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