desenvolvimento de sistemas baseados em conhecimento csp - constraint satisfaction problems
TRANSCRIPT
![Page 1: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/1.jpg)
Desenvolvimento de Sistemas Desenvolvimento de Sistemas Baseados em ConhecimentoBaseados em Conhecimento
CSP - Constraint Satisfaction Problems
![Page 2: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/2.jpg)
Motivação
• Estratégias de busca– Cada estado é estado é uma caixa preta– Não existe uma estrutura que suporte operações
» Teste de objetivo, avaliação, função sucessor– Heurísticas específicas para cada domínio
• CSP– Estado é definido por variáveis Xi com possíveis valores dentro de
um domínio Di
– Teste é um conjunto de restrições que especificam as combinações de valores possíveis para subconjuntos de variáveis
– Exemplo de uma simples Linguagem de Representação Formal– Permite o uso de algoritmos de propósito geral com mais poder que
algoritmos de busca padrão
![Page 3: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/3.jpg)
Definição Formal para um CSP
• CSP – Conjunto de variáveis X1, X2, ..., Xn
– Conjunto de restrições C1, C2,..., Cm
– Cada variável X1 tem um domínio Di de possíveis valores
– Um estado do problema é definido como uma atribuição de valores para todas as variáveis
» { xi = vi, xj = vj, ... }
– Uma atribuição que não viola qualquer restrição é dita consistente– Uma atribuição que considera todas as variáveis é dita completa– Uma atribuição consistente e completa é dita uma solução
![Page 4: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/4.jpg)
Exemplo 1 – Coloração de mapas
• Colorir um mapa com três cores, de modo que nenhuma cor seja vizinha a outra
– Variáveis» WA, NT,Q,AS,NSW,V,T
– Domínios» Di = {red,green,blue}
– Restrições: regiões adjacentes devem ter cores diferentes
» WANT, WAAS, NTQ,...ou» (WA,NT) {(red,green),(red,blue),
(green,red),(green,blue)...}
![Page 5: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/5.jpg)
Exemplo – Coloração de mapas
• Colorir um mapa com três cores, de modo que nenhuma cor seja vizinha a outra
![Page 6: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/6.jpg)
Gráfico de Restrições
• CSP Binário: cada restrição está relacionada a no máximo duas variáveis– Facilmente representada via um gráfico de restrições
Arcos = restrições
Nós = variáveis
![Page 7: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/7.jpg)
Tipos de Variáveis
• Variáveis discretas– Domínio finito– Exemplo: Coloração de mapas– Problema das oito rainhas pode ser modelado com variáveis
discretas?
• Variáveis contínuas– Domínios infinitos– Exemplo: agendamento das observações do telescópio Hubble
» Start/end times
![Page 8: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/8.jpg)
Tipos de Restrições
• Restrições unárias– Envolvem uma simples 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., Problemas de cryptarithmetic
• Preferências (soft-constraints)– Restrições que só são obedecidas se for possível (idéia de custo)
» Vermelho é melhor do que azul
![Page 9: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/9.jpg)
Exemplo: cryptarithmetic
• Substitua letras por números de forma que a operação esteja correta
– Variáveis» F, T, U, W, R, O, X1, X2, X3
– Domínios» D = {0,1,2,3,4,5,6,7,8,9}
– Restrições:» alldiff(F,T,U,W,R,O)» O+O = R+ 10 . X1
» ...
![Page 10: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/10.jpg)
Formulação Utilizando Busca Padrão
• Vamos iniciar com uma abordagem dump e melhorá-la– Estados são definidos como cada possível atribuição– Estado inicial: a atribuição vazia, { }– Função sucessor: atribui um valor para uma variável não utilizada
que não conflita com as atribuições atuais» Falha se não existe atribuição possível
– Teste de objetivo: a atribuição atual é completa
• Vantagens: – Solução solução em profundidade n, sendo n número de variáveis
• Desvantagem– Altamente ineficiente (Dump)
![Page 11: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/11.jpg)
Formulação usando Backtracking
• Tomar vantagem da característica de comutatividade– Atribuição de variávei sem CSP são comutativas– [WAred e então NTgreen] [WAgreen e então NT red]
![Page 12: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/12.jpg)
Formulação usando Backtracking
![Page 13: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/13.jpg)
Formulação usando Backtracking
![Page 14: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/14.jpg)
Formulação usando Backtracking
• Importância de se escolher uma boa estratégia
![Page 15: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/15.jpg)
Melhorando a Eficiência
• Métodos de propósito geral podem gerar grandes ganhos em velocidade– Qual variável deve ser atribuída em seguinte?– Em que ordem os seus valores devem ser atribuídos?– É possível detectar falhas previamente?– Podemos tomar vantagem da estrutura do problema?
![Page 16: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/16.jpg)
Melhorando a Eficiência
• Ordem das variáveis– Feita de forma estática
• Minimum Remaining Values (MRV)– Escolher variável com o menor conjunto de valores possíveis
Próximo melhor variável
![Page 17: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/17.jpg)
Melhorando a Eficiência
• Característica do MRV– Se existe uma variável X com zero valores legais restantes, o
MRV irá selecionar X e uma falha será detectada imediatamente. Isso evita buscas “mortas” através de outras variáveis que irão sempre falhar quando X é finalmente selecionado.
– Considerável ganho, de acordo com a tabela anterior» Performance de 3 a 3000 melhor» Comparação justa?
Não é considerado o custo extra de calcular os valores heurísticos
![Page 18: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/18.jpg)
Melhorando a Eficiência
• A heurística MRV não ajuda na escolha da primeira região da Austrália a ser colorida– No início todas as regiões possuem três cores legais
• Uso da Degree Heuristic como critério de desempate– Seleção da variável envolvida com maior número de constraints
sobre outras variáveis não atribuídas
5 constraints
![Page 19: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/19.jpg)
Melhorando a Eficiência
• Métodos de propósito geral podem gerar grandes ganhos em velocidade– Qual variável deve ser atribuída em seguinte?– Em que ordem os seus valores devem ser atribuídos?– É possível detectar falhas previamente?– Podemos tomar vantagem da estrutura do problema?
![Page 20: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/20.jpg)
Melhorando a Eficiência
• Heurística least-constraining-value– Prefere valores que excluem o menor número de escolhas para
as variáveis vizinhas no gráfico de restrição
Tentar uma máxima flexibilidade para a atribuição de variáveis subsequentes
![Page 21: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/21.jpg)
Melhorando a Eficiência
• Métodos de propósito geral podem gerar grandes ganhos em velocidade– Qual variável deve ser atribuída em seguinte?– Em que ordem os seus valores devem ser atribuídos?– É possível detectar falhas previamente?– Podemos tomar vantagem da estrutura do problema?
![Page 22: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/22.jpg)
Melhorando a Eficiência
• Até o momento consideramos as constraints sobre variáveis apenas no momento que a variável é escolhida pelo método SELECT-UNASSIGNED-VARIABLE
• Olhar previamente algumas constraints na busca, ou antes mesmo da busca, pode reduzir dramaticamente o espaço de busca
![Page 23: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/23.jpg)
Melhorando a Eficiência
• Método FORWARD CHECKING– Toda vez que uma variável X é atribuída, o sistema olha cada
variável Yi não atribuída que está conectada a X por uma constraint e apaga do domínio de Yi qualquer valor que é inconsistente como valor escolhido para X.
![Page 24: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/24.jpg)
Melhorando a Eficiência
• Método FORWARD CHECKING
![Page 25: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/25.jpg)
Melhorando a Eficiência
• Método FORWARD CHECKING
![Page 26: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/26.jpg)
Melhorando a Eficiência
• Método FORWARD CHECKING
![Page 27: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/27.jpg)
Melhorando a Eficiência
• Limitações do FORWARD CHECKING– Não consegue detectar todas as inconsistências existentes
NT e SA não podem ter a cor azul ao mesmo tempo
![Page 28: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/28.jpg)
Melhorando a Eficiência
• Propagação de Constraints– Termo geral para a propagação de implicações de uma constraint
sobre uma variável em outras variáveis
– Neste exemplo é necessário propagar de WA e Q para NT e SA
![Page 29: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/29.jpg)
Melhorando a Eficiência
• Método ARCO CONSISTÊNCIA (Arc Consistency)– Arcos se referem a uma ligação direta no gráfico de restrições
Dado o domínio de SA e NSW, o arco é considerado consistente se, para todo valor x de SA, existe algum valor y de NSW que é consistente com x.
![Page 30: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/30.jpg)
Melhorando a Eficiência
• Método ARCO CONSISTÊNCIA (Arc Consistency)– Uma simples forma de propagação é fazer cada arco consistente
X arc Y é consistente sss x (x X) y (y Y)
![Page 31: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/31.jpg)
Melhorando a Eficiência
• Método ARCO CONSISTÊNCIA (Arc Consistency)– Lembrar que se um X perde um valor, os seus visinhos precisam
ser reavaliados
![Page 32: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/32.jpg)
Melhorando a Eficiência
• Método ARCO CONSISTÊNCIA (Arc Consistency)– Obviamente esta técnica detecta falhas mais cedo do que a
forward checking
•Tecnica pode ser utilizada como um pre-processo ou depois de cada atribuição
![Page 33: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/33.jpg)
Melhorando a Eficiência
• Método ARCO CONSISTÊNCIA (Arc Consistency)
![Page 34: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/34.jpg)
Melhorando a Eficiência
• Busca Local para CSP– Usam uma formulação de estados completa
» No estado inicial é atribuído um valor para toda variável» A função sucessor modifica o valor de uma variável de cada vez
– Heurística Min-conflicts: seleciona o valor que resulta em um número mínimo de conflitos com outras variáveis
Estado inicial?
Função sucessor?
![Page 35: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/35.jpg)
Melhorando a Eficiência
• Busca Local para CSP– Pode ser usada em correções em tempo real quando o problema
é modificado– Característica muito importante para problemas de scheduling
“O schedule de uma companhia aérea pode envolver milhares de vôos e dezenas de milhares de alocações de funcionários, mas um mau tempo em um aeroporto pode
tornar o schedule inválido. Um sistema ideal deveria reparar o schedule com o mínimo de modificações. Isto pode ser facilmente feito com um algoritmo de busca local, que
tem o seu estado inicial setado como o schedule corrente”
![Page 36: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/36.jpg)
Melhorando a Eficiência
• Métodos de propósito geral podem gerar grandes ganhos em velocidade– Qual variável deve ser atribuída em seguinte?– Em que ordem os seus valores devem ser atribuídos?– É possível detectar falhas previamente?– Podemos tomar vantagem da estrutura do problema?
![Page 37: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/37.jpg)
Melhorando a Eficiência
• Tirando vantagem da estrutura do problema– Tasmania e a parte continental são sub-problemas independentes– Facilmente identificável– Solução final é a união das sub-soluções
Caso muito raro
![Page 38: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/38.jpg)
Melhorando a Eficiência
• Tirando vantagem da estrutura do problema– Na maioria dos casos todos os nós estão conectados– Caso mais simples é quando o gráfico de restrições forma uma
árvore» Qualquer duas variáveis são conectadas no máximo por uma ligação
![Page 39: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/39.jpg)
Melhorando a Eficiência
• Tirando vantagem da estrutura do problema– Algoritmo para uma árvore CSP estruturada
» 1. Escolha uma variável como root, ordene as variáveis do root para as folhas tal que todo pai do nó
» 2. Para j de n até 2, aplique REMOVEINCONSISTENT(Parent(Xj),Xj)
» 3. Para j de 1 até n, atribua Xj consistentemente com Parent(Xj)
![Page 40: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/40.jpg)
Melhorando a Eficiência
• Árvores quase estruturadas– Tentar transformar para estruturadas
• Algoritmo– Instancie todas as variáveis de modo que as variáveis restantes
(não instanciadas) virem uma árvore– Ajuste os domínios visinhos
![Page 41: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/41.jpg)
Melhorando a Eficiência
• O valor para SA pode ser escolhido erroneamente• Algoritmo geral
1. Escolha um subconjunto de S de VARIABLES[csp] tal que o gráfico de restrições torne-se um árvore depois da remoção de S. S é chamado de “Cycle cutset”
2. Para cada possível atribuição para a variável em S que satisfaça todas as restrições em Sa. Remova do domínio das variáveis restantes qualquer valor
que seja inconsistente com a atribuição para Sb. Se o CSP resultante tem uma solução, retorne ele com a
atribuição para S
![Page 42: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/42.jpg)
Melhorando a Eficiência
• Outra abordagem é baseada na construção de uma árvore de decomposição do grafo de restrições em um conjunto de subproblemas conectados– Cada solução é trabalhada individualmente e as soluções combinadas
![Page 43: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/43.jpg)
Melhorando a Eficiência
• A decomposição da árvore deve satisfazer três requisitos– Toda variável no problema original aparece no mínimo em um
subproblema– Se duas variáveis estão conectadas por uma restrição no problema
original, elas devem aparecer juntas (com suas restrições) no mínimo em um dos subproblemas
– Se uma variável aparece em dois subproblemas na árvore, deve haver uma restrição dizendo que o valor de tais variáveis deve ser igual
• Resolução– Se uma dos subproblemas não tem solução, o problema não tem
solução– Se todos os subproblemas tem solução, tenta-se encontrar uma solução
global
![Page 44: Desenvolvimento de Sistemas Baseados em Conhecimento CSP - Constraint Satisfaction Problems](https://reader036.vdocuments.net/reader036/viewer/2022062411/570638511a28abb8238f8c54/html5/thumbnails/44.jpg)
Melhorando a Eficiência
• Resolução (continuação)– Resolução global:
» Considerar cada subproblema como uma mega-variável cujo domínio é o conjunto de todas as soluções para o subproblema
» Utilizar o algoritmo para árvores anterior, onde as restrições entre subproblemas simplesmente forçam que as soluções para os subproblemas cheguem a um acordo quanto as variáveis compartilhadas
Domínio com 6 elementos:e.g. {WA = red, AS = blue, NT = green
Única solução possível{AS = blue, NT = green, Q = red}