Inteligência Artificial (SI 214) Aula 5 Problemas de Satisfação de Restrições Prof. Josenildo Silva [email protected] 2012 © 2012 Josenildo Silva ([email protected]) Este material é derivado dos slides de Hwee Tou Ng, disponível no site do livro AIMA (Russel & Norvig) para professores e instrutores. http://aima.eecs.berkeley.edu/slides-ppt Leitura obrigatória • Leia o Capítulo 5 do livro AIMA – Seções 5.1, 5.2 e 5.3 Sumário • Problemas de Restrição de Satisfação (CSP) • Busca com Backtracking para CSPs • Busca Local para CSPs Problemas de Satisfação de Restrições (CSPs) • Problema de Busca Padrão: – estado é uma caixa preta "black box“ – qualquer estrutura que suporte a função sucessor, heuristicas, e teste de objetivo. • CSP: – estado é definido por variáveis Xi com valores de um dominio Di – teste de objetivo é um conjunto de restrições especificando combinações permitidas de valores para as variáveis • Representa uma linguagem formal de representação • Permite algorimos úteis de propósito geral com mais poder que algoritmos de busca padrão Exemplo: colorir mapa • Variáveis WA, NT, Q, NSW, V, SA, T • Dominios Di = {red,green,blue} • Restrições: regiões adjacentes devem ter cores diferentes • Ex: WA ≠ NT, or (WA,NT) in {(red,green),(red,blue),(green,red), (green,blue),(blue,red),(blue,green)} Exemplo: colorir mapa • Soluções são atribuições completas e consistentes • Ex: WA = red, NT = green,Q = red,NSW = green,V = red,SA = blue,T = green Grafo de Restrições • CSP Binário: cada restrição relaciona duas váriaveis • Grafo de restrições representa um CSP Binário: – nodos são variáveis, arcos são restrições Variáveis em CSPs • Discretas com Domínio Finitos – n variáveis, tamanho do dominio d – há O(dn) atribuições completas Variáveis em CSPs (2) • Discretas com Domínio Infinitos: – inteiros, strings, etc. – Ex: escalonamento de tarefas, variaveis são inicio/fim para cada tarefa – precisa de uma linguagem de restrição, ex: StartJob1 + 5 ≤ StartJob3 Variáveis em CSPs (3) • Variáveis Contínuas – Ex: tempo de inicio/fim para observações com o telescópio Hubble – restrições lineares são resolvíveis em tempo polinomial com programação linear Tipos de Restrições • Unárias: envolvem uma única variável – ex. SA ≠ green • Binárias: envolvem pares de variáveis – ex. SA ≠ WA • N-arias (high order): envolvem 3 ou mais variáveis – ex. Restrições de cryptarithmetica Exemplo: Cryptarithmetica • Variables: F T U W R O X1 X2 X3 • Domains: {0,1,2,3,4,5,6,7,8,9} • Constraints: Alldiff (F, T, U, W, R, O) – O + O = R + 10 · X1 – X1 + W + W = U + 10 · X2 – X2 + T + T = O + 10 · X3 – X3 = F, T ≠ 0, F ≠ 0 Exemplo: Cryptarithmetica Problemas Reais de CSPs • Problemas de Escala – Ex: quem ministrará qual disciplina? • Problemas de Horário – Ex: quando e onde cada disciplina será oferecida? • Logística de Transporte • Escalonamento em Fábrica • Muitos problemas envolvem variáveis com valores reais Formulação padrão de busca (incremental) • Abordagem básica: – Estados são definidos pelos valores atribuidos até o momento – Estado inicial: atribuição vazia { } – Função Successor: atribui um valor para uma variável não atribuida, sem entrar em conflito com as atribuições existentes • Falha, caso não haja atribuições legais – Teste de objetivo: a atribuição está completa Formulação padrão de busca (incremental) • Esta formulação serve para todos os CSPs • Uma solução aparece no nível n com n variáveis – Busca em profundidade é uma boa escolha • O caminho é irrelevante, então pode-se utilizar uma formulação de estado completo. – Cada estado é uma atribuição completa • O número de nodos na árvore de busca é de O(n!dn) Busca com Backtracking • Atribuições são comutativas [ WA = red seguido de NT = green ] é o mesmo que [ NT = green seguido de WA = red ] • Considera-se apenas atribuições para uma variável por vez em cada nodo • Com estas suposições, o número de nodos na árvore de busca é O(dn) Busca com Backtracking • Busca com bracktracking: busca em profundidade para CSPs com atribuição a variáveis simples • É o algoritmo de busca cega mais básico para CSPs • Pode resolver n-queens para n ≈ 25 Busca com Backtracking Exemplo de Backtracking Exemplo de Backtracking Exemplo de Backtracking Exemplo de Backtracking Melhorando a eficiencia da busca com backtracking • Métodos de propósito geral podem nos dar grande ganhos em velocidade: – Qual a próxima variável devemos atribuir? – Em qual ordem os valores devem ser tentandos? – Podemos detectar falha inevitável cedo? Variável Mais Restrita • A variável mais restrita é que possui menor número de valores legais • Abordagem também conhecida como heuristica dos valores remanescentes minimos (MRV) Variável Mais Restrita • Desempate entre variáveis restritas – Escolha a variável com mais restrições Valor Menos Restritivo • Dada uma variável, escolha o valor que seja menos restritivo: – O que descarta menos valores para as variáveis restantes • Combinando estas duas heurísticas torna possível resolver 1000 queens Verificação Adiante • Ideia: – Manha registro dos valores legais que ainda podem ser utiliazados para variáveis não atribuídas – Encerra a busca quando qualquer variável não tem valores legais Verificação Adiante • Ideia: – Manha registro dos valores legais que ainda podem ser utiliazados para variáveis não atribuídas – Encerra a busca quando qualquer variável não tem valores legais Verificação Adiante • Ideia: – Manha registro dos valores legais que ainda podem ser utiliazados para variáveis não atribuídas – Encerra a busca quando qualquer variável não tem valores legais Verificação Adiante • Ideia: – Matenha registro dos valores legais que ainda podem ser utiliazados para variáveis não atribuídas – Encerra a busca quando qualquer variável não tem valores legais Propagação de Restrições • Verificação adiante propaga informação das variáveis atribuídas para as não-atribuídas mas não detecta cedo todas as falhas: • NT e SA não pode ser ambos azuis! • Propagação de restrição repetidamente reforçam as restrições localmente Consistência dos Arcos • A maneira mais simples de propagação torna cada arco consistente • X Y é consistente sse para cada valor de x há algum valor permitido de y Consistência dos Arcos • A maneira mais simples de propagação torna cada arco consistente • X Y é consistente sse para cada valor de x há algum valor permitido de y Consistência dos Arcos • A maneira mais simples de propagação torna cada arco consistente • X Y é consistente sse para cada valor de x há algum valor permitido de y Consistência dos Arcos • A maneira mais simples de propagação torna cada arco consistente • X Y é consistente sse para cada valor de x há algum valor permitido de y Algoritmo AC-3: consistência de arcos • Complexidade de tempo: O(n2d3) Busca Local para CSPs • Busca local funciona tipicamente com estados "completos", i.e., todas as variáveis atribuidas • Adaptando para CSPs: – Permitir estados com restrições não satisfeitas – Operadores reatribuem valores • Seleção de variáveis: selecionar randomicamente qualquer variável em conflito • Heurística min-conflicts para seleção: – Escolha a variável que viole menos restrições – Ex: hill-climb com h(n) = total de restrições violadas Exemplo: 4-Rainhas • • • • • Estados: 4 rainhas em 4 colunas (256 states) Ações: mover rainha em uma coluna Teste de objetivo: não há ataques Avaliação: h(n) = número de ataques Dado um estado inicial qualquer, este método pode resolver n-queens quase em tempo constante para valor arbitrário de n com alta probabilidade (ex: n = 10,000,000) Resumo • CSPs são tipo especial de problema: – estados são definidos por valores de variáveis – teste de objetivo é definido por restrições nos valores das variáveis • Backtracking = busca em profundidade com uma variável atribuida por vez • Verificação adiante previne atribuições que levam a falha futura • Propagação de restrições ajuda a restringir valores e detectar inconsistencias • Heurística min-conflicts é bastante efetiva na prática