Computação Inteligente Problemas de Satisfação de Restrições Lucas Augusto Carvalho Mestrado em Ciência da Computação 2011.1 DCOMP - Universidade Federal de Sergipe 1
Conteúdo Problemas de Satisfação de Restrições (CSPs) Procura com Retrocesso para CSPs Ordenação de variáveis e de valores Propagação de informação nas restrições Procura Local para CSPs Estrutura dos CSPs 2
Problemas de Satisfação de Restrições Problema de Procura Tradicional: CSP: estado é uma caixa preta qualquer estrutura de dados que suporte função sucessores, função heurística, e teste objetivo estado é definido por variáveis Xi com valores do domínio Di Teste objetivo é um conjunto de restrições que especificam combinações possíveis de valores para subconjuntos de variáveis Verificar se restrições C1, C2,..., Cm são satisfeitas 3
Problemas de Satisfação de Restrições Possível utilização de algoritmos genéricos mais poderosos do que os tradicionais algoritmos de procura 4
Exemplo: Coloração de Mapa Variáveis WA, NT, Q, NSW, V, SA, T Domínios Di = {vermelho, verde, azul} Restrições: regiões adjacentes com cores diferentes e.g., WA NT, ou (WA,NT) = {(vermelho,verde), (vermelho,azul), (verde,vermelho), (verde,azul), (azul,vermelho), (azul,verde)} 5
Exemplo: Coloração de Mapa 6
Exemplo: Coloração de Mapa Soluções são atribuições completas e consistentes. e.g., WA = vermelho, NT = verde, Q = vermelho, NSW = verde, V = vermelho, SA = azul, T = verde 7
Grafo de Restrições CSP binário: cada restrição relaciona duas variáveis Grafo de restrições: nós são variáveis, arcos são restrições 8
Tipo de Variáveis Variáveis discretas Domínios finitos: n variáveis e tam(domínio) = d O(d^n) atribuições completas Ex: coloração de mapas [tam(dominio) = 3] Domínios infinitos: valores inteiros, strings, etc. Ex: job scheduling, variáveis são inicio/fim de dias para cada atividade Necessário uma linguagem de restrição, ex: StartJob1 + 5 StartJob3 Não dá para enumerar todas as combinações de valores possíveis 9
Tipo de Variáveis Variáveis contínuas e.g., hora de início e fim de observações do Telescópio Hubble 10
Tipos de Restrições Restrições Unárias: envolvem uma única variável e.g., SA green Restrições binárias: envolvem pares de variáveis e.g., SA WA Restrições de alta-ordem: envolvem 3 ou mais variáveis e.g., quebra-cabeças criptoaritmético 11
Tipo de Restrições Restrições globais: envolvem várias variáveis e.g. AllDiff Restrições absolutas (não podem ser violadas) ex: AO TN Restrições preferenciais (devem ser satisfeitas quando possível) ex: problema de elaboração de horários 12
Tipo de Restrições Todas as restrições de ordem superior para domínios finitos podem ser convertidas em restrições binárias usando variáveis auxiliares 13
Exemplo: QB Criptoaritmético Variáveis: F T U W R O X1 X2 X3 Domínio: {0,1,2,3,4,5,6,7,8,9} Restrições: (1) Alldiff (F,T,U,W,R,O) (2) O + O = R + 10 X1 (3) X1 + W + W = U + 10 X2 (4) X2 + T + T = O + 10 X3 (5) X3 = F, T 0, F 0 Cada letra do problema representa um dígito diferente; últimos dígitos (F e T) têm de ser diferentes de zero. 14
Classes de Problemas Problemas de satisfatibilidade O objetivo é encontrar uma associação de valores para as variáveis que satisfaça algumas restrições Exemplos: Criptoaritmética, n-rainhas, coloração de mapas Problemas de otimização Cada associação de um valor para cada variável tem um custo O objetivo é encontrar uma associação com o menor custo (associação ótima) Exemplo: Elaboração de horário de aula 15
Relacionamento com Busca O caminho até o objetivo não é importante, somente a solução Não existe um nó inicial pré-definido Frequentemente estes problemas são grandes, com centenas de variáveis Explorar sistematicamente o espaço de estados pode ser inviável Para problemas de otimização não existem nós objetivos bem definidos 16
Formulação como Busca Estados são definidos por valores atribuídos Formulação do problema: Estado inicial: { } --- variáveis sem valores atribuídas Função sucessor: um valor é atribuído à variável sem gerar conflitos Teste de objetivo: conjunto de atribuições está completo 17
Formulação como Busca Considerando Busca em Largura (sem heurística):... Fator b na raiz = n*d Fator b seguinte = (n-1)*d Quantas folhas possui a árvore? n!*d^n folhas ainda que existam apenas d^n atribuições completas 18
Busca com Backtracking Propriedade ignorada: artibuições à variáveis são comutativas [WA=red e NT=green] <==> [NT=green e WA=red] logo, considerar apenas uma única variável em cada nó b = d ==> d^n folhas Busca com Backtrack = Busca em profundidade para CSPs com única atribuição de variável por nível Algoritmo de busca básico para CSPs Soluciona 8-rainhas com profundidade 25 19
Exemplo: busca com Backtracking 20
Exemplo: busca com Backtracking 21
Exemplo: busca com Backtracking 22
Exemplo: busca com Backtracking 23
Melhorando a eficiência Uso de heurísticas: Qual a próxima variável a ser considerada? Em que ordem os valores do domínio devem ser atribuídos? Podemos prever uma falha inevitável? 24
Heurística 1 Escolher sempre a variável com menor número de valores possíveis (mais restrita): MRV (Minimum Remaining Values) 25
Heurística 2 - MRV não ajuda na escolha da primeira variável; - Escolher a variável com maior número de restrições para as outras variáveis: Degree Heuristics; - South Australia é adjacente a todas as outras regiões! 26
Heurística 3 - Em que ordem os valores do domínio devem ser atribuídos? - Dada uma variável, escolha o valor menos restritivo para as próximas: Least-constrainingvalue 27
Heurística 4 Reduzir o espaço de busca durante a busca ou antes mesmo dela ter início Heurística Forward checking: - Guarda valores possíveis remanescentes para variáveis sem atribuições ainda - Busca finaliza quando não existem mais valores possíveis para qualquer variável Forward checking = verificação posterior/olharem-frente 28
Heurística 4 29
Heurística 4 30
Heurística 4 31
Heurística 4 32
Heurística 4 Propagação de restrições verifica restrições localmente. 33
Heurística 5 - Do Inglês arc consistency - Forma mais simples de propagação assegura consistência de arcos e.g. arco entre X e Y X Y é consistente sse para todos os valores x em X existe algum valor possível y em Y Y X é consistente sse para todos os valores y em Y existe algum valor possível x em X 34
Heurística 5 35
Heurística 5 Se X perde um valor, vizinhos devem ser checados novamente 36
Heurística 5 Detecta falha mais cedo do que Forward Cheking Pode ser executado como um preprocessador da busca 37
Retrocesso Inteligente - Retrocesso com salto: Q = vermelho, NSW = verde, V = azul, T = vermelho, SA = conflito! - Retrocesso alterar valor de T T não foi responsável pelo conflito Conjunto de conflito {Q,NSW,V} retroceder inteligentemente para a variável que causou o conflito e foi atribuída mais recentemente, i.e. V - Forward checking faz o mesmo 38
Retrocesso Inteligente Retrocesso com salto dirigido ao conflito: WA = vermelho, NSW = vermelho, T = vermelho - Atribuir NT, Q, V, SA não existe nenhuma atribuição consistente - Conjunto de conflito não resolve o problema porque NT não está diretamente relacionada com WA e NSW - Conjunto de conflito tem de ir para além de relações diretas 39
Retrocesso Inteligente O retrocesso inteligente não evita que o mesmo conflito venha a aparecer novamente em outro ramo da árvore, e.g. T = vermelho, WA = vermelho, NSW = vermelho T = azul, WA = vermelho, NSW = vermelho Repetição de erros pode ser evitada com aprendizagem! Adicionar uma restrição que não permita que volte a acontecer WA = vermelho NSW = vermelho WA vermelho NSW vermelho 40
Procura Local Usar algoritmos que usam estados completos, i.e. todas as variáveis atribuídas Para aplicar procura local a CSPs: Permitir estados em que não são satisfeitas todas as restrições Transições entre estados consiste na re-atribuição de valores a variáveis Ordenação de variáveis: selecionar aleatoriamente qualquer variável para a qual exista um conflito Seleção de valores com a heurística menor número de conflitos (min-conflicts): Escolher valor que viola o menor número de restrições Se existirem vários valores nestas condições escolher um deles aleatoriamente 41
Exemplo: 4 rainhas Estado: 4 rainhas em 4 colunas (4^4 = 256 estados) Ações: mover rainhas nas colunas Teste objetivo: não há ataques Função de Avaliação: h(n) = número de ataques 42
Procura Local x Backtracking Vantagens Encontra soluções para problemas de grandes dimensões (10.000.000 rainhas) Tempo de execução da heurística do menor número de conflitos está pouco dependente da dimensão do domínio Desvantagens Não permite provar que não há solução porque não mantém um registo dos estados já visitados 43
Estrutura de Problemas - A estrutura de um problema, obtida através da representação em grafo, pode ser usada para facilitar a resolução do problema - É importante detectar sub-problemas: melhorias no desempenho Que decisões afetam outras decisões? E.g. não existe nenhuma relação entre Tasmânia e as outras regiões 44
Estrutura em Árvores Teorema: se um CSP não tem ciclos, então pode ser resolvido em tempo O(nd^2) em vez de O(d^n) Tipicamente um CSP que tem uma estrutura em 45 árvore pode ser resolvido em tempo linear no número de variáveis
Aproximação para Árvores - Podemos transformar um CSP numa estrutura em árvore adaptando o problema: remoção e colapsagem de nós - Remoção de nós: atribuir valores a algumas variáveis t.q. variáveis não atribuídas formem uma árvore Compensa se o número de variáveis a atribuir é pequeno Identificar estas variáveis é NP-difícil! uso de aproximações E.g. atribuir SA 46
Aproximação para Árvores Colapsagem de nós - Problema resultante é uma árvore cujos nós são sub- Problemas - Cada sub-problema é resolvido Separadamente - Soluções resultantes são combinadas 47
Conclusões - CSPs são um tipo especial de problemas: - Estados definidos por valores atribuídos a um conjunto específico de variáveis - Teste objectivo definido a partir de restrições nos valores das variáveis - Retrocesso = procura em profundidade primeiro com uma variável atribuída por cada nó - Ordenação de variáveis e seleção de valores é importante 48
Conclusões - Forward checking evita atribuições que garantidamente levarão a conflitos no futuro - Propagação de restrições (e.g. consistência de arcos) detecta inconsistências adicionais - Procura local + h. menor número de conflitos é eficiente - Conhecimento da estrutura do problema pode melhorar desempenho 49