caixeiro viajante
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 PresentationTRANSCRIPT
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
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
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
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
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
5
4 3
2
1Árvore geradora mínimaÁrvore geradora mínima com arestas duplicadas
Caixeiro ViajanteCaixeiro Viajante
5
4 3
2
1Circuito Euleriano
Caixeiro ViajanteCaixeiro Viajante
Circuito Hamiltoniano
5
4 3
2
1
Caixeiro ViajanteCaixeiro Viajante
Circuito Hamiltoniano
5
4 3
2
1
Caixeiro ViajanteCaixeiro Viajante
Circuito Hamiltoniano
5
4 3
2
1
Caixeiro ViajanteCaixeiro 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
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
Caixeiro ViajanteCaixeiro 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
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
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
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
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)
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
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
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
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 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
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
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
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
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
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
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
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*.
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) /
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
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
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
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
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
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
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
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
MAX SAT
Pr[cj ser satisfeita] >= 1 - pLj >= 1 – p2
(x1 v x2) como exmplo
Pr[Cj ser satisfeita] >= 1-p2
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)
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.
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
MAX SAT
Maximizando p, temos p=0.618
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(
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
MAX SAT
y* : solução da relaxação linear
Para i=1,...,n
Se random(y*) = 1
xi true
Senão
xi false
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
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
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.
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