SlideShare uma empresa Scribd logo
1 de 230
Baixar para ler offline
Inteligência Artificial – ACH2016
Aula 07 – Problemas de Satisfação de
Restrições II
Norton Trevisan Roman
(norton@usp.br)
21 de março de 2019
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 1 / 43
Backtracking Search – Exemplo
Busca + forward checking + heurı́sticas
Vamos ver agora o algoritmo de busca retroativa
com forward checking, usando as heurı́sticas:
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 2 / 43
Backtracking Search – Exemplo
Busca + forward checking + heurı́sticas
Vamos ver agora o algoritmo de busca retroativa
com forward checking, usando as heurı́sticas:
Valores restantes mı́nimos
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 2 / 43
Backtracking Search – Exemplo
Busca + forward checking + heurı́sticas
Vamos ver agora o algoritmo de busca retroativa
com forward checking, usando as heurı́sticas:
Valores restantes mı́nimos
Grau
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 2 / 43
Backtracking Search – Exemplo
Busca + forward checking + heurı́sticas
Vamos ver agora o algoritmo de busca retroativa
com forward checking, usando as heurı́sticas:
Valores restantes mı́nimos
Grau
Valor Menos Restritivo
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 2 / 43
Backtracking Search – Exemplo
Busca + forward checking + heurı́sticas
Vamos ver agora o algoritmo de busca retroativa
com forward checking, usando as heurı́sticas:
Valores restantes mı́nimos
Grau
Valor Menos Restritivo Fonte: Slides de AIMA. Russell & Norvig.
Suponha que temos o mesmo problema de coloração
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 2 / 43
Backtracking Search – Exemplo
Busca + forward checking + heurı́sticas
Vamos ver agora o algoritmo de busca retroativa
com forward checking, usando as heurı́sticas:
Valores restantes mı́nimos
Grau
Valor Menos Restritivo Fonte: Slides de AIMA. Russell & Norvig.
Suponha que temos o mesmo problema de coloração
Mas com restrições adicionais:
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 2 / 43
Backtracking Search – Exemplo
Busca + forward checking + heurı́sticas
Vamos ver agora o algoritmo de busca retroativa
com forward checking, usando as heurı́sticas:
Valores restantes mı́nimos
Grau
Valor Menos Restritivo Fonte: Slides de AIMA. Russell & Norvig.
Suponha que temos o mesmo problema de coloração
Mas com restrições adicionais:
NT e SA não aceitam azul
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 2 / 43
Backtracking Search – Exemplo
Passo 1: Definir variável e seu valor
Quem pintar?
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
Backtracking Search – Exemplo
Passo 1: Definir variável e seu valor
Quem pintar?
VRM:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
Backtracking Search – Exemplo
Passo 1: Definir variável e seu valor
Quem pintar?
VRM: NT ou SA
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
Backtracking Search – Exemplo
Passo 1: Definir variável e seu valor
Quem pintar?
VRM: NT ou SA
Grau:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
Backtracking Search – Exemplo
Passo 1: Definir variável e seu valor
Quem pintar?
VRM: NT ou SA
Grau: SA
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
Backtracking Search – Exemplo
Passo 1: Definir variável e seu valor
Quem pintar?
VRM: NT ou SA
Grau: SA
De que cor?
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
Backtracking Search – Exemplo
Passo 1: Definir variável e seu valor
Quem pintar?
VRM: NT ou SA
Grau: SA
De que cor?
VMR:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
Backtracking Search – Exemplo
Passo 1: Definir variável e seu valor
Quem pintar?
VRM: NT ou SA
Grau: SA
De que cor?
VMR: vm ou vd
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
Backtracking Search – Exemplo
Passo 1: Definir variável e seu valor
Quem pintar?
VRM: NT ou SA
Grau: SA
De que cor?
VMR: vm ou vd
Escolha:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
Backtracking Search – Exemplo
Passo 1: Definir variável e seu valor
Quem pintar?
VRM: NT ou SA
Grau: SA
De que cor?
VMR: vm ou vd
Escolha:
SA = vm
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
Backtracking Search – Exemplo
Passo 2: Propagar
Propague essa escolha
para os vizinhos do nó
no grafo de restrição
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 4 / 43
Backtracking Search – Exemplo
Passo 2: Propagar
Propague essa escolha
para os vizinhos do nó
no grafo de restrição
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 4 / 43
Backtracking Search – Exemplo
Passo 2: Propagar
Propague essa escolha
para os vizinhos do nó
no grafo de restrição
Repita a operação
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 4 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 5 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 5 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: NT
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 5 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: NT
De que cor?
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 5 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: NT
De que cor?
vd (não há outra)
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 5 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: NT
De que cor?
vd (não há outra)
Escolha:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 5 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: NT
De que cor?
vd (não há outra)
Escolha:
NT = vd
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 5 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: NT
De que cor?
vd (não há outra)
Escolha:
NT = vd
Propagar
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 5 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou Q
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou Q
Grau:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou Q
Grau: Q (grau 1)
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou Q
Grau: Q (grau 1)
De que cor?
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou Q
Grau: Q (grau 1)
De que cor?
az (não há outra)
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou Q
Grau: Q (grau 1)
De que cor?
az (não há outra)
Escolha:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou Q
Grau: Q (grau 1)
De que cor?
az (não há outra)
Escolha:
Q = az
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou Q
Grau: Q (grau 1)
De que cor?
az (não há outra)
Escolha:
Q = az
Propagar Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou NSW
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou NSW
Grau:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou NSW
Grau: NSW (grau 1)
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou NSW
Grau: NSW (grau 1)
De que cor?
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou NSW
Grau: NSW (grau 1)
De que cor?
vd (não há outra)
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou NSW
Grau: NSW (grau 1)
De que cor?
vd (não há outra)
Escolha:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou NSW
Grau: NSW (grau 1)
De que cor?
vd (não há outra)
Escolha:
NSW = vd
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou NSW
Grau: NSW (grau 1)
De que cor?
vd (não há outra)
Escolha:
NSW = vd
Propagar Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou V
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou V
Grau:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou V
Grau: WA ou V → WA
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou V
Grau: WA ou V → WA
De que cor?
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou V
Grau: WA ou V → WA
De que cor?
az (não há outra)
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou V
Grau: WA ou V → WA
De que cor?
az (não há outra)
Escolha:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou V
Grau: WA ou V → WA
De que cor?
az (não há outra)
Escolha:
WA = az
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: WA ou V
Grau: WA ou V → WA
De que cor?
az (não há outra)
Escolha:
WA = az
Propagar Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 9 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 9 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: V
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 9 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: V
De que cor?
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 9 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: V
De que cor?
az (não há outra)
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 9 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: V
De que cor?
az (não há outra)
Escolha:
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 9 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: V
De que cor?
az (não há outra)
Escolha:
V = az
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 9 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Quem pintar?
VRM: V
De que cor?
az (não há outra)
Escolha:
V = az
Propagar Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 9 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Por fim, sobra apenas
T
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 10 / 43
Backtracking Search – Exemplo
Definir variável e seu valor e propagar
Por fim, sobra apenas
T
Podemos dar qualquer
cor a ela...
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 10 / 43
Backtracking Search
Em suma...
O processo é repetido até:
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 11 / 43
Backtracking Search
Em suma...
O processo é repetido até:
Terminar o grafo, ou
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 11 / 43
Backtracking Search
Em suma...
O processo é repetido até:
Terminar o grafo, ou
Encontrar nó sem opções
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 11 / 43
Backtracking Search
Em suma...
O processo é repetido até:
Terminar o grafo, ou
Encontrar nó sem opções
Nesse último caso:
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 11 / 43
Backtracking Search
Em suma...
O processo é repetido até:
Terminar o grafo, ou
Encontrar nó sem opções
Nesse último caso:
Volta ao nó pai (backtracking)
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 11 / 43
Backtracking Search
Em suma...
O processo é repetido até:
Terminar o grafo, ou
Encontrar nó sem opções
Nesse último caso:
Volta ao nó pai (backtracking)
Escolhe outro valor para a variável problemática
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 11 / 43
Backtracking Search
Em suma...
O processo é repetido até:
Terminar o grafo, ou
Encontrar nó sem opções
Nesse último caso:
Volta ao nó pai (backtracking)
Escolhe outro valor para a variável problemática
Se não houver outro valor, volta ao pai e repete o
procedimento
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 11 / 43
Forward Checking
Vantagens
Reduz o número de valores considerados em cada
variável ainda sem valor
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 12 / 43
Forward Checking
Vantagens
Reduz o número de valores considerados em cada
variável ainda sem valor
Bastante eficiente se usada com a heurı́stica dos
valores restantes mı́nimos
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 12 / 43
Forward Checking
Vantagens
Reduz o número de valores considerados em cada
variável ainda sem valor
Bastante eficiente se usada com a heurı́stica dos
valores restantes mı́nimos
Desvantagem
Embora propague a informação das variáveis com
atribuição para as sem atribuição, forward checking
não consegue detectar todas as falhas de antemão
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 12 / 43
Forward Checking
Desvantagem – Exemplo
Considere a aplicação pura do forward checking,
conforme vista na aula passada
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 13 / 43
Forward Checking
Desvantagem – Exemplo
Considere a aplicação pura do forward checking,
conforme vista na aula passada
Ou seja, sua aplicação sem a ajuda das heurı́sticas vistas
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 13 / 43
Forward Checking
Desvantagem – Exemplo
Considere a aplicação pura do forward checking,
conforme vista na aula passada
Ou seja, sua aplicação sem a ajuda das heurı́sticas vistas
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 13 / 43
Forward Checking
Desvantagem – Exemplo
Quando WA = vm e Q = vd, NT e SA são
forçados a serem azuis. Forward checking não olha
adiante o suficiente para ver essa inconsistência
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 14 / 43
Forward Checking
Desvantagem – Exemplo
Solução:
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 15 / 43
Forward Checking
Desvantagem – Exemplo
Solução:
Consistência de Arestas (Arc Consistency)
Fonte: Slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 15 / 43
Consistência de Arestas
Arestas Consistentes
Uma aresta X → Y será consistente se e somente
se, para todo valor x ∈ X, houver algum valor
y ∈ Y permitido
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 16 / 43
Consistência de Arestas
Arestas Consistentes
Uma aresta X → Y será consistente se e somente
se, para todo valor x ∈ X, houver algum valor
y ∈ Y permitido
Consistência de Arestas
A ideia da consistência de arestas é, a cada decisão,
tornar cada aresta do grafo consistente
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 16 / 43
Consistência de Arestas
Funcionamento – Exemplo
Se SA = az, há um valor consistente para NSW
(vermelho)
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 17 / 43
Consistência de Arestas
Funcionamento – Exemplo
Se SA = az, há um valor consistente para NSW
(vermelho)
SA → NSW é consistente
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 17 / 43
Consistência de Arestas
Funcionamento – Exemplo
Contudo, nem todo valor de NSW tem valor válido
em SA
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 18 / 43
Consistência de Arestas
Funcionamento – Exemplo
Contudo, nem todo valor de NSW tem valor válido
em SA
Se NSW = az, não há valor válido para SA
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 18 / 43
Consistência de Arestas
Funcionamento – Exemplo
Contudo, nem todo valor de NSW tem valor válido
em SA
Se NSW = az, não há valor válido para SA
NSW → SA não é consistente
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 18 / 43
Consistência de Arestas
Funcionamento – Exemplo
Podemos tornar a aresta NSW → SA consistente
removendo o valor azul do domı́nio de NSW
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 19 / 43
Consistência de Arestas
Funcionamento – Exemplo
Isso, no entanto, pode ter gerado inconsistências
com os vizinhos de NSW
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 20 / 43
Consistência de Arestas
Funcionamento – Exemplo
Isso, no entanto, pode ter gerado inconsistências
com os vizinhos de NSW
Não há valor válido em NSW para V = vm
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 20 / 43
Consistência de Arestas
Funcionamento – Exemplo
Isso, no entanto, pode ter gerado inconsistências
com os vizinhos de NSW
Não há valor válido em NSW para V = vm
Repetimos então o processo
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 20 / 43
Consistência de Arestas
Funcionamento – Exemplo
Continuando de outra aresta (no mesmo passo da
busca):
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 21 / 43
Consistência de Arestas
Funcionamento – Exemplo
Continuando de outra aresta (no mesmo passo da
busca):
Azul deve ser apagado ou de SA ou de NT → domı́nio vazio
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 21 / 43
Consistência de Arestas
Funcionamento – Exemplo
Continuando de outra aresta (no mesmo passo da
busca):
Azul deve ser apagado ou de SA ou de NT → domı́nio vazio
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 21 / 43
Consistência de Arestas
Funcionamento – Exemplo
Continuando de outra aresta (no mesmo passo da
busca):
Azul deve ser apagado ou de SA ou de NT → domı́nio vazio
Repetimos até tratarmos todas as possı́veis inconsistências
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 21 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
WA → NT ok
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
NT → WA falhou
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
Removemos a cor problemática
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
WA → SA ok
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
SA → WA falhou
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
Removemos a cor problemática
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
Como removemos valores de NT
e SA, verificamos seus vizinhos
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
NT → Q ok
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
Q → NT ok
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
NT → SA ok
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
SA → NT ok
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
SA → Q ok
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
Q → SA ok
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
SA → NSW ok
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
NSW → SA ok
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
SA → V ok
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
V → SA ok
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Voltemos ao exemplo da aula passada
Definimos a cor da primeira variável
Verificamos as arestas, removendo cores que geram
inconsistências
Arestas consistentes!
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Definimos a próxima variável e sua cor
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Definimos a próxima variável e sua cor
Q = vd
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Definimos a próxima variável e sua cor
Q = vd
Verificamos as arestas, removendo cores que geram
inconsistências
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Definimos a próxima variável e sua cor
Q = vd
Verificamos as arestas, removendo cores que geram
inconsistências
Q → NT ok
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Definimos a próxima variável e sua cor
Q = vd
Verificamos as arestas, removendo cores que geram
inconsistências
NT → Q falhou
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Definimos a próxima variável e sua cor
Q = vd
Verificamos as arestas, removendo cores que geram
inconsistências
Removemos a
cor problemática
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Definimos a próxima variável e sua cor
Q = vd
Verificamos as arestas, removendo cores que geram
inconsistências
Q → SA ok
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Definimos a próxima variável e sua cor
Q = vd
Verificamos as arestas, removendo cores que geram
inconsistências
SA → Q falhou
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Definimos a próxima variável e sua cor
Q = vd
Verificamos as arestas, removendo cores que geram
inconsistências
Removemos a
cor problemática
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Definimos a próxima variável e sua cor
Q = vd
Verificamos as arestas, removendo cores que geram
inconsistências
Q → NSW ok
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Definimos a próxima variável e sua cor
Q = vd
Verificamos as arestas, removendo cores que geram
inconsistências
NSW → Q falhou
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Definimos a próxima variável e sua cor
Q = vd
Verificamos as arestas, removendo cores que geram
inconsistências
Removemos a
cor problemática
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Definimos a próxima variável e sua cor
Q = vd
Verificamos as arestas, removendo cores que geram
inconsistências
Como removemos valores
de NT, SA e NSW ,
verificamos seus vizinhos
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Definimos a próxima variável e sua cor
Q = vd
Verificamos as arestas, removendo cores que geram
inconsistências
NT → SA falhou
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Definimos a próxima variável e sua cor
Q = vd
Verificamos as arestas, removendo cores que geram
inconsistências
Removemos a
cor problemática
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Definimos a próxima variável e sua cor
Q = vd
Verificamos as arestas, removendo cores que geram
inconsistências
Não temos mais como
atribuir cor a NT
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
B.S. com Consistência de Arestas
Exemplo (sem heurı́sticas)
Definimos a próxima variável e sua cor
Q = vd
Verificamos as arestas, removendo cores que geram
inconsistências
Teremos que voltar e
atribuir outra cor a Q
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
B.S. com Consistência de Arestas
Consistência × Forward Checking
Note que a inconsistência foi notada antes de
escolhermos uma nova variável
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 24 / 43
B.S. com Consistência de Arestas
Consistência × Forward Checking
Note que a inconsistência foi notada antes de
escolhermos uma nova variável
forward checking falha somente após escolhermos a próxima
variável (V = az)
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 24 / 43
Consistência de Arestas
Algoritmo AC-3 (Arc Consistency - 3)
Função AC-3(csp, Xi ): boolean
f ← fila das arestas ligadas a Xi
enquanto f não vazia faça
(Xi , Xj ) ← REMOVE PRIMEIRA(f )
se REVISAR(csp, Xi , Xj ) então
se DOMÍNIO(Xi ) = ∅ então
retorna F
para cada Xk em VIZINHOS(Xi ) − {Xj } faça
Adicione (Xk, Xi ) a f
retorna V
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 25 / 43
Consistência de Arestas
Algoritmo AC-3 (Arc Consistency - 3)
Grafo do problema
Função AC-3(csp, Xi ): boolean
f ← fila das arestas ligadas a Xi
enquanto f não vazia faça
(Xi , Xj ) ← REMOVE PRIMEIRA(f )
se REVISAR(csp, Xi , Xj ) então
se DOMÍNIO(Xi ) = ∅ então
retorna F
para cada Xk em VIZINHOS(Xi ) − {Xj } faça
Adicione (Xk, Xi ) a f
retorna V
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 25 / 43
Consistência de Arestas
Algoritmo AC-3 (Arc Consistency - 3)
Nó a partir do qual
iniciamos o algoritmo
Função AC-3(csp, Xi ): boolean
f ← fila das arestas ligadas a Xi
enquanto f não vazia faça
(Xi , Xj ) ← REMOVE PRIMEIRA(f )
se REVISAR(csp, Xi , Xj ) então
se DOMÍNIO(Xi ) = ∅ então
retorna F
para cada Xk em VIZINHOS(Xi ) − {Xj } faça
Adicione (Xk, Xi ) a f
retorna V
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 25 / 43
Consistência de Arestas
Algoritmo AC-3 (Arc Consistency - 3)
Retorna F se alguma
variável terminar sem
opção de valores (in-
consistência). Caso
contrário, retorna V
Função AC-3(csp, Xi ): boolean
f ← fila das arestas ligadas a Xi
enquanto f não vazia faça
(Xi , Xj ) ← REMOVE PRIMEIRA(f )
se REVISAR(csp, Xi , Xj ) então
se DOMÍNIO(Xi ) = ∅ então
retorna F
para cada Xk em VIZINHOS(Xi ) − {Xj } faça
Adicione (Xk, Xi ) a f
retorna V
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 25 / 43
Consistência de Arestas
Algoritmo AC-3 (Arc Consistency - 3)
Se o grafo for bidirecional,
isso significa as arestas
(Xi , Xj ) e (Xj , Xi ), para
todo Xj vizinho de Xi
Função AC-3(csp, Xi ): boolean
f ← fila das arestas ligadas a Xi
enquanto f não vazia faça
(Xi , Xj ) ← REMOVE PRIMEIRA(f )
se REVISAR(csp, Xi , Xj ) então
se DOMÍNIO(Xi ) = ∅ então
retorna F
para cada Xk em VIZINHOS(Xi ) − {Xj } faça
Adicione (Xk, Xi ) a f
retorna V
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 25 / 43
Consistência de Arestas
Algoritmo AC-3 (Arc Consistency - 3)
Indica se houve mudança
em alguma variável,
caso em que precisa-
mos revisar as arestas
Função AC-3(csp, Xi ): boolean
f ← fila das arestas ligadas a Xi
enquanto f não vazia faça
(Xi , Xj ) ← REMOVE PRIMEIRA(f )
se REVISAR(csp, Xi , Xj ) então
se DOMÍNIO(Xi ) = ∅ então
retorna F
para cada Xk em VIZINHOS(Xi ) − {Xj } faça
Adicione (Xk, Xi ) a f
retorna V
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 25 / 43
Consistência de Arestas
Algoritmo AC-3 (Arc Consistency - 3)
Função REVISAR(csp, Xi , Xj ): boolean
revisado ← F
para cada valor x em DOMÍNIO(Xi ) faça
se não houver valor y ∈ DOMÍNIO(Xj ) que satisfaça a
restrição entre Xi e Xj então
Apague x de DOMÍNIO(Xi )
revisado ← V
retorna revisado
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 26 / 43
Consistência de Arestas
Algoritmo AC-3 (Arc Consistency - 3)
Trata somente
da aresta (Xi , Xj )
Função REVISAR(csp, Xi , Xj ): boolean
revisado ← F
para cada valor x em DOMÍNIO(Xi ) faça
se não houver valor y ∈ DOMÍNIO(Xj ) que satisfaça a
restrição entre Xi e Xj então
Apague x de DOMÍNIO(Xi )
revisado ← V
retorna revisado
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 26 / 43
Consistência de Arestas
Algoritmo AC-3 (Arc Consistency - 3)
Retorna T somente
se precisarmos revi-
sar o domı́nio de Xi
Função REVISAR(csp, Xi , Xj ): boolean
revisado ← F
para cada valor x em DOMÍNIO(Xi ) faça
se não houver valor y ∈ DOMÍNIO(Xj ) que satisfaça a
restrição entre Xi e Xj então
Apague x de DOMÍNIO(Xi )
revisado ← V
retorna revisado
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 26 / 43
Consistência de Arestas
Onde utilizar
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 27 / 43
Consistência de Arestas
Onde utilizar
Como um pré-processador do grafo, antes da busca
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 27 / 43
Consistência de Arestas
Onde utilizar
Como um pré-processador do grafo, antes da busca
Nesse caso, f receberá todas as arestas do grafo,
inicialmente
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 27 / 43
Consistência de Arestas
Onde utilizar
Como um pré-processador do grafo, antes da busca
Nesse caso, f receberá todas as arestas do grafo,
inicialmente
A cada passo da busca
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 27 / 43
Consistência de Arestas
Onde utilizar
Como um pré-processador do grafo, antes da busca
Nesse caso, f receberá todas as arestas do grafo,
inicialmente
A cada passo da busca
Após atribuirmos um valor a uma variável, como fizemos
com o forward checking
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 27 / 43
Consistência de Arestas
Problema
Não necessariamente Consistência de Arestas
aponta de antemão todas as possı́veis
inconsistências
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 28 / 43
Consistência de Arestas
Problema
Não necessariamente Consistência de Arestas
aponta de antemão todas as possı́veis
inconsistências
Ex: considere a sequência de escolhas
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 28 / 43
Consistência de Arestas
Problema
Não necessariamente Consistência de Arestas
aponta de antemão todas as possı́veis
inconsistências
Ex: considere a sequência de escolhas
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 28 / 43
Consistência de Arestas
Problema
Não necessariamente Consistência de Arestas
aponta de antemão todas as possı́veis
inconsistências
Ex: considere a sequência de escolhas
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 28 / 43
Consistência de Arestas
Problema
Não necessariamente Consistência de Arestas
aponta de antemão todas as possı́veis
inconsistências
Ex: considere a sequência de escolhas
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 28 / 43
Consistência de Arestas
Problema
Não necessariamente Consistência de Arestas
aponta de antemão todas as possı́veis
inconsistências
Ex: considere a sequência de escolhas
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 28 / 43
Consistência de Arestas
Problema
Não necessariamente Consistência de Arestas
aponta de antemão todas as possı́veis
inconsistências
Ex: considere a sequência de escolhas
Inconsistência! E
não foi apontada
pelo algoritmo.
Fonte: Adaptado dos slides de AIMA. Russell & Norvig.
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 28 / 43
Consistência de Arestas
Forward Checking × Consistência de Arestas
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
Consistência de Arestas
Forward Checking × Consistência de Arestas
Forward checking:
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
Consistência de Arestas
Forward Checking × Consistência de Arestas
Forward checking:
Propaga as restrições apenas aos vizinhos de variáveis com
valor
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
Consistência de Arestas
Forward Checking × Consistência de Arestas
Forward checking:
Propaga as restrições apenas aos vizinhos de variáveis com
valor
Não é a técnica mais eficiente
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
Consistência de Arestas
Forward Checking × Consistência de Arestas
Forward checking:
Propaga as restrições apenas aos vizinhos de variáveis com
valor
Não é a técnica mais eficiente
Evita propagar as restrições no grafo todo
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
Consistência de Arestas
Forward Checking × Consistência de Arestas
Forward checking:
Propaga as restrições apenas aos vizinhos de variáveis com
valor
Não é a técnica mais eficiente
Evita propagar as restrições no grafo todo
Consistência de arestas:
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
Consistência de Arestas
Forward Checking × Consistência de Arestas
Forward checking:
Propaga as restrições apenas aos vizinhos de variáveis com
valor
Não é a técnica mais eficiente
Evita propagar as restrições no grafo todo
Consistência de arestas:
Propaga as restrições ao grafo como um todo
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
Consistência de Arestas
Forward Checking × Consistência de Arestas
Forward checking:
Propaga as restrições apenas aos vizinhos de variáveis com
valor
Não é a técnica mais eficiente
Evita propagar as restrições no grafo todo
Consistência de arestas:
Propaga as restrições ao grafo como um todo
Detecta falhas antes do forward checking
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
Consistência de Arestas
Forward Checking × Consistência de Arestas
Forward checking:
Propaga as restrições apenas aos vizinhos de variáveis com
valor
Não é a técnica mais eficiente
Evita propagar as restrições no grafo todo
Consistência de arestas:
Propaga as restrições ao grafo como um todo
Detecta falhas antes do forward checking
Não revela toda inconsistência possı́vel
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
Problemas de Solução de Restrições
Metodologia Geral
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 30 / 43
Problemas de Solução de Restrições
Metodologia Geral
Use busca retroativa para resolver o problema
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 30 / 43
Problemas de Solução de Restrições
Metodologia Geral
Use busca retroativa para resolver o problema
A cada passo da busca
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 30 / 43
Problemas de Solução de Restrições
Metodologia Geral
Use busca retroativa para resolver o problema
A cada passo da busca
Use um método de propagação de restrições para propagar
os efeitos de cada tentativa de associação de valor a uma
variável
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 30 / 43
Problemas de Solução de Restrições
Metodologia Geral
Use busca retroativa para resolver o problema
A cada passo da busca
Use um método de propagação de restrições para propagar
os efeitos de cada tentativa de associação de valor a uma
variável
Forward checking ou Consistência de arestas
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 30 / 43
Constraint Satisfaction Problems
Vantagens
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 31 / 43
Constraint Satisfaction Problems
Vantagens
Podem ser mais rápidos que uma busca tradicional
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 31 / 43
Constraint Satisfaction Problems
Vantagens
Podem ser mais rápidos que uma busca tradicional
Reduzem o número de ramos considerados na árvore original
(com todas as possibilidades)
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 31 / 43
Constraint Satisfaction Problems
Vantagens
Podem ser mais rápidos que uma busca tradicional
Reduzem o número de ramos considerados na árvore original
(com todas as possibilidades)
Ao dar valor a uma variável, podemos eliminar várias outras
combinações que seriam tentadas por uma busca
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 31 / 43
Constraint Satisfaction Problems
Vantagens
Podem ser mais rápidos que uma busca tradicional
Reduzem o número de ramos considerados na árvore original
(com todas as possibilidades)
Ao dar valor a uma variável, podemos eliminar várias outras
combinações que seriam tentadas por uma busca
Uma vez que saibamos que uma associação parcial não é
uma solução, podemos descartar refinamentos posteriores
desta
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 31 / 43
Constraint Satisfaction Problems
Vantagens
Podemos ver por que uma associação parcial não é
uma solução
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 32 / 43
Constraint Satisfaction Problems
Vantagens
Podemos ver por que uma associação parcial não é
uma solução
Podemos ver que variáveis violam quais restrições
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 32 / 43
Constraint Satisfaction Problems
Vantagens
Podemos ver por que uma associação parcial não é
uma solução
Podemos ver que variáveis violam quais restrições
E assim focar nossa atenção nas variáveis que importam
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 32 / 43
CSP – Busca Local
Formulação
Busca local (ex: Subida da encosta) pode ser usada
com CSPs
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 33 / 43
CSP – Busca Local
Formulação
Busca local (ex: Subida da encosta) pode ser usada
com CSPs
Nesse caso, usam uma formulação de estado
completo para o problema:
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 33 / 43
CSP – Busca Local
Formulação
Busca local (ex: Subida da encosta) pode ser usada
com CSPs
Nesse caso, usam uma formulação de estado
completo para o problema:
Cada nó é uma associação completa de variáveis
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 33 / 43
CSP – Busca Local
Formulação
Busca local (ex: Subida da encosta) pode ser usada
com CSPs
Nesse caso, usam uma formulação de estado
completo para o problema:
Cada nó é uma associação completa de variáveis
Não necessariamente uma solução (pode haver conflitos)
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 33 / 43
CSP – Busca Local
Formulação
Busca local (ex: Subida da encosta) pode ser usada
com CSPs
Nesse caso, usam uma formulação de estado
completo para o problema:
Cada nó é uma associação completa de variáveis
Não necessariamente uma solução (pode haver conflitos)
O estado inicial associa então um valor a cada variável
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 33 / 43
CSP – Busca Local
Formulação
Busca local (ex: Subida da encosta) pode ser usada
com CSPs
Nesse caso, usam uma formulação de estado
completo para o problema:
Cada nó é uma associação completa de variáveis
Não necessariamente uma solução (pode haver conflitos)
O estado inicial associa então um valor a cada variável
Tipicamente, violando várias restrições
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 33 / 43
CSP – Busca Local
Formulação
Busca local (ex: Subida da encosta) pode ser usada
com CSPs
Nesse caso, usam uma formulação de estado
completo para o problema:
Cada nó é uma associação completa de variáveis
Não necessariamente uma solução (pode haver conflitos)
O estado inicial associa então um valor a cada variável
Tipicamente, violando várias restrições
O objetivo da busca é eliminar as violações de restrições
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 33 / 43
CSP – Busca Local
Formulação
Para ir de um estado a outro, o algoritmo de busca
muda o valor de uma variável de cada vez:
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 34 / 43
CSP – Busca Local
Formulação
Para ir de um estado a outro, o algoritmo de busca
muda o valor de uma variável de cada vez:
Seleciona aleatoriamente uma variável com conflitos (seleção
de variável)
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 34 / 43
CSP – Busca Local
Formulação
Para ir de um estado a outro, o algoritmo de busca
muda o valor de uma variável de cada vez:
Seleciona aleatoriamente uma variável com conflitos (seleção
de variável)
Atribui novo valor a ela
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 34 / 43
CSP – Busca Local
Formulação
Para ir de um estado a outro, o algoritmo de busca
muda o valor de uma variável de cada vez:
Seleciona aleatoriamente uma variável com conflitos (seleção
de variável)
Atribui novo valor a ela
A questão então é: que valor escolher para uma
variável com conflitos?
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 34 / 43
CSP – Busca Local
Formulação
Para ir de um estado a outro, o algoritmo de busca
muda o valor de uma variável de cada vez:
Seleciona aleatoriamente uma variável com conflitos (seleção
de variável)
Atribui novo valor a ela
A questão então é: que valor escolher para uma
variável com conflitos?
Aquele que resultar no menor número de conflitos com
outras variáveis
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 34 / 43
CSP – Busca Local
Formulação
Para ir de um estado a outro, o algoritmo de busca
muda o valor de uma variável de cada vez:
Seleciona aleatoriamente uma variável com conflitos (seleção
de variável)
Atribui novo valor a ela
A questão então é: que valor escolher para uma
variável com conflitos?
Aquele que resultar no menor número de conflitos com
outras variáveis
Heurı́stica dos conflitos mı́nimos (Min-Conflicts)
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 34 / 43
CSP – Busca Local
Min-conflicts
Trata-se de uma subida da encosta
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 35 / 43
CSP – Busca Local
Min-conflicts
Trata-se de uma subida da encosta
Escolhe sempre o valor que viola o menor número de
restrições
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 35 / 43
CSP – Busca Local
Min-conflicts
Trata-se de uma subida da encosta
Escolhe sempre o valor que viola o menor número de
restrições
Se move em direção ao menor número de restrições violadas
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 35 / 43
CSP – Busca Local
Min-conflicts
Trata-se de uma subida da encosta
Escolhe sempre o valor que viola o menor número de
restrições
Se move em direção ao menor número de restrições violadas
Usada no Hubble para agendar uma semana de
observações
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 35 / 43
CSP – Busca Local
Min-conflicts
Trata-se de uma subida da encosta
Escolhe sempre o valor que viola o menor número de
restrições
Se move em direção ao menor número de restrições violadas
Usada no Hubble para agendar uma semana de
observações
Reduziu de 3 semanas para 10 minutos o tempo de
agendamento
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 35 / 43
CSP – Busca Local
Min-conflicts – Algoritmo
Função MIN-CONFLICTS(csp, max): solução
atual ← uma associação inicial completa para csp
para i=1 até max faça
se atual é solução para csp então
retorna atual
var ← escolha aleatoriamente uma variável com conflitos
valor ← escolha o valor para var que viola o menor número
de restrições com outras variáveis
Faça var ← valor em atual
retorna falha
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 36 / 43
CSP – Busca Local
Min-conflicts – Algoritmo
Número máximo de passos
antes de desistirmos
Função MIN-CONFLICTS(csp, max): solução
atual ← uma associação inicial completa para csp
para i=1 até max faça
se atual é solução para csp então
retorna atual
var ← escolha aleatoriamente uma variável com conflitos
valor ← escolha o valor para var que viola o menor número
de restrições com outras variáveis
Faça var ← valor em atual
retorna falha
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 36 / 43
CSP – Busca Local
Min-conflicts – Algoritmo
Queremos introduzir o
menor número de conflitos
Função MIN-CONFLICTS(csp, max): solução
atual ← uma associação inicial completa para csp
para i=1 até max faça
se atual é solução para csp então
retorna atual
var ← escolha aleatoriamente uma variável com conflitos
valor ← escolha o valor para var que viola o menor número
de restrições com outras variáveis
Faça var ← valor em atual
retorna falha
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 36 / 43
CSP – Busca Local
Min-conflicts – Algoritmo
Se ainda não tiver
uma associação válida,
tente uma nova variável
Função MIN-CONFLICTS(csp, max): solução
atual ← uma associação inicial completa para csp
para i=1 até max faça
se atual é solução para csp então
retorna atual
var ← escolha aleatoriamente uma variável com conflitos
valor ← escolha o valor para var que viola o menor número
de restrições com outras variáveis
Faça var ← valor em atual
retorna falha
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 36 / 43
CSP – Busca Local
Min-conflicts – Exemplo
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 37 / 43
CSP – Busca Local
Min-conflicts – Exemplo
Geramos um valor aleatório para as variáveis
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 37 / 43
CSP – Busca Local
Min-conflicts – Exemplo
Geramos um valor aleatório para as variáveis
Verificamos quais estão em conflito
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 37 / 43
CSP – Busca Local
Min-conflicts – Exemplo
Geramos um valor aleatório para as variáveis
Verificamos quais estão em conflito
Escolhemos uma variável conflitante (WA) e
trocamos seu valor (pelo que gerar menos conflitos)
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 37 / 43
CSP – Busca Local
Min-conflicts – Exemplo
Geramos um valor aleatório para as variáveis
Verificamos quais estão em conflito
Escolhemos uma variável conflitante (WA) e
trocamos seu valor (pelo que gerar menos conflitos)
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 37 / 43
CSP – Busca Local
Min-conflicts – Exemplo
Verificamos novamente os conflitos
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 38 / 43
CSP – Busca Local
Min-conflicts – Exemplo
Verificamos novamente os conflitos
Escolhemos uma variável conflitante (NSW) e
trocamos seu valor
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 38 / 43
CSP – Busca Local
Min-conflicts – Exemplo
Verificamos novamente os conflitos
Escolhemos uma variável conflitante (NSW) e
trocamos seu valor
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 38 / 43
CSP – Busca Local
Min-conflicts – Exemplo
Verificamos novamente os conflitos
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 39 / 43
CSP – Busca Local
Min-conflicts – Exemplo
Verificamos novamente os conflitos
Escolhemos uma variável conflitante (Q) e trocamos
seu valor
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 39 / 43
CSP – Busca Local
Min-conflicts – Exemplo
Verificamos novamente os conflitos
Escolhemos uma variável conflitante (Q) e trocamos
seu valor
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 39 / 43
CSP – Busca Local
Min-conflicts – Exemplo
Verificamos novamente os conflitos
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 40 / 43
CSP – Busca Local
Min-conflicts – Exemplo
Verificamos novamente os conflitos
Escolhemos uma variável conflitante (NT) e
trocamos seu valor
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 40 / 43
CSP – Busca Local
Min-conflicts – Exemplo
Verificamos novamente os conflitos
Escolhemos uma variável conflitante (NT) e
trocamos seu valor
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 40 / 43
CSP – Busca Local
Min-conflicts – Exemplo
Verificamos novamente os conflitos
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 41 / 43
CSP – Busca Local
Min-conflicts – Exemplo
Verificamos novamente os conflitos
Escolhemos uma variável conflitante (WA) e
trocamos seu valor
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 41 / 43
CSP – Busca Local
Min-conflicts – Exemplo
Verificamos novamente os conflitos
Escolhemos uma variável conflitante (WA) e
trocamos seu valor
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 41 / 43
CSP – Busca Local
Min-conflicts – Exemplo
Verificamos novamente os conflitos
Escolhemos uma variável conflitante (WA) e
trocamos seu valor
Achamos uma resposta
WA NT Q NSW V SA T
WA
SA
NT
Q
NSW
V T
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 41 / 43
CSP – Busca Local
Vantagem
Pode ser usada em ambientes de tempo real para
problemas dinâmicos
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 42 / 43
CSP – Busca Local
Vantagem
Pode ser usada em ambientes de tempo real para
problemas dinâmicos
Ex: Agendamento de voos
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 42 / 43
CSP – Busca Local
Vantagem
Pode ser usada em ambientes de tempo real para
problemas dinâmicos
Ex: Agendamento de voos
Em uma semana, podemos ter que escalonar milhares de
voos e tripulantes
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 42 / 43
CSP – Busca Local
Vantagem
Pode ser usada em ambientes de tempo real para
problemas dinâmicos
Ex: Agendamento de voos
Em uma semana, podemos ter que escalonar milhares de
voos e tripulantes
Mas um mau tempo imprevisto pode alterar todo o problema
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 42 / 43
CSP – Busca Local
Vantagem
Pode ser usada em ambientes de tempo real para
problemas dinâmicos
Ex: Agendamento de voos
Em uma semana, podemos ter que escalonar milhares de
voos e tripulantes
Mas um mau tempo imprevisto pode alterar todo o problema
Teremos que consertar a agenda com o menor número
possı́vel de mudanças (min-conflicts)
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 42 / 43
CSP – Busca Local
Vantagem
Pode ser usada em ambientes de tempo real para
problemas dinâmicos
Ex: Agendamento de voos
Em uma semana, podemos ter que escalonar milhares de
voos e tripulantes
Mas um mau tempo imprevisto pode alterar todo o problema
Teremos que consertar a agenda com o menor número
possı́vel de mudanças (min-conflicts)
Basta rodarmos o algoritmo começando da agenda atual
Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 42 / 43
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) 21 de março de 2019 43 / 43

