Escolar Documentos
Profissional Documentos
Cultura Documentos
Exemplo
Problema das 8-rainhas
variveis: localizao das rainhas (coluna, linha)
valores: possveis posies do tabuleiro
restrio binria: duas rainhas no podem estar
na mesma coluna, linha ou diagonal
soluo: valores para os quais a restrio
satisfeita
Retrocesso (Backtracking)
depois de realizar uma atribuio, verifica se restries no so
violadas
caso haja violao retrocede
Anlise
C E; C F; D F; E F
A
C
E
F
A=g, B=C=D=E=F=x
rvore de Busca
retrocesso
Simulao
A B C D E F
A B C D E F
A B C D E F
A B C D E F
A B C D E F
A B C D E F
A B C D E F
A B C D E F
A B C D E F
...
10
B F; C E; C F; D F;
EF
A
A
C
E
F
D
D
Simulando passo a passo:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
A= green
B = green (falha c/ A)
B=red
C=green (falha c/ A)
C= red
D=green
E= green (falha c/ A)
E= red (falha c/ B)
E= blue
F=green (falha c/ D)
F=red (falha c/ B)
F = blue (falha c/ E)
E (falha)
D=red
E=green (falha c/ A)
E= red (falha c/ B)
E= blue
F=green
11
variveis: A,B,C,D,E,F
domnio: Da=Db...=Df={red, green, blue}
restries: A B; A C; A E; B E; B F;
C E; C F; D F; E F
A
C
E
F
A=red
variveis: A,B,C,D,E,F
B=green
domnio: Da=Db...=Df={red, green, blue}
C=blue
restries: A B; A C; A E; B E;
D=red
B F; C E; C F; D F;
E= ?? Backtracking
EF
D=green
E=?? Backtracking
B
D=blue
A
E=?? Backtracking
C
D= ?? Backtracking
C = green
D = green
E
E = blue
F
D
Mais retrocessos!!
F=red
13
Backtracking no basta...
Problema do backtracking:
no adianta mexer na 7a. rainha para poder
posicionar a ltima.
O problema mais em cima... O backtrack
normalmente tem que ser de mais de um passo
Solues:
Verificao prvia (forward checking)
Propagao de restries
14
Verificao Prvia
Verificao prvia (forward checking)
idia: olhar para frente para detectar situaes
insolveis
Algoritmo:
Aps cada atribuio, eliminar do domnio das
variveis no instanciadas os valores
incompatveis com as atribuies feitas at agora.
Se um domnio torna-se vazio, retrocede
imediatamente.
C E; C F; D F; E F
A
C
E
F
B F; C E; C F; D F;
EF
A
C
E
F
17
Propagao de restries
Propagao de restries (constraint
propagation)
uma conseqncia da verificao prvia
quando um valor eliminado, isto propagado
para outros valores que dele dependem, podendo
torn-los inconsistentes e eliminados tambm
como uma onda que se propaga: as escolhas
ficam cada vez mais restritas
18
C E; C F; D F; E F
A
C
E
F
B F; C E; C F; D F;
EF
A
C
E
F
20
variveis: A,B,C,D,E,F
domnio: Da=Db...=Df={green,red,blue}
restries: A B; A C; A E; B E;
Candidatas1: E, F, ...resto
E = green
Candidatas: F, ...resto
F = red
Candidatas: A, B, C, D
A= red
Candidatas: B, C, D
B= blue
Candidatas: C, D
C= blue
D = green
SEM BACKTRACK!!
1
B F; C E; C F; D F;
EF
BB
C
E
F
D
22
variveis: A,B,C,D,E,F
domnio: Da=Db...=Df={green,red,blue}
restries: A B; A C; A E; B E;
Candidatas: todas
A = green
Candidatas: B(rb), C(rb), E(rb), ...
B = red
Candidatas: E(b), C(rb), F(gb), ...
E=blue
Candidatas: C(r), F(g), D...
C=red
Candidatas: F(g), D(rgb)
F=green
D = red ou blue
SEM BACKTRACK!!
B F; C E; C F; D F;
EF
BB
C
E
F
D
23
variveis: A,B,C,D,E,F
domnio: Da=Db...=Df={green,red,blue}
restries: A B; A C; A E; B E; B F;
C E; C F; D F; E F
1. A = green B(br), C(br), D(grb), E(br), F(grb)
2. B=r ou B=b poda liberdade igualmente faz escolha na ordem
B = red
C(rb), D(grb), E(b), F(gb)
3. C=r: D(grb), E(b), F(gb); C=b: D(grb), E( ), F(g) escolhe C=r
C= red
D(grb), E(b), F(gb)
4. D=g: E(b), F(b); D=r: E(b), F(gb); D=b: E(b), F(g) escolhe D=r
D = red
E(b), F(gb)
B
A
5. E= blue F(g)
6. F=green
SEM BACKTRACK!!
E
F
24
CSP concluses
Grande importncia prtica, sobretudo em tarefas de
Criao, projeto (design)
Agendamento (scheduling)
onde vrias solues existem e mais fcil dizer o que no
se quer...
Estado atual
Grandes aplicaes industriais $$$$
Nmero crescente de artigos nas principais conferncias
Observao:
a sigla CSP tambm usada para falar de Constraint
Satisfaction Programmimg, que um paradigma de
programao
25