Sie sind auf Seite 1von 51

Caixeiro Viajante

Problema: Dado um grafo G=(V,E), encontrar o Circuito


Hamiltoniano de tamanho mnimo.
Teorema: A menos que P=NP, no existe algoritmo aproximativo polinomial para o TSP para qualquer
>=1.
Prova: Suponha que exista um algoritmo -aproximativo
polinomial A para algum >1. Vamos mostrar ento
que possvel encontrar um ciclo Hamiltoniano em
tempo polinomial

Caixeiro Viajante
K

K
1
K

K
1

1
1

Instncia do Ciclo
Hamiltoniano

Instncia do
Caixeiro Viajante

K = 1+|V|

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


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

Como o TSP no utiliza nenhuma aresta de valor maior que


|V| ento ele retorna um tour de custo |V|

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 vrtice de G tem grau par

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 mnimo 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 no repetir ns.

Caixeiro Viajante
1

rvore geradora mnima


com arestas duplicadas

Caixeiro Viajante
1

Circuito Euleriano

Caixeiro Viajante
1

Circuito Hamiltoniano

Caixeiro Viajante
1

Circuito Hamiltoniano

Caixeiro Viajante
1

Circuito Hamiltoniano

Caixeiro Viajante
Teorema: O algoritmo Tree 2-aproximado.
Prova: Seja OPT(I) o circuito hamiltoniano de custo mnimo.

Sabemos que custo(T) OPT(I) e A(I) 2 custo (T)


A(I) 2 .OPT(I)

Caixeiro Viajante
Algoritmo de Christofides:
Obter a rvore geradora de peso mnimo T;
Encontrar o conjunto C de ns de T que tm grau mpar;
Encontrar o matching perfeito de custo mnimo 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 repeties;

Caixeiro Viajante

Caixeiro Viajante
Teorema: O algoritmo de Christofides 3/2-aproximado.
Prova:

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


C(M1) + c(M2 ) OPT(I)
C(M) .OPT(I)
A(I) 3/2.OPT(I)

OPT(I)
M1
M2

Caixeiro Viajante
Exemplo Ruim

n-1

(n-1)/2
Christofides

1
timo, custo=n-1

n-1

5
(n-1)/2

Set Cover
SET COVER: Dado um conjunto U de

elementos e uma coleo


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

de subconjuntos de U, determinar a famlia


G F de menor cardinalidade tal que a
unio dos conjuntos de G igual a U

Set Cover
Algoritmo Guloso
Enquanto houver algum elemento no coberto
Escolha o conjunto ainda no selecionado que cobre o maior
nmero de elementos de no cobertos

Set Cover
Anlise
S: primeiro conjunto escolhido.
OPT(F,U): custo da soluo tima para cobrir U utilizando a famlia 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)

Set Cover
Anlise.
Hiptese Indutiva. razaoGreedy(F,T)<=H|T|
para todo conjunto T com |T|<|U|, onde Hn o
n-simo nmero harmnico

custoGr ( F ,U )
1 custoGr ( F {S},U S )

OPT ( F ,U )
max{|U | / | S |, OPT ( F {S},U S )}
custoGr ( F {S},U S ) | S |
1

H |U ||S | H |U |
| U | / | S | OPT ( F {S},U S )
|U |

Set Cover
[Feig 98] A menos que P=NP no existe
um algoritmo polinomial com razo de
aproximao o(log n) para o SET-COVER

Subset Sum
Dado um par (S,t) onde t um inteiro
positivo e S={x1,,xn} um conjunto de
inteiros no negativos, encontrar S S
cuja soma de seus elementos seja a maior
possvel mas no ultrapasse T
O problema NP-Completo
Reduo a partir do 3-SAT

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>

Subset Sum
Algoritmo Exponencial
1. L0{0}
2. Para i1 at n faa
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

Subset Sum
Algoritmo Exponencial
O algoritmo Exponencial retorna o
subconjunto de maior soma cuja soma no
ultrapassa T
Para obter uma aproximao em tempo
polinomial, somas com valores prximos so
descartadas

Subset Sum
TRIM(L, ): Esta operao remove o
mximo possvel de elementos de L de
modo que a lista resultante Lsatisfaz:
Para todo x L, existe z L tal que
(1-)x <= z <= x

Todas as somas de L esto representadas


em L salvo uma preciso

Subset Sum
Algoritmo Approx-SubsetSum(S,t, )
L0{0}
Para i1 at n faa
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

Subset Sum
Lema. Seja Pi o conjunto de todas as somas
possveis com os i primeiros nmeros de
S. Devemos mostrar que para todo
elemento y de Pi existe um elemento wLi
, aps trimmed, tal que
(1- /n)i y <= w <= y

Subset Sum
Prova

Induo em i. A base verdadeira.


Caso i) y xi no 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 condio requerida

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 condies requeridas

Subset Sum
Teorema. Approx-SubsetSum aproxima o SubsetSum de
um fator de (1-) em tempo (n2 ln t) /
Prova.
Seja z* a soluo 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*.