Mais conteúdo relacionado

Mais procurados (8)

(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 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10
 
(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 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15
 
(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21
 
(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22
 
Pronomes demonst
Pronomes demonstPronomes demonst
Pronomes demonst
 

Mais de Norton Trevisan Roman

Mais de Norton Trevisan Roman (15)

(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24
 
(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23
 
(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

Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
FabianeMartins35
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
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
tatianehilda
 
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
AntonioVieira539017
 

Último (20)

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
 
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
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptx
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptx
 
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
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
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
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
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
 
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*
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
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
 
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 ...
 

(ACH2044) Inteligência Artificial - Aula 07

  • 1. Inteligência Artificial – ACH2016 Aula 07 – Problemas de Satisfação de Restrições II Norton Trevisan Roman (norton@usp.br) 21 de março de 2019 Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 1 / 43
  • 2. Backtracking Search – Exemplo Busca + forward checking + heurı́sticas Vamos ver agora o algoritmo de busca retroativa com forward checking, usando as heurı́sticas: Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 2 / 43
  • 3. Backtracking Search – Exemplo Busca + forward checking + heurı́sticas Vamos ver agora o algoritmo de busca retroativa com forward checking, usando as heurı́sticas: Valores restantes mı́nimos Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 2 / 43
  • 4. Backtracking Search – Exemplo Busca + forward checking + heurı́sticas Vamos ver agora o algoritmo de busca retroativa com forward checking, usando as heurı́sticas: Valores restantes mı́nimos Grau Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 2 / 43
  • 5. Backtracking Search – Exemplo Busca + forward checking + heurı́sticas Vamos ver agora o algoritmo de busca retroativa com forward checking, usando as heurı́sticas: Valores restantes mı́nimos Grau Valor Menos Restritivo Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 2 / 43
  • 6. Backtracking Search – Exemplo Busca + forward checking + heurı́sticas Vamos ver agora o algoritmo de busca retroativa com forward checking, usando as heurı́sticas: Valores restantes mı́nimos Grau Valor Menos Restritivo Fonte: Slides de AIMA. Russell & Norvig. Suponha que temos o mesmo problema de coloração Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 2 / 43
  • 7. Backtracking Search – Exemplo Busca + forward checking + heurı́sticas Vamos ver agora o algoritmo de busca retroativa com forward checking, usando as heurı́sticas: Valores restantes mı́nimos Grau Valor Menos Restritivo Fonte: Slides de AIMA. Russell & Norvig. Suponha que temos o mesmo problema de coloração Mas com restrições adicionais: Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 2 / 43
  • 8. Backtracking Search – Exemplo Busca + forward checking + heurı́sticas Vamos ver agora o algoritmo de busca retroativa com forward checking, usando as heurı́sticas: Valores restantes mı́nimos Grau Valor Menos Restritivo Fonte: Slides de AIMA. Russell & Norvig. Suponha que temos o mesmo problema de coloração Mas com restrições adicionais: NT e SA não aceitam azul Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 2 / 43
  • 9. Backtracking Search – Exemplo Passo 1: Definir variável e seu valor Quem pintar? Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
  • 10. Backtracking Search – Exemplo Passo 1: Definir variável e seu valor Quem pintar? VRM: Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
  • 11. Backtracking Search – Exemplo Passo 1: Definir variável e seu valor Quem pintar? VRM: NT ou SA Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
  • 12. Backtracking Search – Exemplo Passo 1: Definir variável e seu valor Quem pintar? VRM: NT ou SA Grau: Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
  • 13. Backtracking Search – Exemplo Passo 1: Definir variável e seu valor Quem pintar? VRM: NT ou SA Grau: SA Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
  • 14. Backtracking Search – Exemplo Passo 1: Definir variável e seu valor Quem pintar? VRM: NT ou SA Grau: SA De que cor? Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
  • 15. Backtracking Search – Exemplo Passo 1: Definir variável e seu valor Quem pintar? VRM: NT ou SA Grau: SA De que cor? VMR: Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
  • 16. Backtracking Search – Exemplo Passo 1: Definir variável e seu valor Quem pintar? VRM: NT ou SA Grau: SA De que cor? VMR: vm ou vd Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
  • 17. Backtracking Search – Exemplo Passo 1: Definir variável e seu valor Quem pintar? VRM: NT ou SA Grau: SA De que cor? VMR: vm ou vd Escolha: Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
  • 18. Backtracking Search – Exemplo Passo 1: Definir variável e seu valor Quem pintar? VRM: NT ou SA Grau: SA De que cor? VMR: vm ou vd Escolha: SA = vm Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 3 / 43
  • 19. Backtracking Search – Exemplo Passo 2: Propagar Propague essa escolha para os vizinhos do nó no grafo de restrição Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 4 / 43
  • 20. Backtracking Search – Exemplo Passo 2: Propagar Propague essa escolha para os vizinhos do nó no grafo de restrição Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 4 / 43
  • 21. Backtracking Search – Exemplo Passo 2: Propagar Propague essa escolha para os vizinhos do nó no grafo de restrição Repita a operação Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 4 / 43
  • 22. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 5 / 43
  • 23. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 5 / 43
  • 24. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: NT Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 5 / 43
  • 25. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: NT De que cor? Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 5 / 43
  • 26. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: NT De que cor? vd (não há outra) Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 5 / 43
  • 27. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: NT De que cor? vd (não há outra) Escolha: Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 5 / 43
  • 28. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: NT De que cor? vd (não há outra) Escolha: NT = vd Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 5 / 43
  • 29. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: NT De que cor? vd (não há outra) Escolha: NT = vd Propagar Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 5 / 43
  • 30. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
  • 31. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
  • 32. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou Q Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
  • 33. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou Q Grau: Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
  • 34. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou Q Grau: Q (grau 1) Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
  • 35. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou Q Grau: Q (grau 1) De que cor? Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
  • 36. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou Q Grau: Q (grau 1) De que cor? az (não há outra) Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
  • 37. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou Q Grau: Q (grau 1) De que cor? az (não há outra) Escolha: Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
  • 38. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou Q Grau: Q (grau 1) De que cor? az (não há outra) Escolha: Q = az Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
  • 39. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou Q Grau: Q (grau 1) De que cor? az (não há outra) Escolha: Q = az Propagar Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 6 / 43
  • 40. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
  • 41. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
  • 42. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou NSW Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
  • 43. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou NSW Grau: Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
  • 44. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou NSW Grau: NSW (grau 1) Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
  • 45. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou NSW Grau: NSW (grau 1) De que cor? Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
  • 46. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou NSW Grau: NSW (grau 1) De que cor? vd (não há outra) Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
  • 47. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou NSW Grau: NSW (grau 1) De que cor? vd (não há outra) Escolha: Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
  • 48. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou NSW Grau: NSW (grau 1) De que cor? vd (não há outra) Escolha: NSW = vd Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
  • 49. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou NSW Grau: NSW (grau 1) De que cor? vd (não há outra) Escolha: NSW = vd Propagar Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 7 / 43
  • 50. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
  • 51. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
  • 52. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou V Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
  • 53. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou V Grau: Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
  • 54. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou V Grau: WA ou V → WA Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
  • 55. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou V Grau: WA ou V → WA De que cor? Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
  • 56. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou V Grau: WA ou V → WA De que cor? az (não há outra) Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
  • 57. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou V Grau: WA ou V → WA De que cor? az (não há outra) Escolha: Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
  • 58. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou V Grau: WA ou V → WA De que cor? az (não há outra) Escolha: WA = az Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
  • 59. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: WA ou V Grau: WA ou V → WA De que cor? az (não há outra) Escolha: WA = az Propagar Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 8 / 43
  • 60. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 9 / 43
  • 61. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 9 / 43
  • 62. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: V Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 9 / 43
  • 63. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: V De que cor? Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 9 / 43
  • 64. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: V De que cor? az (não há outra) Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 9 / 43
  • 65. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: V De que cor? az (não há outra) Escolha: Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 9 / 43
  • 66. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: V De que cor? az (não há outra) Escolha: V = az Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 9 / 43
  • 67. Backtracking Search – Exemplo Definir variável e seu valor e propagar Quem pintar? VRM: V De que cor? az (não há outra) Escolha: V = az Propagar Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 9 / 43
  • 68. Backtracking Search – Exemplo Definir variável e seu valor e propagar Por fim, sobra apenas T Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 10 / 43
  • 69. Backtracking Search – Exemplo Definir variável e seu valor e propagar Por fim, sobra apenas T Podemos dar qualquer cor a ela... Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 10 / 43
  • 70. Backtracking Search Em suma... O processo é repetido até: Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 11 / 43
  • 71. Backtracking Search Em suma... O processo é repetido até: Terminar o grafo, ou Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 11 / 43
  • 72. Backtracking Search Em suma... O processo é repetido até: Terminar o grafo, ou Encontrar nó sem opções Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 11 / 43
  • 73. Backtracking Search Em suma... O processo é repetido até: Terminar o grafo, ou Encontrar nó sem opções Nesse último caso: Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 11 / 43
  • 74. Backtracking Search Em suma... O processo é repetido até: Terminar o grafo, ou Encontrar nó sem opções Nesse último caso: Volta ao nó pai (backtracking) Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 11 / 43
  • 75. Backtracking Search Em suma... O processo é repetido até: Terminar o grafo, ou Encontrar nó sem opções Nesse último caso: Volta ao nó pai (backtracking) Escolhe outro valor para a variável problemática Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 11 / 43
  • 76. Backtracking Search Em suma... O processo é repetido até: Terminar o grafo, ou Encontrar nó sem opções Nesse último caso: Volta ao nó pai (backtracking) Escolhe outro valor para a variável problemática Se não houver outro valor, volta ao pai e repete o procedimento Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 11 / 43
  • 77. Forward Checking Vantagens Reduz o número de valores considerados em cada variável ainda sem valor Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 12 / 43
  • 78. Forward Checking Vantagens Reduz o número de valores considerados em cada variável ainda sem valor Bastante eficiente se usada com a heurı́stica dos valores restantes mı́nimos Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 12 / 43
  • 79. Forward Checking Vantagens Reduz o número de valores considerados em cada variável ainda sem valor Bastante eficiente se usada com a heurı́stica dos valores restantes mı́nimos Desvantagem Embora propague a informação das variáveis com atribuição para as sem atribuição, forward checking não consegue detectar todas as falhas de antemão Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 12 / 43
  • 80. Forward Checking Desvantagem – Exemplo Considere a aplicação pura do forward checking, conforme vista na aula passada Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 13 / 43
  • 81. Forward Checking Desvantagem – Exemplo Considere a aplicação pura do forward checking, conforme vista na aula passada Ou seja, sua aplicação sem a ajuda das heurı́sticas vistas Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 13 / 43
  • 82. Forward Checking Desvantagem – Exemplo Considere a aplicação pura do forward checking, conforme vista na aula passada Ou seja, sua aplicação sem a ajuda das heurı́sticas vistas Fonte: Slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 13 / 43
  • 83. Forward Checking Desvantagem – Exemplo Quando WA = vm e Q = vd, NT e SA são forçados a serem azuis. Forward checking não olha adiante o suficiente para ver essa inconsistência Fonte: Slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 14 / 43
  • 84. Forward Checking Desvantagem – Exemplo Solução: Fonte: Slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 15 / 43
  • 85. Forward Checking Desvantagem – Exemplo Solução: Consistência de Arestas (Arc Consistency) Fonte: Slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 15 / 43
  • 86. Consistência de Arestas Arestas Consistentes Uma aresta X → Y será consistente se e somente se, para todo valor x ∈ X, houver algum valor y ∈ Y permitido Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 16 / 43
  • 87. Consistência de Arestas Arestas Consistentes Uma aresta X → Y será consistente se e somente se, para todo valor x ∈ X, houver algum valor y ∈ Y permitido Consistência de Arestas A ideia da consistência de arestas é, a cada decisão, tornar cada aresta do grafo consistente Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 16 / 43
  • 88. Consistência de Arestas Funcionamento – Exemplo Se SA = az, há um valor consistente para NSW (vermelho) Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 17 / 43
  • 89. Consistência de Arestas Funcionamento – Exemplo Se SA = az, há um valor consistente para NSW (vermelho) SA → NSW é consistente Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 17 / 43
  • 90. Consistência de Arestas Funcionamento – Exemplo Contudo, nem todo valor de NSW tem valor válido em SA Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 18 / 43
  • 91. Consistência de Arestas Funcionamento – Exemplo Contudo, nem todo valor de NSW tem valor válido em SA Se NSW = az, não há valor válido para SA Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 18 / 43
  • 92. Consistência de Arestas Funcionamento – Exemplo Contudo, nem todo valor de NSW tem valor válido em SA Se NSW = az, não há valor válido para SA NSW → SA não é consistente Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 18 / 43
  • 93. Consistência de Arestas Funcionamento – Exemplo Podemos tornar a aresta NSW → SA consistente removendo o valor azul do domı́nio de NSW Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 19 / 43
  • 94. Consistência de Arestas Funcionamento – Exemplo Isso, no entanto, pode ter gerado inconsistências com os vizinhos de NSW Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 20 / 43
  • 95. Consistência de Arestas Funcionamento – Exemplo Isso, no entanto, pode ter gerado inconsistências com os vizinhos de NSW Não há valor válido em NSW para V = vm Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 20 / 43
  • 96. Consistência de Arestas Funcionamento – Exemplo Isso, no entanto, pode ter gerado inconsistências com os vizinhos de NSW Não há valor válido em NSW para V = vm Repetimos então o processo Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 20 / 43
  • 97. Consistência de Arestas Funcionamento – Exemplo Continuando de outra aresta (no mesmo passo da busca): Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 21 / 43
  • 98. Consistência de Arestas Funcionamento – Exemplo Continuando de outra aresta (no mesmo passo da busca): Azul deve ser apagado ou de SA ou de NT → domı́nio vazio Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 21 / 43
  • 99. Consistência de Arestas Funcionamento – Exemplo Continuando de outra aresta (no mesmo passo da busca): Azul deve ser apagado ou de SA ou de NT → domı́nio vazio Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 21 / 43
  • 100. Consistência de Arestas Funcionamento – Exemplo Continuando de outra aresta (no mesmo passo da busca): Azul deve ser apagado ou de SA ou de NT → domı́nio vazio Repetimos até tratarmos todas as possı́veis inconsistências Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 21 / 43
  • 101. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 102. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 103. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 104. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências WA → NT ok Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 105. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências NT → WA falhou Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 106. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências Removemos a cor problemática Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 107. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências WA → SA ok Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 108. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências SA → WA falhou Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 109. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências Removemos a cor problemática Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 110. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências Como removemos valores de NT e SA, verificamos seus vizinhos Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 111. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências NT → Q ok Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 112. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências Q → NT ok Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 113. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências NT → SA ok Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 114. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências SA → NT ok Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 115. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências SA → Q ok Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 116. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências Q → SA ok Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 117. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências SA → NSW ok Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 118. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências NSW → SA ok Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 119. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências SA → V ok Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 120. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências V → SA ok Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 121. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Voltemos ao exemplo da aula passada Definimos a cor da primeira variável Verificamos as arestas, removendo cores que geram inconsistências Arestas consistentes! Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 22 / 43
  • 122. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Definimos a próxima variável e sua cor Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
  • 123. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Definimos a próxima variável e sua cor Q = vd Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
  • 124. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Definimos a próxima variável e sua cor Q = vd Verificamos as arestas, removendo cores que geram inconsistências Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
  • 125. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Definimos a próxima variável e sua cor Q = vd Verificamos as arestas, removendo cores que geram inconsistências Q → NT ok Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
  • 126. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Definimos a próxima variável e sua cor Q = vd Verificamos as arestas, removendo cores que geram inconsistências NT → Q falhou Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
  • 127. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Definimos a próxima variável e sua cor Q = vd Verificamos as arestas, removendo cores que geram inconsistências Removemos a cor problemática Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
  • 128. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Definimos a próxima variável e sua cor Q = vd Verificamos as arestas, removendo cores que geram inconsistências Q → SA ok Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
  • 129. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Definimos a próxima variável e sua cor Q = vd Verificamos as arestas, removendo cores que geram inconsistências SA → Q falhou Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
  • 130. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Definimos a próxima variável e sua cor Q = vd Verificamos as arestas, removendo cores que geram inconsistências Removemos a cor problemática Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
  • 131. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Definimos a próxima variável e sua cor Q = vd Verificamos as arestas, removendo cores que geram inconsistências Q → NSW ok Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
  • 132. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Definimos a próxima variável e sua cor Q = vd Verificamos as arestas, removendo cores que geram inconsistências NSW → Q falhou Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
  • 133. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Definimos a próxima variável e sua cor Q = vd Verificamos as arestas, removendo cores que geram inconsistências Removemos a cor problemática Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
  • 134. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Definimos a próxima variável e sua cor Q = vd Verificamos as arestas, removendo cores que geram inconsistências Como removemos valores de NT, SA e NSW , verificamos seus vizinhos Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
  • 135. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Definimos a próxima variável e sua cor Q = vd Verificamos as arestas, removendo cores que geram inconsistências NT → SA falhou Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
  • 136. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Definimos a próxima variável e sua cor Q = vd Verificamos as arestas, removendo cores que geram inconsistências Removemos a cor problemática Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
  • 137. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Definimos a próxima variável e sua cor Q = vd Verificamos as arestas, removendo cores que geram inconsistências Não temos mais como atribuir cor a NT Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
  • 138. B.S. com Consistência de Arestas Exemplo (sem heurı́sticas) Definimos a próxima variável e sua cor Q = vd Verificamos as arestas, removendo cores que geram inconsistências Teremos que voltar e atribuir outra cor a Q Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 23 / 43
  • 139. B.S. com Consistência de Arestas Consistência × Forward Checking Note que a inconsistência foi notada antes de escolhermos uma nova variável Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 24 / 43
  • 140. B.S. com Consistência de Arestas Consistência × Forward Checking Note que a inconsistência foi notada antes de escolhermos uma nova variável forward checking falha somente após escolhermos a próxima variável (V = az) Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 24 / 43
  • 141. Consistência de Arestas Algoritmo AC-3 (Arc Consistency - 3) Função AC-3(csp, Xi ): boolean f ← fila das arestas ligadas a Xi enquanto f não vazia faça (Xi , Xj ) ← REMOVE PRIMEIRA(f ) se REVISAR(csp, Xi , Xj ) então se DOMÍNIO(Xi ) = ∅ então retorna F para cada Xk em VIZINHOS(Xi ) − {Xj } faça Adicione (Xk, Xi ) a f retorna V Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 25 / 43
  • 142. Consistência de Arestas Algoritmo AC-3 (Arc Consistency - 3) Grafo do problema Função AC-3(csp, Xi ): boolean f ← fila das arestas ligadas a Xi enquanto f não vazia faça (Xi , Xj ) ← REMOVE PRIMEIRA(f ) se REVISAR(csp, Xi , Xj ) então se DOMÍNIO(Xi ) = ∅ então retorna F para cada Xk em VIZINHOS(Xi ) − {Xj } faça Adicione (Xk, Xi ) a f retorna V Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 25 / 43
  • 143. Consistência de Arestas Algoritmo AC-3 (Arc Consistency - 3) Nó a partir do qual iniciamos o algoritmo Função AC-3(csp, Xi ): boolean f ← fila das arestas ligadas a Xi enquanto f não vazia faça (Xi , Xj ) ← REMOVE PRIMEIRA(f ) se REVISAR(csp, Xi , Xj ) então se DOMÍNIO(Xi ) = ∅ então retorna F para cada Xk em VIZINHOS(Xi ) − {Xj } faça Adicione (Xk, Xi ) a f retorna V Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 25 / 43
  • 144. Consistência de Arestas Algoritmo AC-3 (Arc Consistency - 3) Retorna F se alguma variável terminar sem opção de valores (in- consistência). Caso contrário, retorna V Função AC-3(csp, Xi ): boolean f ← fila das arestas ligadas a Xi enquanto f não vazia faça (Xi , Xj ) ← REMOVE PRIMEIRA(f ) se REVISAR(csp, Xi , Xj ) então se DOMÍNIO(Xi ) = ∅ então retorna F para cada Xk em VIZINHOS(Xi ) − {Xj } faça Adicione (Xk, Xi ) a f retorna V Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 25 / 43
  • 145. Consistência de Arestas Algoritmo AC-3 (Arc Consistency - 3) Se o grafo for bidirecional, isso significa as arestas (Xi , Xj ) e (Xj , Xi ), para todo Xj vizinho de Xi Função AC-3(csp, Xi ): boolean f ← fila das arestas ligadas a Xi enquanto f não vazia faça (Xi , Xj ) ← REMOVE PRIMEIRA(f ) se REVISAR(csp, Xi , Xj ) então se DOMÍNIO(Xi ) = ∅ então retorna F para cada Xk em VIZINHOS(Xi ) − {Xj } faça Adicione (Xk, Xi ) a f retorna V Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 25 / 43
  • 146. Consistência de Arestas Algoritmo AC-3 (Arc Consistency - 3) Indica se houve mudança em alguma variável, caso em que precisa- mos revisar as arestas Função AC-3(csp, Xi ): boolean f ← fila das arestas ligadas a Xi enquanto f não vazia faça (Xi , Xj ) ← REMOVE PRIMEIRA(f ) se REVISAR(csp, Xi , Xj ) então se DOMÍNIO(Xi ) = ∅ então retorna F para cada Xk em VIZINHOS(Xi ) − {Xj } faça Adicione (Xk, Xi ) a f retorna V Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 25 / 43
  • 147. Consistência de Arestas Algoritmo AC-3 (Arc Consistency - 3) Função REVISAR(csp, Xi , Xj ): boolean revisado ← F para cada valor x em DOMÍNIO(Xi ) faça se não houver valor y ∈ DOMÍNIO(Xj ) que satisfaça a restrição entre Xi e Xj então Apague x de DOMÍNIO(Xi ) revisado ← V retorna revisado Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 26 / 43
  • 148. Consistência de Arestas Algoritmo AC-3 (Arc Consistency - 3) Trata somente da aresta (Xi , Xj ) Função REVISAR(csp, Xi , Xj ): boolean revisado ← F para cada valor x em DOMÍNIO(Xi ) faça se não houver valor y ∈ DOMÍNIO(Xj ) que satisfaça a restrição entre Xi e Xj então Apague x de DOMÍNIO(Xi ) revisado ← V retorna revisado Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 26 / 43
  • 149. Consistência de Arestas Algoritmo AC-3 (Arc Consistency - 3) Retorna T somente se precisarmos revi- sar o domı́nio de Xi Função REVISAR(csp, Xi , Xj ): boolean revisado ← F para cada valor x em DOMÍNIO(Xi ) faça se não houver valor y ∈ DOMÍNIO(Xj ) que satisfaça a restrição entre Xi e Xj então Apague x de DOMÍNIO(Xi ) revisado ← V retorna revisado Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 26 / 43
  • 150. Consistência de Arestas Onde utilizar Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 27 / 43
  • 151. Consistência de Arestas Onde utilizar Como um pré-processador do grafo, antes da busca Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 27 / 43
  • 152. Consistência de Arestas Onde utilizar Como um pré-processador do grafo, antes da busca Nesse caso, f receberá todas as arestas do grafo, inicialmente Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 27 / 43
  • 153. Consistência de Arestas Onde utilizar Como um pré-processador do grafo, antes da busca Nesse caso, f receberá todas as arestas do grafo, inicialmente A cada passo da busca Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 27 / 43
  • 154. Consistência de Arestas Onde utilizar Como um pré-processador do grafo, antes da busca Nesse caso, f receberá todas as arestas do grafo, inicialmente A cada passo da busca Após atribuirmos um valor a uma variável, como fizemos com o forward checking Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 27 / 43
  • 155. Consistência de Arestas Problema Não necessariamente Consistência de Arestas aponta de antemão todas as possı́veis inconsistências Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 28 / 43
  • 156. Consistência de Arestas Problema Não necessariamente Consistência de Arestas aponta de antemão todas as possı́veis inconsistências Ex: considere a sequência de escolhas Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 28 / 43
  • 157. Consistência de Arestas Problema Não necessariamente Consistência de Arestas aponta de antemão todas as possı́veis inconsistências Ex: considere a sequência de escolhas Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 28 / 43
  • 158. Consistência de Arestas Problema Não necessariamente Consistência de Arestas aponta de antemão todas as possı́veis inconsistências Ex: considere a sequência de escolhas Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 28 / 43
  • 159. Consistência de Arestas Problema Não necessariamente Consistência de Arestas aponta de antemão todas as possı́veis inconsistências Ex: considere a sequência de escolhas Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 28 / 43
  • 160. Consistência de Arestas Problema Não necessariamente Consistência de Arestas aponta de antemão todas as possı́veis inconsistências Ex: considere a sequência de escolhas Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 28 / 43
  • 161. Consistência de Arestas Problema Não necessariamente Consistência de Arestas aponta de antemão todas as possı́veis inconsistências Ex: considere a sequência de escolhas Inconsistência! E não foi apontada pelo algoritmo. Fonte: Adaptado dos slides de AIMA. Russell & Norvig. Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 28 / 43
  • 162. Consistência de Arestas Forward Checking × Consistência de Arestas Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
  • 163. Consistência de Arestas Forward Checking × Consistência de Arestas Forward checking: Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
  • 164. Consistência de Arestas Forward Checking × Consistência de Arestas Forward checking: Propaga as restrições apenas aos vizinhos de variáveis com valor Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
  • 165. Consistência de Arestas Forward Checking × Consistência de Arestas Forward checking: Propaga as restrições apenas aos vizinhos de variáveis com valor Não é a técnica mais eficiente Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
  • 166. Consistência de Arestas Forward Checking × Consistência de Arestas Forward checking: Propaga as restrições apenas aos vizinhos de variáveis com valor Não é a técnica mais eficiente Evita propagar as restrições no grafo todo Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
  • 167. Consistência de Arestas Forward Checking × Consistência de Arestas Forward checking: Propaga as restrições apenas aos vizinhos de variáveis com valor Não é a técnica mais eficiente Evita propagar as restrições no grafo todo Consistência de arestas: Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
  • 168. Consistência de Arestas Forward Checking × Consistência de Arestas Forward checking: Propaga as restrições apenas aos vizinhos de variáveis com valor Não é a técnica mais eficiente Evita propagar as restrições no grafo todo Consistência de arestas: Propaga as restrições ao grafo como um todo Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
  • 169. Consistência de Arestas Forward Checking × Consistência de Arestas Forward checking: Propaga as restrições apenas aos vizinhos de variáveis com valor Não é a técnica mais eficiente Evita propagar as restrições no grafo todo Consistência de arestas: Propaga as restrições ao grafo como um todo Detecta falhas antes do forward checking Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
  • 170. Consistência de Arestas Forward Checking × Consistência de Arestas Forward checking: Propaga as restrições apenas aos vizinhos de variáveis com valor Não é a técnica mais eficiente Evita propagar as restrições no grafo todo Consistência de arestas: Propaga as restrições ao grafo como um todo Detecta falhas antes do forward checking Não revela toda inconsistência possı́vel Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 29 / 43
  • 171. Problemas de Solução de Restrições Metodologia Geral Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 30 / 43
  • 172. Problemas de Solução de Restrições Metodologia Geral Use busca retroativa para resolver o problema Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 30 / 43
  • 173. Problemas de Solução de Restrições Metodologia Geral Use busca retroativa para resolver o problema A cada passo da busca Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 30 / 43
  • 174. Problemas de Solução de Restrições Metodologia Geral Use busca retroativa para resolver o problema A cada passo da busca Use um método de propagação de restrições para propagar os efeitos de cada tentativa de associação de valor a uma variável Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 30 / 43
  • 175. Problemas de Solução de Restrições Metodologia Geral Use busca retroativa para resolver o problema A cada passo da busca Use um método de propagação de restrições para propagar os efeitos de cada tentativa de associação de valor a uma variável Forward checking ou Consistência de arestas Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 30 / 43
  • 176. Constraint Satisfaction Problems Vantagens Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 31 / 43
  • 177. Constraint Satisfaction Problems Vantagens Podem ser mais rápidos que uma busca tradicional Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 31 / 43
  • 178. Constraint Satisfaction Problems Vantagens Podem ser mais rápidos que uma busca tradicional Reduzem o número de ramos considerados na árvore original (com todas as possibilidades) Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 31 / 43
  • 179. Constraint Satisfaction Problems Vantagens Podem ser mais rápidos que uma busca tradicional Reduzem o número de ramos considerados na árvore original (com todas as possibilidades) Ao dar valor a uma variável, podemos eliminar várias outras combinações que seriam tentadas por uma busca Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 31 / 43
  • 180. Constraint Satisfaction Problems Vantagens Podem ser mais rápidos que uma busca tradicional Reduzem o número de ramos considerados na árvore original (com todas as possibilidades) Ao dar valor a uma variável, podemos eliminar várias outras combinações que seriam tentadas por uma busca Uma vez que saibamos que uma associação parcial não é uma solução, podemos descartar refinamentos posteriores desta Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 31 / 43
  • 181. Constraint Satisfaction Problems Vantagens Podemos ver por que uma associação parcial não é uma solução Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 32 / 43
  • 182. Constraint Satisfaction Problems Vantagens Podemos ver por que uma associação parcial não é uma solução Podemos ver que variáveis violam quais restrições Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 32 / 43
  • 183. Constraint Satisfaction Problems Vantagens Podemos ver por que uma associação parcial não é uma solução Podemos ver que variáveis violam quais restrições E assim focar nossa atenção nas variáveis que importam Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 32 / 43
  • 184. CSP – Busca Local Formulação Busca local (ex: Subida da encosta) pode ser usada com CSPs Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 33 / 43
  • 185. CSP – Busca Local Formulação Busca local (ex: Subida da encosta) pode ser usada com CSPs Nesse caso, usam uma formulação de estado completo para o problema: Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 33 / 43
  • 186. CSP – Busca Local Formulação Busca local (ex: Subida da encosta) pode ser usada com CSPs Nesse caso, usam uma formulação de estado completo para o problema: Cada nó é uma associação completa de variáveis Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 33 / 43
  • 187. CSP – Busca Local Formulação Busca local (ex: Subida da encosta) pode ser usada com CSPs Nesse caso, usam uma formulação de estado completo para o problema: Cada nó é uma associação completa de variáveis Não necessariamente uma solução (pode haver conflitos) Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 33 / 43
  • 188. CSP – Busca Local Formulação Busca local (ex: Subida da encosta) pode ser usada com CSPs Nesse caso, usam uma formulação de estado completo para o problema: Cada nó é uma associação completa de variáveis Não necessariamente uma solução (pode haver conflitos) O estado inicial associa então um valor a cada variável Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 33 / 43
  • 189. CSP – Busca Local Formulação Busca local (ex: Subida da encosta) pode ser usada com CSPs Nesse caso, usam uma formulação de estado completo para o problema: Cada nó é uma associação completa de variáveis Não necessariamente uma solução (pode haver conflitos) O estado inicial associa então um valor a cada variável Tipicamente, violando várias restrições Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 33 / 43
  • 190. CSP – Busca Local Formulação Busca local (ex: Subida da encosta) pode ser usada com CSPs Nesse caso, usam uma formulação de estado completo para o problema: Cada nó é uma associação completa de variáveis Não necessariamente uma solução (pode haver conflitos) O estado inicial associa então um valor a cada variável Tipicamente, violando várias restrições O objetivo da busca é eliminar as violações de restrições Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 33 / 43
  • 191. CSP – Busca Local Formulação Para ir de um estado a outro, o algoritmo de busca muda o valor de uma variável de cada vez: Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 34 / 43
  • 192. CSP – Busca Local Formulação Para ir de um estado a outro, o algoritmo de busca muda o valor de uma variável de cada vez: Seleciona aleatoriamente uma variável com conflitos (seleção de variável) Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 34 / 43
  • 193. CSP – Busca Local Formulação Para ir de um estado a outro, o algoritmo de busca muda o valor de uma variável de cada vez: Seleciona aleatoriamente uma variável com conflitos (seleção de variável) Atribui novo valor a ela Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 34 / 43
  • 194. CSP – Busca Local Formulação Para ir de um estado a outro, o algoritmo de busca muda o valor de uma variável de cada vez: Seleciona aleatoriamente uma variável com conflitos (seleção de variável) Atribui novo valor a ela A questão então é: que valor escolher para uma variável com conflitos? Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 34 / 43
  • 195. CSP – Busca Local Formulação Para ir de um estado a outro, o algoritmo de busca muda o valor de uma variável de cada vez: Seleciona aleatoriamente uma variável com conflitos (seleção de variável) Atribui novo valor a ela A questão então é: que valor escolher para uma variável com conflitos? Aquele que resultar no menor número de conflitos com outras variáveis Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 34 / 43
  • 196. CSP – Busca Local Formulação Para ir de um estado a outro, o algoritmo de busca muda o valor de uma variável de cada vez: Seleciona aleatoriamente uma variável com conflitos (seleção de variável) Atribui novo valor a ela A questão então é: que valor escolher para uma variável com conflitos? Aquele que resultar no menor número de conflitos com outras variáveis Heurı́stica dos conflitos mı́nimos (Min-Conflicts) Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 34 / 43
  • 197. CSP – Busca Local Min-conflicts Trata-se de uma subida da encosta Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 35 / 43
  • 198. CSP – Busca Local Min-conflicts Trata-se de uma subida da encosta Escolhe sempre o valor que viola o menor número de restrições Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 35 / 43
  • 199. CSP – Busca Local Min-conflicts Trata-se de uma subida da encosta Escolhe sempre o valor que viola o menor número de restrições Se move em direção ao menor número de restrições violadas Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 35 / 43
  • 200. CSP – Busca Local Min-conflicts Trata-se de uma subida da encosta Escolhe sempre o valor que viola o menor número de restrições Se move em direção ao menor número de restrições violadas Usada no Hubble para agendar uma semana de observações Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 35 / 43
  • 201. CSP – Busca Local Min-conflicts Trata-se de uma subida da encosta Escolhe sempre o valor que viola o menor número de restrições Se move em direção ao menor número de restrições violadas Usada no Hubble para agendar uma semana de observações Reduziu de 3 semanas para 10 minutos o tempo de agendamento Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 35 / 43
  • 202. CSP – Busca Local Min-conflicts – Algoritmo Função MIN-CONFLICTS(csp, max): solução atual ← uma associação inicial completa para csp para i=1 até max faça se atual é solução para csp então retorna atual var ← escolha aleatoriamente uma variável com conflitos valor ← escolha o valor para var que viola o menor número de restrições com outras variáveis Faça var ← valor em atual retorna falha Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 36 / 43
  • 203. CSP – Busca Local Min-conflicts – Algoritmo Número máximo de passos antes de desistirmos Função MIN-CONFLICTS(csp, max): solução atual ← uma associação inicial completa para csp para i=1 até max faça se atual é solução para csp então retorna atual var ← escolha aleatoriamente uma variável com conflitos valor ← escolha o valor para var que viola o menor número de restrições com outras variáveis Faça var ← valor em atual retorna falha Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 36 / 43
  • 204. CSP – Busca Local Min-conflicts – Algoritmo Queremos introduzir o menor número de conflitos Função MIN-CONFLICTS(csp, max): solução atual ← uma associação inicial completa para csp para i=1 até max faça se atual é solução para csp então retorna atual var ← escolha aleatoriamente uma variável com conflitos valor ← escolha o valor para var que viola o menor número de restrições com outras variáveis Faça var ← valor em atual retorna falha Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 36 / 43
  • 205. CSP – Busca Local Min-conflicts – Algoritmo Se ainda não tiver uma associação válida, tente uma nova variável Função MIN-CONFLICTS(csp, max): solução atual ← uma associação inicial completa para csp para i=1 até max faça se atual é solução para csp então retorna atual var ← escolha aleatoriamente uma variável com conflitos valor ← escolha o valor para var que viola o menor número de restrições com outras variáveis Faça var ← valor em atual retorna falha Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 36 / 43
  • 206. CSP – Busca Local Min-conflicts – Exemplo WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 37 / 43
  • 207. CSP – Busca Local Min-conflicts – Exemplo Geramos um valor aleatório para as variáveis WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 37 / 43
  • 208. CSP – Busca Local Min-conflicts – Exemplo Geramos um valor aleatório para as variáveis Verificamos quais estão em conflito WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 37 / 43
  • 209. CSP – Busca Local Min-conflicts – Exemplo Geramos um valor aleatório para as variáveis Verificamos quais estão em conflito Escolhemos uma variável conflitante (WA) e trocamos seu valor (pelo que gerar menos conflitos) WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 37 / 43
  • 210. CSP – Busca Local Min-conflicts – Exemplo Geramos um valor aleatório para as variáveis Verificamos quais estão em conflito Escolhemos uma variável conflitante (WA) e trocamos seu valor (pelo que gerar menos conflitos) WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 37 / 43
  • 211. CSP – Busca Local Min-conflicts – Exemplo Verificamos novamente os conflitos WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 38 / 43
  • 212. CSP – Busca Local Min-conflicts – Exemplo Verificamos novamente os conflitos Escolhemos uma variável conflitante (NSW) e trocamos seu valor WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 38 / 43
  • 213. CSP – Busca Local Min-conflicts – Exemplo Verificamos novamente os conflitos Escolhemos uma variável conflitante (NSW) e trocamos seu valor WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 38 / 43
  • 214. CSP – Busca Local Min-conflicts – Exemplo Verificamos novamente os conflitos WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 39 / 43
  • 215. CSP – Busca Local Min-conflicts – Exemplo Verificamos novamente os conflitos Escolhemos uma variável conflitante (Q) e trocamos seu valor WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 39 / 43
  • 216. CSP – Busca Local Min-conflicts – Exemplo Verificamos novamente os conflitos Escolhemos uma variável conflitante (Q) e trocamos seu valor WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 39 / 43
  • 217. CSP – Busca Local Min-conflicts – Exemplo Verificamos novamente os conflitos WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 40 / 43
  • 218. CSP – Busca Local Min-conflicts – Exemplo Verificamos novamente os conflitos Escolhemos uma variável conflitante (NT) e trocamos seu valor WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 40 / 43
  • 219. CSP – Busca Local Min-conflicts – Exemplo Verificamos novamente os conflitos Escolhemos uma variável conflitante (NT) e trocamos seu valor WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 40 / 43
  • 220. CSP – Busca Local Min-conflicts – Exemplo Verificamos novamente os conflitos WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 41 / 43
  • 221. CSP – Busca Local Min-conflicts – Exemplo Verificamos novamente os conflitos Escolhemos uma variável conflitante (WA) e trocamos seu valor WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 41 / 43
  • 222. CSP – Busca Local Min-conflicts – Exemplo Verificamos novamente os conflitos Escolhemos uma variável conflitante (WA) e trocamos seu valor WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 41 / 43
  • 223. CSP – Busca Local Min-conflicts – Exemplo Verificamos novamente os conflitos Escolhemos uma variável conflitante (WA) e trocamos seu valor Achamos uma resposta WA NT Q NSW V SA T WA SA NT Q NSW V T Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 41 / 43
  • 224. CSP – Busca Local Vantagem Pode ser usada em ambientes de tempo real para problemas dinâmicos Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 42 / 43
  • 225. CSP – Busca Local Vantagem Pode ser usada em ambientes de tempo real para problemas dinâmicos Ex: Agendamento de voos Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 42 / 43
  • 226. CSP – Busca Local Vantagem Pode ser usada em ambientes de tempo real para problemas dinâmicos Ex: Agendamento de voos Em uma semana, podemos ter que escalonar milhares de voos e tripulantes Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 42 / 43
  • 227. CSP – Busca Local Vantagem Pode ser usada em ambientes de tempo real para problemas dinâmicos Ex: Agendamento de voos Em uma semana, podemos ter que escalonar milhares de voos e tripulantes Mas um mau tempo imprevisto pode alterar todo o problema Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 42 / 43
  • 228. CSP – Busca Local Vantagem Pode ser usada em ambientes de tempo real para problemas dinâmicos Ex: Agendamento de voos Em uma semana, podemos ter que escalonar milhares de voos e tripulantes Mas um mau tempo imprevisto pode alterar todo o problema Teremos que consertar a agenda com o menor número possı́vel de mudanças (min-conflicts) Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 42 / 43
  • 229. CSP – Busca Local Vantagem Pode ser usada em ambientes de tempo real para problemas dinâmicos Ex: Agendamento de voos Em uma semana, podemos ter que escalonar milhares de voos e tripulantes Mas um mau tempo imprevisto pode alterar todo o problema Teremos que consertar a agenda com o menor número possı́vel de mudanças (min-conflicts) Basta rodarmos o algoritmo começando da agenda atual Norton Trevisan Roman(norton@usp.br) 21 de março de 2019 42 / 43
  • 230. 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) 21 de março de 2019 43 / 43