caixeiro viajante

51
Caixeiro Viajante Caixeiro Viajante Problema: Dado um grafo G=(V,E), encontrar o Circuito Hamiltoniano de tamanho mínimo. Teorema: A menos que P=NP, não existe algoritmo -aproximativo polinomial para o TSP para qualquer >=1. Prova: Suponha que exista um algoritmo - aproximativo polinomial A para algum >1. Vamos mostrar então que é possível encontrar um ciclo Hamiltoniano em tempo polinomial

Upload: aviva

Post on 04-Jan-2016

76 views

Category:

Documents


2 download

DESCRIPTION

Caixeiro Viajante. Problema: Dado um grafo G=(V,E) , encontrar o Circuito Hamiltoniano de tamanho mínimo. Teorema: A menos que P=NP, não existe algoritmo  -aproximativo polinomial para o TSP para qualquer  >=1. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Caixeiro Viajante

Caixeiro ViajanteCaixeiro Viajante

Problema: Dado um grafo G=(V,E), encontrar o Circuito Hamiltoniano de tamanho mínimo.

Teorema: A menos que P=NP, não existe algoritmo -aproximativo polinomial para o TSP para qualquer >=1.

Prova: Suponha que exista um algoritmo -aproximativo polinomial A para algum >1. Vamos mostrar então que é possível encontrar um ciclo Hamiltoniano em tempo polinomial

Page 2: Caixeiro Viajante

1

K

K

K K

11 1

1

1 K = 1+|V|

Instância do Ciclo Hamiltoniano

Instância do Caixeiro Viajante

Caixeiro ViajanteCaixeiro Viajante

Page 3: Caixeiro Viajante

Objetivo: Provar que o algoritmo -aproximativo polinomial para o TSP (A) irá retornar um tour de custo |V | se e somente se existe um ciclo Hamiltoniano em G.

Se o algoritmo retorna um ciclo de custo |V| oCiclo Hamiltoniano existe

Se existe um ciclo Hamiltoniano em G então A retorna um tour (T ) de comprimento menor ou igual a |V|.

Como o TSP não utiliza nenhuma aresta de valor maior que |V| então ele retorna um tour de custo |V|

Caixeiro ViajanteCaixeiro Viajante

Page 4: Caixeiro Viajante

Circuito Euleriano: Um circuito Euleriano é um passeio fechado que visita todas as arestas do grafo uma única vez

Teorema Um grafo G admite um circuito Euleriano se e somente se todo vértice de G tem grau par

Caixeiro ViajanteCaixeiro Viajante

Page 5: Caixeiro Viajante

Problema: TSP sobre grafo G=(V,E) que satisfaz a desigualdade triangular:

d(i,j) d(i,k) + d(k,j)

Algoritmo Tree:

– Obter a árvore geradora de peso mínimo T;

– Duplicar as arestas de T;

– Obter um circuito euleriano, usando busca em profundidade;

– Escolher um nó inicial;

– Encontrar circuito hamiltoniano sobre o circuito euleriano, usando “atalhos” para não repetir nós.

Caixeiro ViajanteCaixeiro Viajante

Page 6: Caixeiro Viajante

5

4 3

2

1Árvore geradora mínimaÁrvore geradora mínima com arestas duplicadas

Caixeiro ViajanteCaixeiro Viajante

Page 7: Caixeiro Viajante

5

4 3

2

1Circuito Euleriano

Caixeiro ViajanteCaixeiro Viajante

Page 8: Caixeiro Viajante

Circuito Hamiltoniano

5

4 3

2

1

Caixeiro ViajanteCaixeiro Viajante

Page 9: Caixeiro Viajante

Circuito Hamiltoniano

5

4 3

2

1

Caixeiro ViajanteCaixeiro Viajante

Page 10: Caixeiro Viajante

Circuito Hamiltoniano

5

4 3

2

1

Caixeiro ViajanteCaixeiro Viajante

Page 11: Caixeiro Viajante

Teorema: O algoritmo Tree é 2-aproximado.

Prova: Seja OPT(I) o circuito hamiltoniano de custo mínimo. Sabemos que custo(T) OPT(I) e A(I) 2

custo (T)

A(I) 2 .OPT(I)

Caixeiro ViajanteCaixeiro Viajante

Page 12: Caixeiro Viajante

Algoritmo de Christofides:

– Obter a árvore geradora de peso mínimo T;

– Encontrar o conjunto C de nós de T que têm grau ímpar;

