O documento descreve problemas de satisfação de restrições (CSPs), definidos por um conjunto de variáveis, domínios de valores para cada variável, e restrições sobre combinações de valores de variáveis. Apresenta exemplos de agendamento de aulas e coloração de mapas como CSPs, definindo suas variáveis, domínios e restrições.
1. Inteligência Artificial – ACH2016
Aula 06 – Problemas de Satisfação de
Restrições I
Norton Trevisan Roman
(norton@usp.br)
12 de março de 2019
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 1 / 41
2. CSP – Constraint Satisfaction Problems
Definidos por:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 2 / 41
3. CSP – Constraint Satisfaction Problems
Definidos por:
Conjunto de variáveis {Xi}
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 2 / 41
4. CSP – Constraint Satisfaction Problems
Definidos por:
Conjunto de variáveis {Xi}
Cada variável tem um domı́nio de valores possı́veis
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 2 / 41
5. CSP – Constraint Satisfaction Problems
Definidos por:
Conjunto de variáveis {Xi}
Cada variável tem um domı́nio de valores possı́veis
Cada domı́nio Di consiste de um conjunto de valores
permitidos {v1, . . . , vk} para a variável Xi
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 2 / 41
6. CSP – Constraint Satisfaction Problems
Definidos por:
Conjunto de variáveis {Xi}
Cada variável tem um domı́nio de valores possı́veis
Cada domı́nio Di consiste de um conjunto de valores
permitidos {v1, . . . , vk} para a variável Xi
Conjunto de restrições
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 2 / 41
7. CSP – Constraint Satisfaction Problems
Definidos por:
Conjunto de variáveis {Xi}
Cada variável tem um domı́nio de valores possı́veis
Cada domı́nio Di consiste de um conjunto de valores
permitidos {v1, . . . , vk} para a variável Xi
Conjunto de restrições
Envolvem um subconjunto de variáveis
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 2 / 41
8. CSP – Constraint Satisfaction Problems
Definidos por:
Conjunto de variáveis {Xi}
Cada variável tem um domı́nio de valores possı́veis
Cada domı́nio Di consiste de um conjunto de valores
permitidos {v1, . . . , vk} para a variável Xi
Conjunto de restrições
Envolvem um subconjunto de variáveis
Especificam as combinações permitidas de valores para esse
subconjunto
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 2 / 41
9. CSP – Constraint Satisfaction Problems
Estados do problema
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 3 / 41
10. CSP – Constraint Satisfaction Problems
Estados do problema
Definidos por uma associação de valores a algumas
ou todas as variáveis
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 3 / 41
11. CSP – Constraint Satisfaction Problems
Estados do problema
Definidos por uma associação de valores a algumas
ou todas as variáveis
Uma associação que não viola nenhuma restrição é chamada
de associação consistente ou legal
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 3 / 41
12. CSP – Constraint Satisfaction Problems
Estados do problema
Definidos por uma associação de valores a algumas
ou todas as variáveis
Uma associação que não viola nenhuma restrição é chamada
de associação consistente ou legal
Uma associação em que toda variável é associada a um valor
é chamada de associação completa
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 3 / 41
13. CSP – Constraint Satisfaction Problems
Estados do problema
Definidos por uma associação de valores a algumas
ou todas as variáveis
Uma associação que não viola nenhuma restrição é chamada
de associação consistente ou legal
Uma associação em que toda variável é associada a um valor
é chamada de associação completa
Solução
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 3 / 41
14. CSP – Constraint Satisfaction Problems
Estados do problema
Definidos por uma associação de valores a algumas
ou todas as variáveis
Uma associação que não viola nenhuma restrição é chamada
de associação consistente ou legal
Uma associação em que toda variável é associada a um valor
é chamada de associação completa
Solução
Trata-se de uma associação completa e consistente
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 3 / 41
15. CSP – Constraint Satisfaction Problems
Estados do problema
Definidos por uma associação de valores a algumas
ou todas as variáveis
Uma associação que não viola nenhuma restrição é chamada
de associação consistente ou legal
Uma associação em que toda variável é associada a um valor
é chamada de associação completa
Solução
Trata-se de uma associação completa e consistente
O problema estará resolvido quando cada variável tiver um
valor que satisfaz todas as restrições sobre ela
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 3 / 41
16. CSP – Exemplo
Agendamento de aulas
Problema:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 4 / 41
17. CSP – Exemplo
Agendamento de aulas
Problema:
Há um número fixo de professores e salas, uma lista de aulas
a serem oferecidas, e uma lista de horários possı́veis para elas
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 4 / 41
18. CSP – Exemplo
Agendamento de aulas
Problema:
Há um número fixo de professores e salas, uma lista de aulas
a serem oferecidas, e uma lista de horários possı́veis para elas
Cada professor tem um conjunto de aulas que pode dar
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 4 / 41
19. CSP – Exemplo
Agendamento de aulas
Problema:
Há um número fixo de professores e salas, uma lista de aulas
a serem oferecidas, e uma lista de horários possı́veis para elas
Cada professor tem um conjunto de aulas que pode dar
Variáveis:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 4 / 41
20. CSP – Exemplo
Agendamento de aulas
Problema:
Há um número fixo de professores e salas, uma lista de aulas
a serem oferecidas, e uma lista de horários possı́veis para elas
Cada professor tem um conjunto de aulas que pode dar
Variáveis:
Uma para cada aula (queremos que aulas sejam dadas)
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 4 / 41
21. CSP – Exemplo
Agendamento de aulas
Problema:
Há um número fixo de professores e salas, uma lista de aulas
a serem oferecidas, e uma lista de horários possı́veis para elas
Cada professor tem um conjunto de aulas que pode dar
Variáveis:
Uma para cada aula (queremos que aulas sejam dadas)
Valores:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 4 / 41
22. CSP – Exemplo
Agendamento de aulas
Problema:
Há um número fixo de professores e salas, uma lista de aulas
a serem oferecidas, e uma lista de horários possı́veis para elas
Cada professor tem um conjunto de aulas que pode dar
Variáveis:
Uma para cada aula (queremos que aulas sejam dadas)
Valores:
A tripla <sala, horário, professor>
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 4 / 41
23. CSP – Exemplo
Agendamento de aulas
Domı́nio:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 5 / 41
24. CSP – Exemplo
Agendamento de aulas
Domı́nio:
Para cada variável Ci , seu domı́nio correspondente Di
conterá todas as possı́veis triplas, após eliminarmos aquelas
em que o professor não ensina Ci
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 5 / 41
25. CSP – Exemplo
Agendamento de aulas
Domı́nio:
Para cada variável Ci , seu domı́nio correspondente Di
conterá todas as possı́veis triplas, após eliminarmos aquelas
em que o professor não ensina Ci
Restrições:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 5 / 41
26. CSP – Exemplo
Agendamento de aulas
Domı́nio:
Para cada variável Ci , seu domı́nio correspondente Di
conterá todas as possı́veis triplas, após eliminarmos aquelas
em que o professor não ensina Ci
Restrições:
Uma para cada par de variáveis {Ci , Cj }, dizendo:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 5 / 41
27. CSP – Exemplo
Agendamento de aulas
Domı́nio:
Para cada variável Ci , seu domı́nio correspondente Di
conterá todas as possı́veis triplas, após eliminarmos aquelas
em que o professor não ensina Ci
Restrições:
Uma para cada par de variáveis {Ci , Cj }, dizendo:
Horário + sala de uma não podem bater com o da outra
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 5 / 41
28. CSP – Exemplo
Agendamento de aulas
Domı́nio:
Para cada variável Ci , seu domı́nio correspondente Di
conterá todas as possı́veis triplas, após eliminarmos aquelas
em que o professor não ensina Ci
Restrições:
Uma para cada par de variáveis {Ci , Cj }, dizendo:
Horário + sala de uma não podem bater com o da outra
Horário + professor de uma não pode bater com o da outra (a
ligação entre professor e sala é feita via horário)
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 5 / 41
29. CSP – Exemplo
Coloração de mapas
Tarefa:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 6 / 41
30. CSP – Exemplo
Coloração de mapas
Fonte: Slides de AIMA. Russell & Norvig.
Tarefa:
Colorir cada região de um mapa, de modo a que regiões
vizinhas não tenham a mesma cor
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 6 / 41
31. CSP – Exemplo
Coloração de mapas
Fonte: Slides de AIMA. Russell & Norvig.
Tarefa:
Colorir cada região de um mapa, de modo a que regiões
vizinhas não tenham a mesma cor
Variáveis:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 6 / 41
32. CSP – Exemplo
Coloração de mapas
Fonte: Slides de AIMA. Russell & Norvig.
Tarefa:
Colorir cada região de um mapa, de modo a que regiões
vizinhas não tenham a mesma cor
Variáveis:
As regiões
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 6 / 41
33. CSP – Exemplo
Coloração de mapas
Fonte: Slides de AIMA. Russell & Norvig.
Tarefa:
Colorir cada região de um mapa, de modo a que regiões
vizinhas não tenham a mesma cor
Variáveis:
As regiões
Domı́nio:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 6 / 41
34. CSP – Exemplo
Coloração de mapas
Fonte: Slides de AIMA. Russell & Norvig.
Tarefa:
Colorir cada região de um mapa, de modo a que regiões
vizinhas não tenham a mesma cor
Variáveis:
As regiões
Domı́nio:
Cores: Vermelho, Verde e Azul
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 6 / 41
35. CSP – Exemplo
Coloração de mapas
Fonte: Slides de AIMA. Russell & Norvig.
Tarefa:
Colorir cada região de um mapa, de modo a que regiões
vizinhas não tenham a mesma cor
Variáveis:
As regiões
Domı́nio:
Cores: Vermelho, Verde e Azul
Restrições:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 6 / 41
36. CSP – Exemplo
Coloração de mapas
Fonte: Slides de AIMA. Russell & Norvig.
Tarefa:
Colorir cada região de um mapa, de modo a que regiões
vizinhas não tenham a mesma cor
Variáveis:
As regiões
Domı́nio:
Cores: Vermelho, Verde e Azul
Restrições:
Regiões vizinhas devem ter cores diferentes
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 6 / 41
37. CSP – Exemplo
Coloração de mapas
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 7 / 41
38. CSP – Exemplo
Coloração de mapas
Possı́vel solução:
WA – vermelho
NT – verde
SA – azul
Q – vermelho
NSA – verde
V – vermelho
T – verde Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 7 / 41
39. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 8 / 41
40. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Unárias:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 8 / 41
41. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Unárias:
Restringem os valores de uma única variável
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 8 / 41
42. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Unárias:
Restringem os valores de uma única variável
Ex: SA 6= verde
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 8 / 41
43. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Unárias:
Restringem os valores de uma única variável
Ex: SA 6= verde
Podem ser eliminadas pela redução do domı́nio da variável
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 8 / 41
44. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Unárias:
Restringem os valores de uma única variável
Ex: SA 6= verde
Podem ser eliminadas pela redução do domı́nio da variável
Binárias:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 8 / 41
45. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Unárias:
Restringem os valores de uma única variável
Ex: SA 6= verde
Podem ser eliminadas pela redução do domı́nio da variável
Binárias:
Relacionam duas variáveis
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 8 / 41
46. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Unárias:
Restringem os valores de uma única variável
Ex: SA 6= verde
Podem ser eliminadas pela redução do domı́nio da variável
Binárias:
Relacionam duas variáveis
Ex: SA 6= WA
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 8 / 41
47. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Unárias:
Restringem os valores de uma única variável
Ex: SA 6= verde
Podem ser eliminadas pela redução do domı́nio da variável
Binárias:
Relacionam duas variáveis
Ex: SA 6= WA
Restrições são combinações de valores para cada par de
variáveis
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 8 / 41
48. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Ordens maiores:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 9 / 41
49. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Ordens maiores:
Envolvem 3 ou mais variáveis (ex: Z = X + Y )
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 9 / 41
50. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Ordens maiores:
Envolvem 3 ou mais variáveis (ex: Z = X + Y )
Podem ser reduzidas a binárias (se seus domı́nios forem
finitos) com o uso de variáveis auxiliares
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 9 / 41
51. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Ordens maiores:
Envolvem 3 ou mais variáveis (ex: Z = X + Y )
Podem ser reduzidas a binárias (se seus domı́nios forem
finitos) com o uso de variáveis auxiliares
Ex: Z = X + Y , com X, Y , Z ∈ N
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 9 / 41
52. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Ordens maiores:
Envolvem 3 ou mais variáveis (ex: Z = X + Y )
Podem ser reduzidas a binárias (se seus domı́nios forem
finitos) com o uso de variáveis auxiliares
Ex: Z = X + Y , com X, Y , Z ∈ N
Seja XY ∈ N × N (variável auxiliar)
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 9 / 41
53. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Ordens maiores:
Envolvem 3 ou mais variáveis (ex: Z = X + Y )
Podem ser reduzidas a binárias (se seus domı́nios forem
finitos) com o uso de variáveis auxiliares
Ex: Z = X + Y , com X, Y , Z ∈ N
Seja XY ∈ N × N (variável auxiliar)
Restrição 1: (X ↔ XY ) O valor de X deve ser o 1o
elemento de XY
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 9 / 41
54. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Ordens maiores:
Envolvem 3 ou mais variáveis (ex: Z = X + Y )
Podem ser reduzidas a binárias (se seus domı́nios forem
finitos) com o uso de variáveis auxiliares
Ex: Z = X + Y , com X, Y , Z ∈ N
Seja XY ∈ N × N (variável auxiliar)
Restrição 1: (X ↔ XY ) O valor de X deve ser o 1o
elemento de XY
Restrição 2: (Y ↔ XY ) O valor de Y deve ser o 2o
elemento de XY
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 9 / 41
55. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Ordens maiores:
Envolvem 3 ou mais variáveis (ex: Z = X + Y )
Podem ser reduzidas a binárias (se seus domı́nios forem
finitos) com o uso de variáveis auxiliares
Ex: Z = X + Y , com X, Y , Z ∈ N
Seja XY ∈ N × N (variável auxiliar)
Restrição 1: (X ↔ XY ) O valor de X deve ser o 1o
elemento de XY
Restrição 2: (Y ↔ XY ) O valor de Y deve ser o 2o
elemento de XY
Restrição 3: (Z ↔ XY ) O valor de Z deve ser a soma dos elementos
de XY
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 9 / 41
56. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Restrições globais
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 10 / 41
57. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Restrições globais
São restrições de ordem maior que a binária envolvendo um
número arbitrário de variáveis
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 10 / 41
58. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Restrições globais
São restrições de ordem maior que a binária envolvendo um
número arbitrário de variáveis
Preferências:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 10 / 41
59. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Restrições globais
São restrições de ordem maior que a binária envolvendo um
número arbitrário de variáveis
Preferências:
São “restrições leves” → sua violação não exclui uma
solução potencial
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 10 / 41
60. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Restrições globais
São restrições de ordem maior que a binária envolvendo um
número arbitrário de variáveis
Preferências:
São “restrições leves” → sua violação não exclui uma
solução potencial
Ex: é melhor usar verde em vez de vermelho, quando possı́vel
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 10 / 41
61. CSP – Constraint Satisfaction Problems
Tipos de Restrição
Restrições globais
São restrições de ordem maior que a binária envolvendo um
número arbitrário de variáveis
Preferências:
São “restrições leves” → sua violação não exclui uma
solução potencial
Ex: é melhor usar verde em vez de vermelho, quando possı́vel
Representadas por um custo dado a cada associação de
variáveis
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 10 / 41
62. CSP – Representação
Grafo de restrições
Grafo em que
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 11 / 41
63. CSP – Representação
Grafo de restrições
Grafo em que
Os nós correspondem às
variáveis do problema
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 11 / 41
64. CSP – Representação
Grafo de restrições
Grafo em que
Os nós correspondem às
variáveis do problema
Uma aresta coneta
quaisquer duas variáveis
que participam em uma
restrição
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 11 / 41
65. CSP – Representação
Grafo de restrições
Grafo em que
Os nós correspondem às
variáveis do problema
Uma aresta coneta
quaisquer duas variáveis
que participam em uma
restrição
Útil para CSPs binários
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 11 / 41
66. CSP – Representação
Grafo de restrições
Grafo em que
Os nós correspondem às
variáveis do problema
Uma aresta coneta
quaisquer duas variáveis
que participam em uma
restrição
Útil para CSPs binários
Aqueles com restrições
binárias apenas
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 11 / 41
67. CSP – Representação
Grafo de restrições
Contudo, toda restrição
pode ser transformada
em binária
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 12 / 41
68. CSP – Representação
Grafo de restrições
Contudo, toda restrição
pode ser transformada
em binária
Vimos redução de 3 para
2 variáveis
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 12 / 41
69. CSP – Representação
Grafo de restrições
Contudo, toda restrição
pode ser transformada
em binária
Vimos redução de 3 para
2 variáveis
4 serão reduzidas para 3,
etc
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 12 / 41
70. CSP – Representação
Grafo de restrições
Contudo, toda restrição
pode ser transformada
em binária
Vimos redução de 3 para
2 variáveis
4 serão reduzidas para 3,
etc
Restrições unárias podem
ser eliminadas
alterando-se o domı́nio da
variável Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 12 / 41
71. CSP – Constraint Satisfaction Problems
Caracterı́stica de CSPs
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 13 / 41
72. CSP – Constraint Satisfaction Problems
Caracterı́stica de CSPs
Comutatividade:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 13 / 41
73. CSP – Constraint Satisfaction Problems
Caracterı́stica de CSPs
Comutatividade:
A ordem de associação de valores a variáveis não influencia a
resposta
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 13 / 41
74. CSP – Constraint Satisfaction Problems
Caracterı́stica de CSPs
Comutatividade:
A ordem de associação de valores a variáveis não influencia a
resposta
{WA = vm, NT = vd} = {NT = vd, WA = vm}
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 13 / 41
75. CSP – Constraint Satisfaction Problems
Caracterı́stica de CSPs
Comutatividade:
A ordem de associação de valores a variáveis não influencia a
resposta
{WA = vm, NT = vd} = {NT = vd, WA = vm}
Só precisamos considerar associações a uma única
variável, em cada nó
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 13 / 41
76. CSP – Constraint Satisfaction Problems
Caracterı́stica de CSPs
Comutatividade:
A ordem de associação de valores a variáveis não influencia a
resposta
{WA = vm, NT = vd} = {NT = vd, WA = vm}
Só precisamos considerar associações a uma única
variável, em cada nó
Removemos redundâncias, caso testássemos todas
as combinações
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 13 / 41
77. CSP – Constraint Satisfaction Problems
Busca Retroativa (Backtracking Search)
Estados: Definidos pelos valores associados até
então → uma associação parcial
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 14 / 41
78. CSP – Constraint Satisfaction Problems
Busca Retroativa (Backtracking Search)
Estados: Definidos pelos valores associados até
então → uma associação parcial
Estado inicial: Variáveis sem valor algum: {}
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 14 / 41
79. CSP – Constraint Satisfaction Problems
Busca Retroativa (Backtracking Search)
Estados: Definidos pelos valores associados até
então → uma associação parcial
Estado inicial: Variáveis sem valor algum: {}
Ações (geração do sucessor):
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 14 / 41
80. CSP – Constraint Satisfaction Problems
Busca Retroativa (Backtracking Search)
Estados: Definidos pelos valores associados até
então → uma associação parcial
Estado inicial: Variáveis sem valor algum: {}
Ações (geração do sucessor):
Incluir var = valor na associação, tomando cuidado para não
conflitar com os valores já atribuı́dos
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 14 / 41
81. CSP – Constraint Satisfaction Problems
Busca Retroativa (Backtracking Search)
Estados: Definidos pelos valores associados até
então → uma associação parcial
Estado inicial: Variáveis sem valor algum: {}
Ações (geração do sucessor):
Incluir var = valor na associação, tomando cuidado para não
conflitar com os valores já atribuı́dos
Se não houver tal valor, falhe
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 14 / 41
82. CSP – Constraint Satisfaction Problems
Busca Retroativa (Backtracking Search)
Estados: Definidos pelos valores associados até
então → uma associação parcial
Estado inicial: Variáveis sem valor algum: {}
Ações (geração do sucessor):
Incluir var = valor na associação, tomando cuidado para não
conflitar com os valores já atribuı́dos
Se não houver tal valor, falhe
Teste: Se todas as variáveis têm um valor associado
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 14 / 41
83. CSP – Backtracking Search
Algoritmo (Recursivo)
Função BUSCA(csp): associação
retorna BACKTRACK({},csp)
Função BACKTRACK(associação,csp): associação
se associação for completa então
retorna associação
var ← selecione uma variável ainda sem valor
para cada valor no domı́nio de var faça
se valor for consistente com a associação então
Inclua {var = valor} em associação
resultado ← BACKTRACK(associação,csp)
se resultado 6= falha então
retorna resultado
Remova {var = valor} de associação
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 15 / 41
84. CSP – Backtracking Search
Algoritmo (Iterativo)
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a associação então
Empilhe {var = valor} ∪ associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 16 / 41
85. CSP – Backtracking Search
Algoritmo (Iterativo)
Pilha de nós contendo
os nós que ainda podem
ser visitados, na ordem
em que serão visitados
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a associação então
Empilhe {var = valor} ∪ associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 16 / 41
86. CSP – Backtracking Search
Algoritmo (Iterativo)
Se não for possı́vel
gerar um valor con-
sistente para var...
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a associação então
Empilhe {var = valor} ∪ associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 16 / 41
87. CSP – Backtracking Search
Algoritmo (Iterativo)
Na próxima iteração o al-
goritmo volta ao nó ante-
rior (que está empilhado)
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a associação então
Empilhe {var = valor} ∪ associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 16 / 41
88. CSP – Backtracking Search
Algoritmo – Funcionamento
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
89. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{}
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
90. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{}
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
91. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
92. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
93. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
WA
var
{}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
94. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
WA ← az
var
{}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
95. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
WA ← az
var
{}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
96. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
WA ← az
var
{}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
97. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
WA ← vd
var
{}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
98. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
WA ← vd
var
{}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
99. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
WA ← vd
var
{}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
100. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
WA ← vm
var
{}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
101. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
WA ← vm
var
{}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
102. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm}
WA ← vm
var
{}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
103. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm}
WA ← vm
var
{}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
104. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm}
WA ← vm
var
{}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
105. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
WA ← vm
var
{WA=vm}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
106. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
WA ← vm
var
{WA=vm}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
107. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
NT
var
{WA=vm}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
108. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
NT ← az
var
{WA=vm}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
109. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
NT ← az
var
{WA=vm}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
110. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
NT ← az
var
{WA=vm}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
111. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
NT ← vd
var
{WA=vm}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
112. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
NT ← vd
var
{WA=vm}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
113. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
{WA=vm, NT=vd}
NT ← vd
var
{WA=vm}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
114. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
{WA=vm, NT=vd}
NT ← vm
var
{WA=vm}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
115. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
{WA=vm, NT=vd}
NT ← vm
var
{WA=vm}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
116. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
{WA=vm, NT=vd}
NT ← vm
var
{WA=vm}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
117. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
{WA=vm, NT=vd}
NT ← vm
var
{WA=vm}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
118. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
NT ← vm
var
{WA=vm, NT=vd}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
119. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
NT ← vm
var
{WA=vm, NT=vd}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
120. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
Q
var
{WA=vm, NT=vd}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
121. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
Q ← az
var
{WA=vm, NT=vd}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
122. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
Q ← az
var
{WA=vm, NT=vd}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
123. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
{WA=vm, NT=vd, Q=az}
Q ← az
var
{WA=vm, NT=vd}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
124. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
{WA=vm, NT=vd, Q=az}
Q ← vd
var
{WA=vm, NT=vd}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
125. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
{WA=vm, NT=vd, Q=az}
Q ← vd
var
{WA=vm, NT=vd}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
126. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
{WA=vm, NT=vd, Q=az}
Q ← vm
var
{WA=vm, NT=vd}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
127. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
{WA=vm, NT=vd, Q=az}
Q ← vm
var
{WA=vm, NT=vd}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
128. CSP – Backtracking Search
Algoritmo – Funcionamento
prox
{WA=az}
{WA=vd}
{WA=vm, NT=az}
{WA=vm, NT=vd, Q=az}
{WA=vm, NT=vd, Q=vm}
Q ← vm
var
{WA=vm, NT=vd}
associaç~
ao
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Função BUSCA(csp): associação
Empilhe a raiz {} em prox;
enquanto prox 6= vazia faça
associação ← desempilhe uma associação
de prox;
se associação for completa então
retorna associação
var ← seleciona uma variável sem valor
atribuı́do em associação;
para cada valor no domı́nio de var faça
se valor for consistente com a
associação então
Empilhe {var = valor} ∪
associação em prox;
retorna falha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 17 / 41
129. CSP – Backtracking Search
Algoritmo – Funcionamento
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 18 / 41
130. CSP – Backtracking Search
Algoritmo – Funcionamento
Primeiro nı́vel: olhamos
apenas a primeira variável
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 18 / 41
131. CSP – Backtracking Search
Algoritmo – Funcionamento
Primeiro nı́vel: olhamos
apenas a primeira variável
Segundo nı́vel: olhamos
apenas a segunda variável
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 18 / 41
132. CSP – Backtracking Search
Algoritmo – Funcionamento
Primeiro nı́vel: olhamos
apenas a primeira variável
Segundo nı́vel: olhamos
apenas a segunda variável
E assim por diante...
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 18 / 41
133. CSP – Backtracking Search
Algoritmo – Funcionamento
Trata-se de uma busca em profundidade:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 19 / 41
134. CSP – Backtracking Search
Algoritmo – Funcionamento
Trata-se de uma busca em profundidade:
Escolhe valores para uma única variável a cada vez
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 19 / 41
135. CSP – Backtracking Search
Algoritmo – Funcionamento
Trata-se de uma busca em profundidade:
Escolhe valores para uma única variável a cada vez
Volta na árvore (backtracking) quando a variável não
consegue assumir nenhum valor legal
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 19 / 41
136. CSP – Backtracking Search
Algoritmo – Funcionamento
Trata-se de uma busca em profundidade:
Escolhe valores para uma única variável a cada vez
Volta na árvore (backtracking) quando a variável não
consegue assumir nenhum valor legal
Note que o algoritmo representa 1 único estado
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 19 / 41
137. CSP – Backtracking Search
Algoritmo – Funcionamento
Trata-se de uma busca em profundidade:
Escolhe valores para uma única variável a cada vez
Volta na árvore (backtracking) quando a variável não
consegue assumir nenhum valor legal
Note que o algoritmo representa 1 único estado
Alterando essa representação, em vez de criar novas
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 19 / 41
138. CSP – Backtracking Search
Algoritmo – Funcionamento
Trata-se de uma busca em profundidade:
Escolhe valores para uma única variável a cada vez
Volta na árvore (backtracking) quando a variável não
consegue assumir nenhum valor legal
Note que o algoritmo representa 1 único estado
Alterando essa representação, em vez de criar novas
É o algoritmo não-informado básico para CSP
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 19 / 41
139. CSP – Backtracking Search
Algoritmo – Funcionamento
Trata-se de uma busca em profundidade:
Escolhe valores para uma única variável a cada vez
Volta na árvore (backtracking) quando a variável não
consegue assumir nenhum valor legal
Note que o algoritmo representa 1 único estado
Alterando essa representação, em vez de criar novas
É o algoritmo não-informado básico para CSP
Pode ser usado para qualquer outra busca, no entanto
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 19 / 41
140. CSP – Backtracking Search
Questões importantes que afetam a eficiência
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 20 / 41
141. CSP – Backtracking Search
Questões importantes que afetam a eficiência
Ordem das variáveis
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 20 / 41
142. CSP – Backtracking Search
Questões importantes que afetam a eficiência
Ordem das variáveis
Que variável deve ser observada a cada passo?
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 20 / 41
143. CSP – Backtracking Search
Questões importantes que afetam a eficiência
Ordem das variáveis
Que variável deve ser observada a cada passo?
Ordem dos valores
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 20 / 41
144. CSP – Backtracking Search
Questões importantes que afetam a eficiência
Ordem das variáveis
Que variável deve ser observada a cada passo?
Ordem dos valores
Em que ordem deveriam ser os valores testados?
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 20 / 41
145. CSP – Backtracking Search
Questões importantes que afetam a eficiência
Ordem das variáveis
Que variável deve ser observada a cada passo?
Ordem dos valores
Em que ordem deveriam ser os valores testados?
Podemos tirar vantagem da estrutura do problema?
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 20 / 41
146. CSP – Backtracking Search
Questões importantes que afetam a eficiência
Ordem das variáveis
Que variável deve ser observada a cada passo?
Ordem dos valores
Em que ordem deveriam ser os valores testados?
Podemos tirar vantagem da estrutura do problema?
Podemos detectar falhas inevitáveis antes de
acontecerem?
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 20 / 41
147. Backtracking Search – Heurı́sticas
Ordem das variáveis
Padrão: usar a próxima variável sem valor, em uma
fila → Ineficiente
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 21 / 41
148. Backtracking Search – Heurı́sticas
Ordem das variáveis
Padrão: usar a próxima variável sem valor, em uma
fila → Ineficiente
Heurı́stica: Valores restantes mı́nimos
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 21 / 41
149. Backtracking Search – Heurı́sticas
Ordem das variáveis
Padrão: usar a próxima variável sem valor, em uma
fila → Ineficiente
Heurı́stica: Valores restantes mı́nimos
Escolha a variável com o menor número de valores legais
restantes (ou seja, a que tem mais chance de falhar)
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 21 / 41
150. Backtracking Search – Heurı́sticas
Ordem das variáveis
Padrão: usar a próxima variável sem valor, em uma
fila → Ineficiente
Heurı́stica: Valores restantes mı́nimos
Escolha a variável com o menor número de valores legais
restantes (ou seja, a que tem mais chance de falhar)
No inı́cio não há restrição → escolhemos qualquer uma
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 21 / 41
151. Backtracking Search – Heurı́sticas
Ordem das variáveis
Padrão: usar a próxima variável sem valor, em uma
fila → Ineficiente
Heurı́stica: Valores restantes mı́nimos
Escolha a variável com o menor número de valores legais
restantes (ou seja, a que tem mais chance de falhar)
No inı́cio não há restrição → escolhemos qualquer uma
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 21 / 41
152. Backtracking Search – Heurı́sticas
Ordem das variáveis
Padrão: usar a próxima variável sem valor, em uma
fila → Ineficiente
Heurı́stica: Valores restantes mı́nimos
Escolha a variável com o menor número de valores legais
restantes (ou seja, a que tem mais chance de falhar)
WA = vm limita as escolhas em NT e SA, escolhemos uma
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 21 / 41
153. Backtracking Search – Heurı́sticas
Ordem das variáveis
Padrão: usar a próxima variável sem valor, em uma
fila → Ineficiente
Heurı́stica: Valores restantes mı́nimos
Escolha a variável com o menor número de valores legais
restantes (ou seja, a que tem mais chance de falhar)
WA = vm limita as escolhas em NT e SA, escolhemos uma
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 21 / 41
154. Backtracking Search – Heurı́sticas
Ordem das variáveis
Padrão: usar a próxima variável sem valor, em uma
fila → Ineficiente
Heurı́stica: Valores restantes mı́nimos
Escolha a variável com o menor número de valores legais
restantes (ou seja, a que tem mais chance de falhar)
Após WA = vm e NT = vd, há somente um valor para SA
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 21 / 41
155. Backtracking Search – Heurı́sticas
Ordem das variáveis
Padrão: usar a próxima variável sem valor, em uma
fila → Ineficiente
Heurı́stica: Valores restantes mı́nimos
Escolha a variável com o menor número de valores legais
restantes (ou seja, a que tem mais chance de falhar)
Após WA = vm e NT = vd, há somente um valor para SA
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 21 / 41
156. Backtracking Search – Heurı́sticas
Ordem das variáveis
A valores restantes mı́nimos não ajuda na hora de
escolher a primeira região para colorir
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 22 / 41
157. Backtracking Search – Heurı́sticas
Ordem das variáveis
A valores restantes mı́nimos não ajuda na hora de
escolher a primeira região para colorir
Uma vez que todas possuem o mesmo número de valores
restantes
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 22 / 41
158. Backtracking Search – Heurı́sticas
Ordem das variáveis
A valores restantes mı́nimos não ajuda na hora de
escolher a primeira região para colorir
Uma vez que todas possuem o mesmo número de valores
restantes
Quando a VRM encontra um empate, podemos
desempatar usando a heurı́stica do grau
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 22 / 41
159. Backtracking Search – Heurı́sticas
Ordem das variáveis
A valores restantes mı́nimos não ajuda na hora de
escolher a primeira região para colorir
Uma vez que todas possuem o mesmo número de valores
restantes
Quando a VRM encontra um empate, podemos
desempatar usando a heurı́stica do grau
Heurı́stica do grau:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 22 / 41
160. Backtracking Search – Heurı́sticas
Ordem das variáveis
A valores restantes mı́nimos não ajuda na hora de
escolher a primeira região para colorir
Uma vez que todas possuem o mesmo número de valores
restantes
Quando a VRM encontra um empate, podemos
desempatar usando a heurı́stica do grau
Heurı́stica do grau:
Selecione a variável (ainda sem valor associado) com o maior
número de restrições com outras variáveis sem valor
associado
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 22 / 41
161. Backtracking Search – Heurı́sticas
Ordem das variáveis – Heurı́stica do grau
Ex:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 23 / 41
162. Backtracking Search – Heurı́sticas
Ordem das variáveis – Heurı́stica do grau
Ex:
SA tem o maior número
de arestas → maior
número de restrições
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 23 / 41
163. Backtracking Search – Heurı́sticas
Ordem das variáveis – Heurı́stica do grau
Ex:
SA tem o maior número
de arestas → maior
número de restrições
Começamos por ele
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 23 / 41
164. Backtracking Search – Heurı́sticas
Ordem das variáveis – Heurı́stica do grau
Ex:
SA tem o maior número
de arestas → maior
número de restrições
Começamos por ele
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 23 / 41
165. Backtracking Search – Heurı́sticas
Ordem das variáveis – Heurı́stica do grau
Ex:
SA tem o maior número
de arestas → maior
número de restrições
Começamos por ele
Sobram NT, Q e NSW empatados no número de valores, e
com 2 restrições (com variáveis restantes) cada
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 23 / 41
166. Backtracking Search – Heurı́sticas
Ordem das variáveis – Heurı́stica do grau
Escolhemos um deles
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 24 / 41
167. Backtracking Search – Heurı́sticas
Ordem das variáveis – Heurı́stica do grau
Escolhemos um deles
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 24 / 41
168. Backtracking Search – Heurı́sticas
Ordem das variáveis – Heurı́stica do grau
Escolhemos um deles
WA e Q têm apenas 1 opção
de cor (empate), mas Q tem
grau maior com as variáveis
restantes (WA=0 e Q=1)
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 24 / 41
169. Backtracking Search – Heurı́sticas
Ordem das variáveis – Heurı́stica do grau
Escolhemos um deles
WA e Q têm apenas 1 opção
de cor (empate), mas Q tem
grau maior com as variáveis
restantes (WA=0 e Q=1)
Escolhemos este então
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 24 / 41
170. Backtracking Search – Heurı́sticas
Ordem das variáveis – Heurı́stica do grau
Escolhemos um deles
WA e Q têm apenas 1 opção
de cor (empate), mas Q tem
grau maior com as variáveis
restantes (WA=0 e Q=1)
Escolhemos este então
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 24 / 41
171. Backtracking Search – Heurı́sticas
Ordem das variáveis – Heurı́stica do grau
Escolhemos um deles
WA e Q têm apenas 1 opção
de cor (empate), mas Q tem
grau maior com as variáveis
restantes (WA=0 e Q=1)
Escolhemos este então
E assim seguimos...
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 24 / 41
172. Backtracking Search – Heurı́sticas
Ordem das variáveis
Valores mı́nimos restantes é geralmente um guia
mais poderoso
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 25 / 41
173. Backtracking Search – Heurı́sticas
Ordem das variáveis
Valores mı́nimos restantes é geralmente um guia
mais poderoso
Mas a heurı́stica do grau pode ser bastante útil para
desempates
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 25 / 41
174. Backtracking Search – Heurı́sticas
Ordem dos valores – Valor Menos Restritivo
Uma vez escolhida a próxima variável, resta ainda
decidir qual valor atribuir a ela primeiro
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 26 / 41
175. Backtracking Search – Heurı́sticas
Ordem dos valores – Valor Menos Restritivo
Uma vez escolhida a próxima variável, resta ainda
decidir qual valor atribuir a ela primeiro
Heurı́stica do Valor Menos Restritivo
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 26 / 41
176. Backtracking Search – Heurı́sticas
Ordem dos valores – Valor Menos Restritivo
Uma vez escolhida a próxima variável, resta ainda
decidir qual valor atribuir a ela primeiro
Heurı́stica do Valor Menos Restritivo
Escolha o valor que elimina o menor número de escolhas
para as variáveis vizinhas no grafo de restrições
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 26 / 41
177. Backtracking Search – Heurı́sticas
Ordem dos valores – Valor Menos Restritivo
Uma vez escolhida a próxima variável, resta ainda
decidir qual valor atribuir a ela primeiro
Heurı́stica do Valor Menos Restritivo
Escolha o valor que elimina o menor número de escolhas
para as variáveis vizinhas no grafo de restrições
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Ex: suponha que já escolhemos WA = vm e
NT = vd, e vamos escolher um valor para Q:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 26 / 41
178. Backtracking Search – Heurı́sticas
Ordem dos valores – Valor Menos Restritivo
Uma vez escolhida a próxima variável, resta ainda
decidir qual valor atribuir a ela primeiro
Heurı́stica do Valor Menos Restritivo
Escolha o valor que elimina o menor número de escolhas
para as variáveis vizinhas no grafo de restrições
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Escolher Q = az deixa 0 valor para SA
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 26 / 41
179. Backtracking Search – Heurı́sticas
Ordem dos valores – Valor Menos Restritivo
Uma vez escolhida a próxima variável, resta ainda
decidir qual valor atribuir a ela primeiro
Heurı́stica do Valor Menos Restritivo
Escolha o valor que elimina o menor número de escolhas
para as variáveis vizinhas no grafo de restrições
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Enquanto escolher Q = vm deixa 1 valor para SA
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 26 / 41
180. Backtracking Search – Heurı́sticas
Ordem dos valores – Valor Menos Restritivo
Uma vez escolhida a próxima variável, resta ainda
decidir qual valor atribuir a ela primeiro
Heurı́stica do Valor Menos Restritivo
Escolha o valor que elimina o menor número de escolhas
para as variáveis vizinhas no grafo de restrições
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Essa é, portanto, nossa escolha
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 26 / 41
181. Backtracking Search – Heurı́sticas
Ordem dos valores – Valor Menos Restritivo
A heurı́stica tenta assim dar a maior flexibilidade
possı́vel para atribuições subsequentes
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 27 / 41
182. Backtracking Search – Heurı́sticas
Ordem dos valores – Valor Menos Restritivo
A heurı́stica tenta assim dar a maior flexibilidade
possı́vel para atribuições subsequentes
Em geral, usar Busca Retroativa combinando essas
3 heurı́sticas acelera consideravelmente a obtenção
do resultado
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 27 / 41
183. CSP – Constraint Satisfaction Problems
Usando a Estrutura do Problema
Podemos usar a estrutura do
problema para auxiliar na
busca de soluções
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 28 / 41
184. CSP – Constraint Satisfaction Problems
Usando a Estrutura do Problema
Podemos usar a estrutura do
problema para auxiliar na
busca de soluções
Usando o grafo de restrição
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 28 / 41
185. CSP – Constraint Satisfaction Problems
Usando a Estrutura do Problema
Podemos usar a estrutura do
problema para auxiliar na
busca de soluções
Usando o grafo de restrição
Ex:
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 28 / 41
186. CSP – Constraint Satisfaction Problems
Usando a Estrutura do Problema
Podemos usar a estrutura do
problema para auxiliar na
busca de soluções
Usando o grafo de restrição
Ex:
Note que T não está conectado Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 28 / 41
187. CSP – Constraint Satisfaction Problems
Usando a Estrutura do Problema
Podemos usar a estrutura do
problema para auxiliar na
busca de soluções
Usando o grafo de restrição
Ex:
Note que T não está conectado Fonte: Slides de AIMA. Russell & Norvig.
A Tasmânia e a ilha principal são subproblemas
independentes, com menos variáveis em cada um
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 28 / 41
188. CSP – Constraint Satisfaction Problems
Usando a Estrutura do Problema
Podemos, então, começar
buscando componentes
conexos no grafo
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 29 / 41
189. CSP – Constraint Satisfaction Problems
Usando a Estrutura do Problema
Podemos, então, começar
buscando componentes
conexos no grafo
Identificando, assim, regiões
independentes
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 29 / 41
190. CSP – Constraint Satisfaction Problems
Usando a Estrutura do Problema
Podemos, então, começar
buscando componentes
conexos no grafo
Identificando, assim, regiões
independentes
Cada componente
corresponderá a um
subproblema Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 29 / 41
191. CSP – Constraint Satisfaction Problems
Usando a Estrutura do Problema
Podemos, então, começar
buscando componentes
conexos no grafo
Identificando, assim, regiões
independentes
Cada componente
corresponderá a um
subproblema
Com menos variáveis para busca
e totalmente paralelizável
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 29 / 41
192. CSP – Constraint Satisfaction Problems
Propagação de Restrições
Até agora, consideramos as restrições em uma
variável somente quando a selecionamos
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 30 / 41
193. CSP – Constraint Satisfaction Problems
Propagação de Restrições
Até agora, consideramos as restrições em uma
variável somente quando a selecionamos
Uma melhoria seria ver os efeitos das restrições em uma
variável nas demais (que ainda permanecem sem valor)
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 30 / 41
194. CSP – Constraint Satisfaction Problems
Propagação de Restrições
Até agora, consideramos as restrições em uma
variável somente quando a selecionamos
Uma melhoria seria ver os efeitos das restrições em uma
variável nas demais (que ainda permanecem sem valor)
Técnica chamada de Propagação de restrições
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 30 / 41
195. CSP – Constraint Satisfaction Problems
Propagação de Restrições
Até agora, consideramos as restrições em uma
variável somente quando a selecionamos
Uma melhoria seria ver os efeitos das restrições em uma
variável nas demais (que ainda permanecem sem valor)
Técnica chamada de Propagação de restrições
Usamos as restrições para reduzir o número de valores legais
para uma variável
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 30 / 41
196. CSP – Constraint Satisfaction Problems
Propagação de Restrições
Até agora, consideramos as restrições em uma
variável somente quando a selecionamos
Uma melhoria seria ver os efeitos das restrições em uma
variável nas demais (que ainda permanecem sem valor)
Técnica chamada de Propagação de restrições
Usamos as restrições para reduzir o número de valores legais
para uma variável
E então propagamos essa redução pelo grafo
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 30 / 41
197. CSP – Constraint Satisfaction Problems
Propagação de Restrições
Até agora, consideramos as restrições em uma
variável somente quando a selecionamos
Uma melhoria seria ver os efeitos das restrições em uma
variável nas demais (que ainda permanecem sem valor)
Técnica chamada de Propagação de restrições
Usamos as restrições para reduzir o número de valores legais
para uma variável
E então propagamos essa redução pelo grafo
Métodos: Forward checking e Consistência de arestas
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 30 / 41
198. CSP – Propagação de Restrições
Backtracking Search com Forward Checking
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 31 / 41
199. CSP – Propagação de Restrições
Backtracking Search com Forward Checking
Quando atribuı́mos um valor a uma variável X:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 31 / 41
200. CSP – Propagação de Restrições
Backtracking Search com Forward Checking
Quando atribuı́mos um valor a uma variável X:
Olhamos cada variável Y , ainda sem valor, conectada a X
por uma restrição
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 31 / 41
201. CSP – Propagação de Restrições
Backtracking Search com Forward Checking
Quando atribuı́mos um valor a uma variável X:
Olhamos cada variável Y , ainda sem valor, conectada a X
por uma restrição
Removemos do domı́nio de Y qualquer valor inconsistente
com o valor escolhido para X
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 31 / 41
202. CSP – Propagação de Restrições
Backtracking Search com Forward Checking
Quando atribuı́mos um valor a uma variável X:
Olhamos cada variável Y , ainda sem valor, conectada a X
por uma restrição
Removemos do domı́nio de Y qualquer valor inconsistente
com o valor escolhido para X
A busca termina quando alguma variável fica sem
valor possı́vel → fazemos o backtracking
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 31 / 41
203. CSP – Propagação de Restrições
Backtracking Search com Forward Checking
Quando atribuı́mos um valor a uma variável X:
Olhamos cada variável Y , ainda sem valor, conectada a X
por uma restrição
Removemos do domı́nio de Y qualquer valor inconsistente
com o valor escolhido para X
A busca termina quando alguma variável fica sem
valor possı́vel → fazemos o backtracking
A ideia é então manter registro dos valores legais restantes
para variáveis ainda sem valor
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 31 / 41
204. CSP – Propagação de Restrições
Backtracking Search com Forward Checking
Quando atribuı́mos um valor a uma variável X:
Olhamos cada variável Y , ainda sem valor, conectada a X
por uma restrição
Removemos do domı́nio de Y qualquer valor inconsistente
com o valor escolhido para X
A busca termina quando alguma variável fica sem
valor possı́vel → fazemos o backtracking
A ideia é então manter registro dos valores legais restantes
para variáveis ainda sem valor
E terminar a busca quando uma variável estiver sem valor
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 31 / 41
205. B.S. com Forward Checking
Exemplo (sem heurı́sticas)
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 32 / 41
206. B.S. com Forward Checking
Exemplo (sem heurı́sticas)
Inicialmente, o domı́nio de todas as variáveis tem
todos os possı́veis valores
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 32 / 41
207. B.S. com Forward Checking
Exemplo (sem heurı́sticas)
Uma vez definida a cor para WA, essa cor é
removida do domı́nio de NT e SA
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 33 / 41
208. B.S. com Forward Checking
Exemplo (sem heurı́sticas)
O método propaga então informação das variáveis
com valor para as sem valor definido
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 34 / 41
209. B.S. com Forward Checking
Exemplo (sem heurı́sticas)
O método propaga então informação das variáveis
com valor para as sem valor definido
Suponha que o próximo escolhido seja Q
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 34 / 41
210. B.S. com Forward Checking
Exemplo (sem heurı́sticas)
Atribuı́do verde a Q, essa cor é removida de seus
vizinhos ainda sem cor (NT, SA e NSW )
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 35 / 41
211. B.S. com Forward Checking
Exemplo (sem heurı́sticas)
Escolhido V = azul, o método pára, pois SA ficou
com o domı́nio vazio (não há valor consistente)
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 36 / 41
212. B.S. com Forward Checking
Exemplo (sem heurı́sticas)
O algoritmo deve fazer então um backtracking para
a decisão anterior e atribuir outra cor a V
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 37 / 41
213. B.S. com Forward Checking
Forward Checking + Valores Restantes Mı́nimos
Para muitos problemas, a busca é mais efetiva se
combinarmos a heurı́stica dos valores restantes
mı́nimos com forward checking
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 38 / 41
214. B.S. com Forward Checking
Forward Checking + Valores Restantes Mı́nimos
Para muitos problemas, a busca é mais efetiva se
combinarmos a heurı́stica dos valores restantes
mı́nimos com forward checking
Considere, por exemplo, quando fizemos WA = vermelho
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 38 / 41
215. B.S. com Forward Checking
Forward Checking + Valores Restantes Mı́nimos
Para muitos problemas, a busca é mais efetiva se
combinarmos a heurı́stica dos valores restantes
mı́nimos com forward checking
Considere, por exemplo, quando fizemos WA = vermelho
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 38 / 41
216. B.S. com Forward Checking
Forward Checking + Valores Restantes Mı́nimos
Nesse ponto, pela heurı́stica dos VRMs, terı́amos
que escolher entre NT e SA
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 39 / 41
217. B.S. com Forward Checking
Forward Checking + Valores Restantes Mı́nimos
Nesse ponto, pela heurı́stica dos VRMs, terı́amos
que escolher entre NT e SA
E o algoritmo não falharia
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 39 / 41
218. B.S. com Forward Checking
Forward Checking + Valores Restantes Mı́nimos
Temos então que forward checking é, de fato, um
modo eficiente de calcular incrementalmente a
informação que a VRM precisa para fazer seu
trabalho
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 40 / 41
219. Referências
Russell, S.; Norvig P. (2010): Artificial Intelligence: A Modern
Approach. Prentice Hall. 3a ed.
Slides do livro:
http://aima.eecs.berkeley.edu/slides-pdf/
http://ocw.mit.edu/OcwWeb/Electrical-Engineering-
and-Computer-Science/6-034Spring-2005/
LectureNotes/index.htm
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 41 / 41