SlideShare uma empresa Scribd logo
1 de 219
Baixar para ler offline
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
CSP – Constraint Satisfaction Problems
Definidos por:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 2 / 41
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
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
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
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
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
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
CSP – Constraint Satisfaction Problems
Estados do problema
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 3 / 41
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
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
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
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
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
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
CSP – Exemplo
Agendamento de aulas
Problema:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 4 / 41
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
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
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
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
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
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
CSP – Exemplo
Agendamento de aulas
Domı́nio:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 5 / 41
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
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
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
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
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
CSP – Exemplo
Coloração de mapas
Tarefa:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 6 / 41
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
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
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
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
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
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
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
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
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
CSP – Constraint Satisfaction Problems
Tipos de Restrição
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 8 / 41
CSP – Constraint Satisfaction Problems
Tipos de Restrição
Unárias:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 8 / 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
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
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
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
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
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
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
CSP – Constraint Satisfaction Problems
Tipos de Restrição
Ordens maiores:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 9 / 41
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
CSP – Constraint Satisfaction Problems
Caracterı́stica de CSPs
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 13 / 41
CSP – Constraint Satisfaction Problems
Caracterı́stica de CSPs
Comutatividade:
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 13 / 41
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
B.S. com Forward Checking
Exemplo (sem heurı́sticas)
Norton Trevisan Roman(norton@usp.br) 12 de março de 2019 32 / 41
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Mais conteúdo relacionado

Mais procurados

(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 03
(ACH2044) Inteligência Artificial - Aula 03(ACH2044) Inteligência Artificial - Aula 03
(ACH2044) Inteligência Artificial - Aula 03Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15Norton Trevisan Roman
 

Mais procurados (10)

(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05
 
(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22
 
(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10
 
(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17
 
(ACH2044) Inteligência Artificial - Aula 03
(ACH2044) Inteligência Artificial - Aula 03(ACH2044) Inteligência Artificial - Aula 03
(ACH2044) Inteligência Artificial - Aula 03
 
(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20
 
(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15
 
Pronomes demonst
Pronomes demonstPronomes demonst
Pronomes demonst
 

Mais de Norton Trevisan Roman

(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04Norton Trevisan Roman
 
(ACH2001) Introdução à Programação - Aula 23
(ACH2001) Introdução à Programação - Aula 23(ACH2001) Introdução à Programação - Aula 23
(ACH2001) Introdução à Programação - Aula 23Norton Trevisan Roman
 
(ACH2001) Introdução à Programação - Aula 22
(ACH2001) Introdução à Programação - Aula 22(ACH2001) Introdução à Programação - Aula 22
(ACH2001) Introdução à Programação - Aula 22Norton Trevisan Roman
 
(ACH2001) Introdução à Programação - Aula 21
(ACH2001) Introdução à Programação - Aula 21(ACH2001) Introdução à Programação - Aula 21
(ACH2001) Introdução à Programação - Aula 21Norton Trevisan Roman
 
(ACH2001) Introdução à Programação - Aula 20
(ACH2001) Introdução à Programação - Aula 20(ACH2001) Introdução à Programação - Aula 20
(ACH2001) Introdução à Programação - Aula 20Norton Trevisan Roman
 
(ACH2001) Introdução à Programação - Aula 19
(ACH2001) Introdução à Programação - Aula 19(ACH2001) Introdução à Programação - Aula 19
(ACH2001) Introdução à Programação - Aula 19Norton Trevisan Roman
 
(ACH2001) Introdução à Programação - Aula 18
(ACH2001) Introdução à Programação - Aula 18(ACH2001) Introdução à Programação - Aula 18
(ACH2001) Introdução à Programação - Aula 18Norton Trevisan Roman
 
(ACH2001) Introdução à Programação - Aula 17
(ACH2001) Introdução à Programação - Aula 17(ACH2001) Introdução à Programação - Aula 17
(ACH2001) Introdução à Programação - Aula 17Norton Trevisan Roman
 
(ACH2001) Introdução à Programação - Aula 16
(ACH2001) Introdução à Programação - Aula 16(ACH2001) Introdução à Programação - Aula 16
(ACH2001) Introdução à Programação - Aula 16Norton Trevisan Roman
 

Mais de Norton Trevisan Roman (13)

(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19
 
(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14
 
(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12
 
(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04
 
(ACH2001) Introdução à Programação - Aula 23
(ACH2001) Introdução à Programação - Aula 23(ACH2001) Introdução à Programação - Aula 23
(ACH2001) Introdução à Programação - Aula 23
 
(ACH2001) Introdução à Programação - Aula 22
(ACH2001) Introdução à Programação - Aula 22(ACH2001) Introdução à Programação - Aula 22
(ACH2001) Introdução à Programação - Aula 22
 
(ACH2001) Introdução à Programação - Aula 21
(ACH2001) Introdução à Programação - Aula 21(ACH2001) Introdução à Programação - Aula 21
(ACH2001) Introdução à Programação - Aula 21
 
(ACH2001) Introdução à Programação - Aula 20
(ACH2001) Introdução à Programação - Aula 20(ACH2001) Introdução à Programação - Aula 20
(ACH2001) Introdução à Programação - Aula 20
 
(ACH2001) Introdução à Programação - Aula 19
(ACH2001) Introdução à Programação - Aula 19(ACH2001) Introdução à Programação - Aula 19
(ACH2001) Introdução à Programação - Aula 19
 
(ACH2001) Introdução à Programação - Aula 18
(ACH2001) Introdução à Programação - Aula 18(ACH2001) Introdução à Programação - Aula 18
(ACH2001) Introdução à Programação - Aula 18
 
(ACH2001) Introdução à Programação - Aula 17
(ACH2001) Introdução à Programação - Aula 17(ACH2001) Introdução à Programação - Aula 17
(ACH2001) Introdução à Programação - Aula 17
 
(ACH2001) Introdução à Programação - Aula 16
(ACH2001) Introdução à Programação - Aula 16(ACH2001) Introdução à Programação - Aula 16
(ACH2001) Introdução à Programação - Aula 16
 

Último

8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeitotatianehilda
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxAntonioVieira539017
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
Projeto de Extensão - DESENVOLVIMENTO BACK-END.pdf
Projeto de Extensão - DESENVOLVIMENTO BACK-END.pdfProjeto de Extensão - DESENVOLVIMENTO BACK-END.pdf
Projeto de Extensão - DESENVOLVIMENTO BACK-END.pdfHELENO FAVACHO
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxMarcosLemes28
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxFlviaGomes64
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfHELENO FAVACHO
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptxJssicaCassiano2
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdfmarlene54545
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...andreiavys
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*Viviane Moreiras
 
Araribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioAraribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioDomingasMariaRomao
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPaulaYaraDaasPedro
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxTailsonSantos1
 

Último (20)

8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
Projeto de Extensão - DESENVOLVIMENTO BACK-END.pdf
Projeto de Extensão - DESENVOLVIMENTO BACK-END.pdfProjeto de Extensão - DESENVOLVIMENTO BACK-END.pdf
Projeto de Extensão - DESENVOLVIMENTO BACK-END.pdf
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
Araribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioAraribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medio
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 

(ACH2044) Inteligência Artificial - Aula 06

  • 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