– Encontrar o matching perfeito de custo mínimo M sobre o o subgrafo de G induzido por C

– Seja G’ = T U M;

– Encontrar um circuito euleriano em G’ e um tour neste circuito eliminando repetições;

Caixeiro ViajanteCaixeiro Viajante

Page 13: Caixeiro Viajante

Caixeiro ViajanteCaixeiro Viajante

Page 14: Caixeiro Viajante

Teorema: O algoritmo de Christofides é 3/2-aproximado.

Prova:

A(I) c(T)+c(M) e c(T) OPT(I)

A(I) 3/2.OPT(I)

OPT(I)

M1

M2

C(M1) + c(M2 ) OPT(I)

C(M) ½.OPT(I)

Caixeiro ViajanteCaixeiro Viajante

Page 15: Caixeiro Viajante

1 3 5 n

2 4 6 n-1

(n-1)/2

Exemplo Ruim

Ótimo, custo=n-1

1 n

Caixeiro ViajanteCaixeiro Viajante

2

Christofides

1 3 5 n

2 4 6 n-1

(n-1)/2

Page 16: Caixeiro Viajante

Set Cover

• SET COVER: Dado um conjunto U de elementos e uma coleção

F={S1, S2, . . . , Sm}

de subconjuntos de U, determinar a família G F de menor cardinalidade tal que a

união dos conjuntos de G é igual a U

Page 17: Caixeiro Viajante

Set Cover

• Algoritmo Guloso

– Enquanto houver algum elemento não coberto• Escolha o conjunto ainda não selecionado que cobre o maior

número de elementos de não cobertos

Page 18: Caixeiro Viajante

Set Cover

• Análise

S: primeiro conjunto escolhido.

OPT(F’,U’): custo da solução ótima para cobrir U’ utilizando a família F’

custoGr (F,U) = 1 + custoGr(F-{S},U-S)

Lema 1. OPT(F,U)>= |U|/|S|

Lema 2. OPT(F,U)>=OPT(F-{S},U-S)

Page 19: Caixeiro Viajante

Set Cover

• Análise.

– Hipótese Indutiva. razaoGreedy(F,T)<=H|T| para

todo conjunto T com |T|<|U|, onde Hn é o n-

ésimo número harmônico

||||||||