Subset Sum
Teorema. Approx-SubsetSum aproxima o SubsetSum de
um fator de (1-) em tempo
Prova.
Depois da operao de TRIM os elementos sucesssivos de
Li , w e w, satisfazem
w/w< 1/(1-/n).
Logo, o nmero mximo de elementos de Li aps o TRIM
logt1/(1-/n) <= (n ln t) /

MAX SAT
Entrada

n variveis booleanas : x1,... Xn

m clusulas : C1,... Cm

Pesos wi >= 0 para cada clausula Ci

Objetivo : Encontrar uma atribuio de verdadeiro/falso


para xi que maximize a soma dos pesos das clausulas
satisfeitas

MAX SAT
Algoritmo randomizado
Para i=1,...,n
Se random(1/2) = 1
xi true
Seno
xi false
Com probabilidade dizemos que uma varivel
verdadeira ou falsa

MAX SAT
Teorema : O algoritmo tem aproximao
Prova: Considere a varivel aleatria xj
xj

1, se a clausula satisfeita

0, caso contrrio
W: soma dos pesos das clausulas satisfeitas

w wj x j
Logo,

E (w) E ( w j x j ) w j E ( x j )
j

MAX SAT
E(xj)

= 1*Pr(xj=1) + 0*Pr(xj=0)
= Pr(clausula j ser satisfeita)

Lj : nmero de literais na clausula j


Obs: A clausula j no 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

MAX SAT
Probabilidade da clausula j ser satisfeita 1-(1/2)Lj
Logo,

wj
Lj
OPT
1 j

E ( w) w j 1
2
2
j
2

0,5-aproximao
Obs:

w
j

um limite superior

MAX SAT
O que aconteceria se toda clausula tivesse exatamente 3
literais?

1 3 7
E ( w) w j 1 w j
j
2 8 j
7/8-aproximao
Hastad 97) Se MAXE3SAT tem aproximao (7/8 + )
para algum > 0, P = NP

MAX SAT
Algoritmo 2

Mudando a probabilidade do sorteio


Seja p>=
Para i=1,...,n

Se random(p) = 1
xi true
Seno

xi false

MAX SAT
Lema: Seja I uma instncia do MAXSAT onde nenhuma
clausula de tamanho 1 aparece negada. Ento, 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 no satisfeita] <= pLj

MAX SAT
Pr[cj ser satisfeita] >= 1 - pLj >= 1 p2
(x1 v x2) como exmplo
Pr[Cj ser satisfeita] >= 1-p2

MAX SAT
Instncia onde clusula de tamanho 1 aparece negada?
Caso 1) Se existe a clausula (xi) e no existe a clausula
(xi), podemos fazer com que xi = true com
probabilidade 1-p. Recaimos no caso anterior
(equivalente a substituir xi por zi)

MAX SAT
Instncia onde clusula de tamanho 1 aparece negada?
Caso 2) Existe a clausula ( xi) e a clausula (xi). Neste
caso uma das duas no so 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
probabilidade a clausula de maior peso.

maior

MAX SAT
A: clusulas cujo peso retirado do limite superior segundo o caso 2

B: clusulas 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)}

2
w
min{
p
,
1

p
} p wi
i

E[ A lg] iA B

OPT

iB

w w

iA B

iB

min{ p,1 p 2 }

MAX SAT

Maximizando p, temos p=0.618

MAX SAT
Modele MAXSAT como PI

max w j z j
j

s.a

y (1 y ) z

iI j

iI j

0<= zj <= 1
yi {0,1}

Ij+ : conjunto das variveis que aparecem no-negadas em Cj


Ij- : conjunto das variveis que aparecem negadas em Cj

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 relaxao linear
yi {0,1} substitudo por 0 <= y <= 1

MAX SAT

y* : soluo da relaxao linear


Para i=1,...,n

Se random(y*) = 1
xi true
Seno

xi false

MAX SAT
Fato 1) (Desigualdade das Mdias)
Seja a1,..., ak reais no negativo,ento:

k
ai
a1a2 ak i 1
k

Fato 2) Se f cncava em [l,v], f(l) >= al+b e f(v) >= av+b, ento
f(x) >= ax + b em [l,v]

MAX SAT
Teorema : O algoritmo tem aproximao (1-1/e) @ 0,632
Prova : Considere a clausula Cj da forma:

*
x1 v x2 v ... v xk
k y i
k
*
i 1

(
1

y
)

i
Pr(Cj satisfeita) =

k
i 1

k
*
y
Como y* vivel, i zi

i 1

k y *i
i 1
1

k
* k

z
1

j
1
1 1 z *j
k

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 cncava
Sendo que este resultado vale para qualquer clusula.

MAX SAT
E (w) w j Pr(clausula _ j _ _ satisfeita)
j

1 k
min 1 1 w j z * j
k
k j
1 k
1
min 1 1 OPT 1 OPT
k
e
k

, j que lim(1-1/x)x converge


para 1/e.

Das könnte Ihnen auch gefallen