Baixe Ia psr e outras Notas de aula em PDF para Informática, somente na Docsity!
Problemas de Satisfação de
Restrições (PSR)
Conceitos básicos
Busca cega simples e refinada
Busca heurística
PSR iterativo
Constraint Satisfaction Problems (PSR)
Um Problema de Satisfação de Restrições
• tipo de problema que impõe propriedades
estruturais adicionais à solução a ser encontrada
• há uma demanda mais refinada do que na busca
clássica
- ex. ir de Conquista à Ilhéus com no máximo 1
tanque de gasolina e 4 horas de viagem
Um PSR consiste em:
• um conjunto de variáveis que podem assumir
valores dentro de um dado domínio
• um conjunto de restrições que especificam
propriedades da solução - valores que essas
variáveis podem assumir.
3
PSR: Formulação
Estados:
- definidos pelos valores possíveis das variáveis
Estado inicial:
- nenhuma variável instanciada ainda
Operadores:
- atribuem valores (instanciação) às variáveis (uma
variável por vez)
Teste de término:
- verificar se todas as variáveis estão instanciadas
obedecendo as restrições do problema
Solução:
- conjunto dos valores das variáveis instanciadas
Custo de caminho:
- número de passos de atribuição
4
PSR: características das restrições
O conjunto de valores que a variável i pode assumir é
chamado domínio Di
- O domínio pode ser discreto (fabricantes de uma peça do carro) ou contínuo (peso das peças do carro)
Quanto à aridade, as restrições podem ser
- unárias (sobre uma única variável)
- binárias (sobre duas variáveis) - ex. 8-rainhas
- n-árias - ex. palavras cruzadas
- a restrição unária é um sub-conjunto do domínio, enquanto que a n-ária é um produto cartesiano dos domínios
Quanto à natureza, as restrições podem ser
- absolutas (não podem ser violadas)
- preferenciais (devem ser satisfeitas quando possível)
Exemplo
Problema das 8-rainhas
- variáveis: localização das rainhas
- valores: possíveis posições do tabuleiro
- restrição binária: duas rainhas não podem estar na mesma coluna, linha ou diagonal
- solução: valores para os quais a restrição é satisfeita
Busca cega para PSR
Funcionamento
- estado inicial: variáveis sem atribuição
- aplica operador: instancia uma variável
- teste de parada: todas variáveis instanciadas sem violações
Análise
- pode ser implementada com busca em profundidade limitada ( l = número de variáveis)
- é completa
- fator de expansão: ∑i |Di|
- o teste de parada é decomposto em um conjunto de restrições sobre as variáveis
7 Exemplo de coloração de mapas grafo de restrições
A B
C
D
E
F
A
B
C
D
F
E
8
Simulação passo a passo... A= verde B = verde C= verde D=verde E=verde F=verde (falha c/ C, E, D) F=vermelho E (falha c/ C,A,B) E=vermelho (falha c/ F) E=azul C (falha c/ A) ... Muito dispendioso
A B
C
D
E
F
Exemplo: coloração de mapas busca cega em profundidade
variáveis: A,B,C,D,E,F
domínio: {verde,vermelho,azul}
restrições : A ≠ B; A ≠ C; A ≠ E; B ≠
E; B ≠ F; C ≠ E; C ≠ F; D
≠ F; E ≠ F
Refinamentos
Verificação prévia ( forward checking )
- idéia : olhar para frente para detectar situações insolúveis
Algoritmo:
- Após cada atribuição, elimina do domínio das variáveis não instanciadas os valores incompatíveis com as atribuições feitas até agora.
- Se um domínio torna-se vazio, backtrack imediatamente.
É bem mais eficiente!
Propagação de restrições
Forward checking é um caso particular de verificação
de arco-consistência
- um estado é arco-consistente se o valor de cada variável é consistente com as restrições sobre esta variável
- arco-consistência é obtida por sucessivas eliminações de valores inconsistentes
Propagação de restrições ( constraint propagation )
- uma conseqüência da verificação de arco-consistência
- quando um valor é eliminado, outros podem se tornar inconsistentes e terem que ser eliminados também
- é como uma onda que se propaga: as escolhas ficam cada vez mais restritas
15
Passo a passo... Variáveis = A, B, C, D, E, F Domínios ={vermelho,verde,azul} A=vermelho => B, C, E ={verde,azul} (variáveis c/ restrições c/ A) => D, F ={vermelho,verde,azul} B=verde => E = {azul}, F = {vermelho, azul} (variáveis c/ restrições c/ B) => C ={verde,azul}, D ={vermelho,verde,azul} C = verde => E ={azul}, F = {vermelho, azul} (restrições c/ C) => D = {vermelho,verde,azul} D=vermelho, E=azul, F= ??
Backtracking F e D !! D=verde, E=azul, F=vermelho
Propagação de restrições Exemplo: coloração de mapas
A B
C
D
E
F
A B
C
D
E
F
16 Heurísticas para PSR
Tenta reduzir o fator de expansão do espaço de estados
Onde pode entrar uma heurística?
- Ordenando a escolha da variável a instanciar
- Ordenando a escolha do valor a ser associado a uma variável
Existem 3 heurísticas para isto...
- variável mais restritiva: variável envolvida no maior número de restrições é preferida
- Variável mais restringida: variável que pode assumir menos valores é preferida
- valor menos restritivo: valor que deixa mais liberdade para futuras escolhas
Variável mais restritiva (variável envolvida no maior número de restrições) variáveis: A,B,C,D,E,F domínio: Da=Db...=Df={verde,vermelho, azul} restrições : A ≠ B; A ≠ C; A ≠ E; B ≠ E; B ≠ F; C ≠ E; C ≠ F; D ≠ F; E ≠ F
A B
C
D
E
F
A B
C
D
E
F
Candidatas^1 : E, F, ...resto E = verde Candidatas: F, ...resto F = vermelho Candidatos: A, B, C, D A= vermelho Candidatos: B, C, D B= azul Candidatos: C, D C= azul D = verde
SEM BACKTRACK!!
(^1) em ordem de prioridade
Coloração de mapas: variável mais restringida (variável que pode assumir menos valores) variáveis: A,B,C,D,E,F domínio: Da=Db...=Df={verde,vermelho, azul} restrições : A ≠ B; A ≠ C; A ≠ E; B ≠ E; B ≠ F; C ≠ E; C ≠ F; D ≠ F; E ≠ F
A B
C
D
E
F
A B
C
D
E
F
Candidatas: todas A = verde Candidatas: B, C, E, ... B = vermelho Candidatos: E, F, ... E=azul Candidatos: C, F, D C=vermelho Candidatos: F, D F=verde D = azul ou vermelho
SEM BACKTRACK!!
19
Começando com A = verde B = vermelho C=??? vermelho é melhor do que azul
Coloração de mapas: valor menos restritivo (valor que deixa mais liberdade)
A B
C
D
E
F
variáveis: A,B,C,D,E,F domínio: Da=Db...=Df={verde,vermelho,azul} restrições : A ≠ B; A ≠ C; A ≠ E; B ≠ E; B ≠ F; C ≠ E; C ≠ F; D ≠ F; E ≠ F
PSR iterativo
PSR pode ser resolvido iterativamente
- instancia aleatoriamente todas variáveis
- aplica operadores para trocar os valores e então diminuir número de restrições não satisfeitas (min-conflicts).
Heurística de reparos
Min-conflict resolve 8 rainhas em menos de 50 passos!!!
Número de ataques