||

)},{(

)},{(

||/||

1

)}},{(|,|/|max{|

)},{(1

),(

),(

USUGr

GrGr

HHU

S

SUSFOPT

SUSFcusto

SU

SUSFOPTSU

SUSFcusto

UFOPT

UFcusto

Page 20: Caixeiro Viajante

Set Cover

• [Feig 98] A menos que P=NP não existe um algoritmo polinomial com razão de aproximação o(log n) para o SET-COVER

Page 21: Caixeiro Viajante

Subset Sum

• Dado um par (S,t) onde t é um inteiro positivo e S={x1,…,xn} é um conjunto de

inteiros não negativos, encontrar S’ S cuja soma de seus elementos seja a maior possível mas não ultrapasse T

• O problema é NP-Completo– Redução a partir do 3-SAT

Page 22: Caixeiro Viajante

Subset Sum

• Algoritmo Exponencial

– Seja L+x a lista obtida a partir de uma lista L, aumentando todo elemento de L de x unidades

– L=<1,2,5,9> L+4 =<5,6,9,13>

Page 23: Caixeiro Viajante

Subset Sum

• Algoritmo Exponencial

1. L0{0}

2. Para i1 até n faça

2.1 Li MergeLists(Li-1,Li-1+xi)

2.2 Remova todo elemento de Li maior que t

3. Devolva o maior elemento de Ln

Page 24: Caixeiro Viajante

Subset Sum

• Algoritmo Exponencial– O algoritmo Exponencial retorna o

subconjunto de maior soma cuja soma não ultrapassa T

– Para obter uma aproximação em tempo polinomial, somas com valores próximos são descartadas

Page 25: Caixeiro Viajante

Subset Sum

• TRIM(L, ): Esta operação remove o máximo possível de elementos de L de modo que a lista resultante L’satisfaz:

– Para todo x L, existe z L’ tal que(1-)x <= z <= x

• Todas as somas de L estão representadas em L’ salvo uma precisão

Page 26: Caixeiro Viajante

Subset Sum

• Algoritmo Approx-SubsetSum(S,t, )L0{0}

Para i1 até n faça

Li MergeLists(Li-1,Li-1+xi)

Li TRIM(Li, / n)

Remova todo elemento de Li maior que t

Devolva z, o maior elemento de Ln

Page 27: Caixeiro Viajante

Subset Sum

Lema. Seja Pi o conjunto de todas as somas

possíveis com os i primeiros números de S. Devemos mostrar que para todo elemento y de Pi existe um elemento

wLi , após trimmed, tal que

(1- /n)i y <= w <= y

Page 28: Caixeiro Viajante

Subset Sum

Prova

Indução em i. A base é verdadeira.

Caso i) y – xi não pertence a Pi-1

Logo, y pertence a Pi-1. Pela hip indutiva, existe w’ em Li-1

tal que

(1- /n)i-1 y <= w’ <= y

Como a lista Li é ‘trimmed’ existe w em Li tal que (1- /n) w’

<= w <=w’. Logo w satisfaz a condição requerida

Page 29: Caixeiro Viajante

Subset Sum

Prova

Caso ii) y – xi pertence a Pi-1

Neste caso, existe w’ em Li-1 tal que

(1- /n)i-1 y - xi<=(1- /n)i-1 (y-xi)<= w’<= y-xi

Por outro laso, existe w em Li tal que

(1- /n) (w’+xi)<= w<= w’+xi

Logo, w satisfaz as condições requeridas

Page 30: Caixeiro Viajante

Subset Sum

Teorema. Approx-SubsetSum aproxima o SubsetSum de um fator de (1-) em tempo (n2 ln t) /

Prova.

Seja z* a solução ótima. Pelo lema o algoritmo retorna um z tal que

(1-/n)nz*<= z<= z*.

Como (1-/n)n>(1- ) para n>1, temos que

(1-)z*<= z<= z*.

Page 31: Caixeiro Viajante

Subset Sum

Teorema. Approx-SubsetSum aproxima o SubsetSum de um fator de (1-) em tempo

Prova.

Depois da operação de TRIM os elementos sucesssivos de Li , w e w’, satisfazem

w/w’< 1/(1-/n).

Logo, o número máximo de elementos de Li após o TRIM é

logt1/(1-/n) <= (n ln t) /

Page 32: Caixeiro Viajante

MAX SAT

Entrada

n variáveis booleanas : x1,... Xn

m cláusulas : C1,... Cm

Pesos wi >= 0 para cada clausula Ci

Objetivo : Encontrar uma atribuição de verdadeiro/falso

para xi que maximize a soma dos pesos das clausulas

satisfeitas

Page 33: Caixeiro Viajante

MAX SAT

Algoritmo randomizado

Para i=1,...,n

Se random(1/2) = 1

xi true

Senão

xi false

Com probabilidade ½ dizemos que uma variável é verdadeira ou falsa

Page 34: Caixeiro Viajante

MAX SAT

Teorema : O algoritmo tem aproximação ½

Prova: Considere a variável aleatória xj

xj 1, se a clausula é satisfeita 0, caso contrário

W: soma dos pesos das clausulas satisfeitas

Logo,)()()( j

jjj

jj xEwxwEwE

jj

j xww

Page 35: Caixeiro Viajante

MAX SAT

E(xj) = 1*Pr(xj=1) + 0*Pr(xj=0)

= Pr(clausula j ser satisfeita)

Lj : número de literais na clausula j

Obs: A clausula j não é satisfeita somente se todos literais forem 0

Cj = (x1 v x3 v x5 v x6)

Devemos ter x1=0, x3 = 1, x5 =0 e x6 =0

Probabilidade = (1/2)4

Caso Geral=(1/2)Lj

Page 36: Caixeiro Viajante

MAX SAT

Probabilidade da clausula j ser satisfeita é 1-(1/2)Lj

Logo,

0,5-aproximação

Obs: é um limite superior

222

11)(

OPTw

wwEj

j

j

L

j

j

j

jw

Page 37: Caixeiro Viajante

MAX SAT

O que aconteceria se toda clausula tivesse exatamente 3 literais?

7/8-aproximação

Hastad 97) Se MAXE3SAT tem aproximação (7/8 + para algum > 0, P = NP

jj

jj wwwE

8

7

2

11)(

3

Page 38: Caixeiro Viajante

MAX SAT

Algoritmo 2

Mudando a probabilidade do sorteio

Seja p>= ½

Para i=1,...,n

Se random(p) = 1

xi true

Senão

xi false

Page 39: Caixeiro Viajante

MAX SAT

Lema: Seja I uma instância do MAXSAT onde nenhuma clausula de tamanho 1 aparece negada. Então, para toda clausula j,

Pr[cj ser satisfeita] >= min (p,1-p2)

Prova:

Caso 1) Lj = 1. Neste caso,

