Professional Documents
Culture Documents
BackTracking
Cid C. Souza
Eduardo C. Xavier
Instituto de Computação/Unicamp
26 de outubro de 2009
Casos de aplicação:
Problemas cujas soluções podem ser representadas por tuplas
(vetores) de tamanho fixo ou variável da forma (x1 , . . . , xn ).
Solucionar o problema equivale a encontrar uma tupla que otimiza ou
satisfaz uma função critério P(x1 , . . . , xn )
As vezes também queremos encontrar todas as tuplas que satisfaçam
P(x1 , . . . , xn ).
Restrições:
Explı́citas: especificam os domı́nios (finitos) das variáveis na tupla.
Implı́citas: relações entre as variáveis da tupla que especificam quais
delas respondem ao problema, satisfazendo P.
1 2 3 4
x1
x2 2 3 4
x3 2
3 4 4 2 3
4 3 4 2 3 2
x4
1 2 3 4
x1
x2 2 3 4 4
1 3
B
x3 B 2 B
4 2 3 3 1
B B B B
3 3
x4
B S
Componentes do algoritmo:
Tuplas de tamanho n (fixo) onde todo xi está em {0, 1}.
Hipóteses: 0 < w1 ≤ w2 ≤ . . . ≤ wn < W e ni=1 wi ≥ W .
P
Funções Limitantes:
Pk Pn
1 Bk (x1 , . . . , xk ) = true ⇔ i=1 wi xi + i=k+1 wi ≥ W.
2 Suponha que 0 < w1 ≤ w2 ≤P . . . ≤ wn . Então (x1 , . . . , xk ) não pode
levar a uma nova solução se ki=1 wi xi + wk+1 > W . Logo, uma
outra função limitante seria:
0,1,73
x1=1 x1=0
5,2,68 0,2,68
x2=1 x2=0 x2=1 x2=0
15,3,58 5,3,58 10,3,58 0,3,58
x3=1 x3=0 x3=1 x3=0 x3=1 x3=0
27,4,46 15,4,46 17,4,46 5,4,46 10,4,46 12,4,46 0,4,46
x4=0 x4=1 x4=0 x4=0 x4=0 x4=1 x4=0
15,5,33 B 5,5,33 10,5,33 12,5,33 13,5,33 0,5,33
x5=1 x5=1 x5=0 x5=0
A 20,6,18 12,6,18 13,6,18
x6=1
C
COR(k);
(T , `) ← Domı́nio(x1 , x2 , . . . , xk−1 );
Para i = 1 até ` faça
xk ← T [i];
Se k = n então (* todos vértices estão coloridos *)
IMPRIMA(x1 , . . . , xk )
se não COR(k + 1);
fim-para.
B C
E D
A1
B2
C3
D1 D2
E3 E1
F0 F1