Constraint Logic Programming Thiago do Nascimento Ferreira
Sumário Parte 01
Definições
Parte 02
Estudo Empírico
Parte 03
Demonstração
Parte 04
Conclusão
Definições
Programação por Restrição
“
Um paradigma para formulação e resolução de problemas que são naturalmente definidos em termos de restrições e um conjunto de variáveis
”
Ivan Bratko
Programação por Restrição
“
Programação por Restrição representa a abordagem mais próxima para atingir o Santo Graal da programação: usuário declara o problema e o computador resolve
”
Eugene C. Freuder
Programação por Restrição
Resolver tais problemas consiste em encontrar uma combinação de valores que satisfaçam as restrições.
Constraint Logic Programming (CLP) consiste em combinar a abordagem restritiva com programação lógica.
Programação por Restrição
Ramos: ● Satisfação por Restrição ○ Domínios Finitos ○ Aplicações Industriais ● Resolução de Restrições ○ Domínios mais complexos ou infinitos ○ Diferenciação Automática, Séries de Taylor, Método de Newton, Programação Linear
Satisfação de Restrições
Dado: 1. Conjunto de Variáveis 2. Domínio de cada variável a qual tira os valores 3. Restrições que as variáveis tem que satisfazer Encontrar: Uma atribuição de valores para as variáveis, satisfazendo as restrições.
Objetivos da Satisfação de Restrição Apenas uma solução, sem qualquer preferência
Todas as Soluções
Uma solução ótima, ou pelo menos uma boa solução dada uma função objetiva
Hist贸rico Gr谩ficos interativos Ivan Sutherland麓s[1963]
Processamento de imagens [Montanari 1970][Waltz 1975]
Modelagem de circuitos e diagn贸sticos [Borning 1977]
Histórico Contraint Logic Programming (CLP) [Jaffar and Lassez 1987]
PrologIII, CLP(R) [Colmerauer 1990]
Algoritmos de propagação em Inteligência Artificial
Técnicas de Resolução
Busca Sistemática
Técnicas de Consistência
Técnicas de Resolução
Busca Sistemática
Técnicas de Consistência
● Simples e Ineficientes ● “Gera e Testa” ● Backtracking
Técnicas de Resolução
Busca Sistemática
Técnicas de Consistência
● Simples e Ineficientes ● “Gera e Testa” ● Backtracking
● Raramente usada sozinha ● Consistência de Nó ● Consistência de Arco
Problemas Agendamento de Tarefas Diversos Jogos de L贸gica Sudoku Problema da Satisfatibilidade Booleana Problema das N Rainhas
Problema das N Rainhas
Problemas das N Rainhas
Problema Combinat처rio Exponencial
Colocar n rainhas em um tabuleiro com n dimens천es
N찾o pode ocorrer nenhum ataque
Exemplo 4 3
2
1
Exemplo 1 2 3 4
Exemplo 1 2 3 4 Rainha 1 ataca a Rainha 2
Exemplo 1 2 3 4
Exemplo 1 2 3 4 Nenhum ataque
Possível Solução 1 2 3 4
Possível Solução 1 2 3 4
Possível Solução 1 2 3 4
Possível Solução 1 2 3 4
Possível Solução 1 2 3 4 Nenhum ataque
Formulação do Problema Quais as variáveis do problema?
Qual o domínio de cada variável?
Quais as restrições do problema?
Formulação do Problema Quais as variáveis do problema? x1 , x 2 , x 3 , x 4 Qual o domínio de cada variável?
Quais as restrições do problema?
Formulação do Problema Quais as variáveis do problema? x1 , x 2 , x 3 , x 4 Qual o domínio de cada variável? dom(x1) = [1, 2, 3, 4] dom(x3 ) = [1, 2, 3, 4] dom(x2) = [1, 2, 3, 4] dom(x4) = [1, 2, 3, 4] Quais as restrições do problema?
Formulação do Problema Quais as variáveis do problema? x1 , x 2 , x 3 , x 4 Qual o domínio de cada variável? dom(x1) = [1, 2, 3, 4] dom(x3 ) = [1, 2, 3, 4] dom(x2) = [1, 2, 3, 4] dom(x4) = [1, 2, 3, 4] Quais as restrições do problema? C1 ← Q x ≠ Q y C2 ← | Qx - Qy | ≠ |x - y|
Algoritmo de Backtracking
Demonstração
Algoritmo em Prolog
Demonstração
Ferramentas
Ferramentas
Cassowary Constraint Solver
Comet
JaCoP
Ferramentas
Koalog
Logilab-Constraint
ZDC
Referências Notas de Aula da Disciplina Advanced Artificial Intelligence BAZZAN, A. L. C.. 2012 Distributed Constraint Satisfaction for Formalizing Distributed Problem Solving YOKOO. et al. 1992
Inteligência Artificial RUSSEL Stuart. NORVIG, Peter, 2ª Edição. Editora Campus Geração de Configurações de Sistemas Industriais com o Recurso à Tecnologia das Restrições e Computação Evolucionária TAVARES, J.A.R 2000
OBRIGADO Constraint Logic Programming por Thiago do Nascimento Ferreira