Pr[Cj é satisfeita] = p

Caso 2) Lj >= 2.

Pr[Cj não satisfeita] <= pLj

Page 40: Caixeiro Viajante

MAX SAT

Pr[cj ser satisfeita] >= 1 - pLj >= 1 – p2

(x1 v x2) como exmplo

Pr[Cj ser satisfeita] >= 1-p2

Page 41: Caixeiro Viajante

MAX SAT

Instância onde cláusula de tamanho 1 aparece negada?

Caso 1) Se existe a clausula (xi) e não existe a clausula

(xi), podemos fazer com que xi = true com

probabilidade 1-p. Recaimos no caso anterior (equivalente a substituir xi por zi)

Page 42: Caixeiro Viajante

MAX SAT

Instância onde cláusula de tamanho 1 aparece negada?

Caso 2) Existe a clausula ( xi) e a clausula (xi). Neste

caso uma das duas não são satisfeitas. Dessa forma podemos melhorar o limite superior.

Se ci=xj e ci’= xj, retiramos min{wi,wi’} do limite

superior.

Neste caso, devemos sortear com maior probabilidade a clausula de maior peso.

Page 43: Caixeiro Viajante

MAX SAT

A: cláusulas cujo peso é retirado do limite superior segundo o caso 2

B: cláusulas complementares a A

Exemplo:

Clausulas: (x1 v x2 v x3) , (x4) , (x4) , (x2 v x3), Pesos :(2, 3,5,4)

A = {(x4)} e B = {( x4)}

}1,min{}1,min{

lg][ 2

2

pp

ww

wpppw

OPT

AE

Bii

BAii

Bii

BAii

Page 44: Caixeiro Viajante

MAX SAT

Maximizando p, temos p=0.618

Page 45: Caixeiro Viajante

MAX SAT

Modele MAXSAT como PI

s.a

0<= zj <= 1

yi {0,1}

Ij+ : conjunto das variáveis que aparecem não-negadas em Cj

Ij- : conjunto das variáveis que aparecem negadas em Cj

j

jj zwmax

jIi

jIi

j zyyjj

)1(

Page 46: Caixeiro Viajante

MAX SAT

Exemplo (x1 v x2 v x3) , ( x2 v x3)

Max w1z1 + w2z2

s.a

y1 + y2 + (1 - y3) >= z1

(1 - y2)+ (1 - y3) >= z2

yi {0,1}

0 <= zi <= 1

Resolva a relaxação linear

yi {0,1} é substituído por 0 <= y <= 1

Page 47: Caixeiro Viajante

MAX SAT

y* : solução da relaxação linear

Para i=1,...,n

Se random(y*) = 1

xi true

Senão

xi false

Page 48: Caixeiro Viajante

MAX SAT

Fato 1) (Desigualdade das Médias)

Seja a1,..., ak reais não negativo,então:

Fato 2) Se f é côncava em [l,v], f(l) >= al+b e f(v) >= av+b, então

f(x) >= ax + b em [l,v]

k

aaaa

k

ii

kk

121

Page 49: Caixeiro Viajante

MAX SAT

Teorema : O algoritmo tem aproximação (1-1/e) 0,632

Prova : Considere a clausula Cj da forma:

x1 v x2 v ... v xk

Pr(Cj é satisfeita) =

Como y* é viável,

k

k

i

k

i

i

i k

yky

1

1

*

* 1)1(1

i

k

i

i zy 1

*

**

1

*

11111 j

kk

j

kk

i

i

zkk

zk

k

yk

Page 50: Caixeiro Viajante

MAX SAT

A última desigualdade segue do fato 2, já que

Zj*=0 1 – (1 – (Zj* / k ) ) k = 0

Zj*=1 1 – (1 – (Zj* / k ) ) k = 1-(1-1/k)k

e

1 – (1 - (Zj* / k ) )k é côncava

Sendo que este resultado vale para qualquer cláusula.

Page 51: Caixeiro Viajante

MAX SAT

, já que lim(1-1/x)x converge para 1/e.

j

j satisfeitaéjclausulawwE )___Pr()(

j

jj

k

kzw

k*1

11min

OPTe

OPTk

k

k

11

111min