Banco de Dados de Restrições,
Multimídia e GIS
Jairo Coutinho (jco)
CIn-UFPE
Programação por restrições:
definição e origens
Paradigma criado para problemas de busca difícil
incorpora técnicas de matemática, inteligência artificial e
pesquisa operacional
permite rápido desenvolvimento de programas, economia
de manutenção e eficiência
pioneiro: Sketchpad system (1963, Sutherland),
linguagem por restrições para interações gráficas
modelagem declarativa e garantia de satisfação eficiente
• Algoritmo = Lógica + Controle
• Restrições para programação multidirecional
• Programação em Lógica por restrição
Programação por restrições:
definição e origens
Problemas de satisfação de restrições (CSP)
• investigados em busca e IA desde muito tempo
• jogos (ex, n-rainhas) e problemas benchmark (ex, coloração de
mapa)
• resolução de tais problemas recentemente incorporadas a
linguagens de programação
Buscas inteligentes e flexíveis
• permitir que o usuário final possa controlar a busca
• combinando técnicas genéricas de busca cega
• com heurísticas para problemas específicos
Programação por restrições:
exemplo, coloração de mapa
Simulação passo a passo...
A= green
B = green (falha c/ A)
B=red
C=green (falha c/ A)
C= red
D=green
E= green (falha c/ A)
E= red (falha c/ B)
E= blue
F=green (falha c/ D)
F=red (falha c/ C)
F = blue (falha c/ E)
F backtracking
E backtracking
D=red
E=green (falha c/ A)
E= red (falha c/ B)
E= blue
F=green
variáveis: A,B,C,D,E,F
domínio: Da=Db...=Df={green,red,blue}
restrições:
A B; A C; A E; B E; B
F; C E; C F; D F; E
F
A
B
C
E
F
D
Programação por restrições:
aplicações práticas
alocação de recursos, agendamento
planejamento financeiro, manutenção, localização,
gerenciamento de investimento.
projeto e implementação de interface gráfica (ex,
Object Technology International).
escalonamento baseado em restrições, com aplicação na
indústria pesada (ex, NASA, forças armadas)
projeto e integração de circuitos digitais, e controle
tempo real.
banco de dados e comércio eletrônico
Programação por restrições:
paradigmas, linguagens e sistemas
Paradigmas:
•
•
•
•
Imperativo x Restrições
Funcional
Lógico
OO
3 paradigmas básicos: imperativo, funcional, lógico
OO e Restrições são meta-paradigmas que podem ser
implementados como camada acima de cada dos básicos
Constraint Logic Programming (CLP):
• CLP(R), Prolog III, ECLiPSe, LIFE
Constraint Functional Programming:
• Oz
Constraint Imperative Programming:
• 2LP(C++), CHIP(C++)
Programação por restrições:
domínios e operadores
Domínios Finitos (FD)
• Domínios: , , strings, f(a, ...,b) com a,... b constantes simbólicas
• Operadores: +, -, *. /, <, >, <=, => etc..
Conjuntos
• Domínios: (), (), ..., ({f(a, ...,b) / a, ..., b , }
• Operadores: inter, union, set-diff, etc
Intervalos
• Domínios: [ ] Implementa variáveis que variam sobre Inteiros e
Reais. Baseados resolvedores aritméticos.
Reais (RIA - Real Number Interval Arithmetic)
• Capaz de resolver problemas sobre os reais.
• Funções Reais já implementados
Programação em lógica com restrições (CLP)
clausulas de Horn proposicionais:
• C P1 ... PN
• estender equações entre termos
da PL
• com inequações e outras
restrições
em lógica de predicados,
necessidade de tratar das
variáveis
• p(a) q(b,Z), r(Z)
• p(X)
Unificação: dois termos podem
ser unificados se há valores na
consulta que façam os termos
iguais.
• P(X) X = a, Y = b, q(Y,Z), r(Z)
Idéia da CLP:
ex, P(X) X > 1, Y = b, q(Y,Z), r(Z)
Programação em lógica com restrições
CLP admite somente clausulas de Horn
Programas CLP podem ser explicitamente escritos,
exceto que no lugar de equações existem restrições mais
gerais
CLP(X) com sua semântica define domínio de restrições
Resolvedor é necessário para garantir a corretude e
completude para o algoritmo CLP(X)
Exemplo de CLP:
dieta em ECLIPSE
Programa
•
•
•
•
•
•
•
•
•
•
•
dieta(A,M,D) :- I>0, J>0, K>0, I+J+K
10, entrada(A,I), principal(M,J),
sobremesa(D,K).
principal(M,I) :- carne(M,I).
principal(M,I) :- peixe(M,I).
entrada(rabanete,1).
entrada(massa,6).
carne(filé,5)
carne(porco,7)
peixe(solha,2)
peixe(atum,4)
sobremesa(fruta,2)
sobremesa(sorvete,6)
Resolução
•
•
•
•
•
•
@dieta(X,Y,Z)
X=A, Y=M, Z=D , I+J+K 10 ,I>0,
J>0, K>0 @ entrada(A,I),
principal(M,J), sobremesa(D,K)
X=rabanete, Y=M, Z=D , 1+J+K 10
, J>0, K>0 @ principal(M,J),
sobremesa(D,K)
X=rabanete, Y=M, Z=D , 1+J+K 10
, J>0, K>0 @ carne(M,J),
sobremesa(D,K)
X=rabanete, Y=filé, Z=D, 1+5+K 10
K>0 @ sobremesa(D,K)
X=rabanete, Y=filé, Z=fruta@
BD de restrições: motivação e agenda
Programação por restrição
Alta declaratividade com equações e
inequações entre variáveis lógicas
Dedução em lógica da 1a ordem
Completude computacional
Resolução de restrições eficiente
em domínios predefinidos
Codificação direta e bem
fundamentada das restrições de
integridade
Fornece modelos de dados relacional
e dedutivo como casos particulares
Banco de dados
Persistência
Otimização de acesso a memória
segundaria
Acesso concorrente
Recuperação
Linguagem de manipulação
Visões e dados derivados
Restrições de integridades
Manipulação dinâmica de esquema
Utilitários administrativos
BD de restições
Tupla generalizada: visão dos BD relacionais
no paradigma de programação por restrições
Idéia de BD de restrições: ver uma tupla como conjunto
de restrições sobre um dado domínio de restrições
Tupla generalizada = tupla anotada com restrições entre
valores dos seus elementos: pj(X1, ... , Xk) | C
Ex, tupla pessoa simples:
• Em relacional: (‘Bruce’,’Willis’,’GroupLeader’,01/05/90)
• Como restrições: {(FN,LN,Pos,Date)| FN=‘Bruce’ LN=‘Willis’
Pos=‘GroupLeader’ Date=01/05/90}
• Generalizada com inequação: {(FN,LN,Pos,Date)| FN=‘Bruce’
LN=‘Willis’ Pos=‘GroupLeader’
01/01/95 Date Date 01/05/90}
Numero finito de tuplas generalizadas podem
representar infinidade de tuplas relacionais
Agentes, armazém e
resolvedores de restrições
Armazém:
• aplica informação parcial sobre uma variável, expressa como uma
restrição da mesma
• um modelo que trate das restrições primitivas de um domínio
• aproximação da uma solução intermediária da consulta corrente
Resolvedor (computação global centralizada):
• verifica automaticamente a consistência de cada nova primitiva
passada com as existentes no armazém
Agentes (computação local distribuída):
•
•
•
•
•
daemons tratando de um conjunto dado variáveis
disparados por alteração da faixa de uma dessas no armazém
propagada efeito dessa alteração nas suas outras variáveis
manda novas faixas para a armazém e suspende-se
o estado corrente da computação distribuído entre armazém e
agentes
Exemplo de resolução de restrições por meio
de agentes, armazém e resolvedores
Quatro agentes trabalhando no problema:
• 3 X, X 1, X Y, Y X
• A1 aplica 3 X, A2 aplica X 1, A3 aplica X Y, A4 aplica Y X
A1
=3
A2
X=1
A3
A4
Y=3 Y=2
X=2 =2
Y=2 Y=3
X
Step
1
2
3
4
X
Arquiteturas de BD de restrições
Acoplamento fraco:
• idéia: armazenar restrições persistentemente num BD relacional
+ reaproveita serviços de BD como indexação e otimização de
acesso a memória secundária e de gerenciamento de transações
+ desenvolvimento rápido
- overhead de conversão de restrição para relação
- ineficiência e perda de significado
Acoplamento forte:
•
+
+
idéia: tornar restrições persistentes
sem perda de significado, nem overhead de conversão
reimplementação no novo paradigma de todos os serviços de BD
desenvolvimento custoso
conceitualmente bem fundamentada
escalabilidade, extensibilidade, etc.
BD de restrições: sistemas implementados
ECLIPSE/MegaLog
• ECLiPSe: linguagem de programação em lógica por restrições
implementando CLP(R), CLP(FD), CLP(Intervalos), CLP(Conjuntos),
CLP(Estruturais)
• Megalog pode armazenar variáveis de restrição e suporta
indexação multidimensional
• Falta uma linguagem de consulta de restrições integrada,
indexação e otimização
DISCO
• implementadas: intervalos ordenados de inteiros e conjuntos
ordenados
• linguagem de consulta baseada na lógica e não-procedimental
• usuários pode representar entradas na base usando restrições
• incorpora vários métodos de otimização
BD de restrições sistemas implementados
C3
• modelo de dados e linguagem de consulta: LiriC
• baseada no paradigma de OO
• incorpora restrições para a descrição de informações espaçotemporal em BD de restrições
• trata cada objeto de restrição separadamente
• expressividade e eficiência
BD de restrições:
limitações do estado da arte
Técnicas de otimização ainda não madura para grande
massas de dados
Abordagem de restrições puras ainda não fornecem
todas os serviços de BD (segurança, transações etc.)
Pouca integração com sintaxe e formalismos de massa
Paradigma de programação por restrições pouco
divulgado e ensinado
Falta de um padrão
Porém:
• conceitualmente muito elegante, expressivo, versátil e otimizável
e então promissor
• já usada para BD temporais, espaciais, multimídia e distribuídas
heterogêneas
BD multimídia: definição e questões
Novos tipos de dados:
• imagens, gráficos, texto, áudio, discurso, vídeo, mídia gerada
Dificuldades de tratar desses separadamente:
• não suportados como built-in por linguagens de programação de
propósito gerais ou por linguagens de consulta de BD
produção, manipulação e apresentação requer dispositivos e
ferramentas especiais
• tamanho (de MB a TB no mínimo)
• estrutura e semântica interna complexa
novas linguagens de consultas expressivas
consultas aproximativas (reconhecimento de padrão)
• dependência do tempo (ex, áudio)
Inter-relacionamento entre:
• informações representadas por diferentes mídias (ex, legenda de
uma imagem, imagem de texto escaneado)
• sincronização de dados em várias mídias temporais (ex,
animações, vídeo)
BD multimídia: definição e questões
Armazenamento de informações
•
•
•
•
referências externas
campos longos
uso de funções externas
sistemas extensíveis e orientados a objetos
Modelagem dos dados multimídia
• diferentes técnicas de compressão (áudio e vídeo)
Recuperação de informação
• trechos específicos, composição de novas mídias
• metaconhecimento
Arquitetura
• protocolo de transporte
BD espaciais e GIS: definição e questões
Armazenamento compacto de grande massas de dados
espaciais (representações baseadas em pontos não viáveis
para muitas aplicações)
Raciocínio geométrico sofisticado e eficiente
• ex, interseção, opacidade, navegação, alocação de espaço., etc.
Ontologia espacial
Indexação multidimensional dos objetos geométricos
Linguagem de consulta especializada
BD espaciais e GIS: abordagens
Abordagens principais:
• BDOO: retângulos, polígonos e objetos espaciais mais complexos
são naturalmente representados
• BD de restrições
• representação conjunto de pontos e polígonos de modo natural.
• permite a avaliação de predicados consulta espacial como
interseção e distância.
• Otimização de técnicas de indexação multidimencional
BD espaço temporal: definição e questões
Ausência de uma padrão
• proliferação de diferentes:
modelos lógicos e físicos de dados
linguagens de consulta
• variedade das necessidades das aplicações dificulta padronização
• necessidade de interoperabilidade
BD de restrições
• muitos modelos espaciais, temporais e espaço temporais são
casos particulares do modelo abstrato das tuplas generalizadas
Linguagens de restrições excelente candidata como língua franca
para interoperabilidade entre diferentes bancos espaciais,
temporais e espaço-temporal
Integração de dados e
interoperabilidade em BD distribuídos
BD de restrições generaliza:
•
•
•
•
BD relacionais
BD dedutivas
BD espaciais
BD temporais
Fornece serviços e capacidade de modelagem ortogonal
às fornecidas pelos BDOO
BDOO de restrições excelente candidato para tornar-se
padrão universal de interoperabilidade entre aplicações
avançadas
Porém, não sub-estima SQL:2999 ! :)
Exemplo interoperabilidade via restrições:
BD Temporal
Relação dos pesquisadores
Nom e
Com pany
F ro m
To
A n d e rs o n
A T& T
1980
1993
B ro w n
IB M
1985
1996
C la rk
Lotus
1990
1991
Representando como tupla generalizada
reseacher(name,comp,t) :- name=“Anderson”, comp = “AT&T”,
1980t, t 1993
reseacher(name,comp,t) :- name=“Brown”, comp = “IBM”,
1985t, t 1996
reseacher(name,comp,t) :- name=“Clark”, comp = “AT&T”,
1990t, t 1991
Exemplo interoperabilidade via restrições:
BD Espacial
11
10
9
8
7
6
5
4
3
2
1
Representação em tupla
generalizada
r1
l1
p2
object(p1,x,y) :- x=10, y=4
object(l1,x,y) :- 5x, x9, y = -x+15
p1
t1
object(l1,x,y) :- x=9, 3y, y6
1
2
3
4
5
6
7
8
9
10
11
12
ID
x
y
x'
y'
x ''
y ''
p1
10
4
10
4
10
4
l1
5
10
9
6
9
6
l1
9
6
9
3
9
3
t1
2
3
2
7
6
3
r1
1
2
1
11
11.5
11
r1
11.5
11
11.5
2
1
2
p2
3
5
3
8
4
9
p2
4
9
7
6
3
8
p2
3
5
7
6
3
8
object(t1,x,y) :- 2x, x6, 3y, y7,
y -x+9
object(r1,x,y) :- 1x, x11.5, 2y11
object(p2,x,y) :- x3, y5, yx-1,
yx+5, y -x+13
Exemplo interoperabilidade via restrições:
BD Espaço-Temporal
Representação em tupla
generalizada
1994-1996
11
10
9
8
7
6
5
4
3
2
1
r1
1995-1996
l1
p2
1991-1996
t1
p1
1975-1990
1
2
3
4
5
1980-1986
6
7
8
9
10
11
12
ID
x
y
x'
y'
x ''
y ''
F ro m
To
p1
10
4
10
4
10
4
1980
1986
l1
5
10
9
6
9
6
1995
1996
l1
9
6
9
3
9
3
1995
1996
t1
2
3
2
7
6
3
1975
1990
r1
1
2
1
11
11.5
11
1994
1996
r1
1 1 .5
11
1 1 .5
2
1
2
1994
1996
p2
3
5
3
8
4
9
1991
1996
p2
4
9
7
6
3
8
1991
1996
p2
3
5
7
6
3
8
1991
1996
object(p1,x,y) :- x=10, y=4,
1980t, t1996
object(l1,x,y) :- 5x, x9, y = -x+15,
1995t, t1996
object(l1,x,y) :- x=9, 3y, y6,
1995t, t1996
object(t1,x,y) :- 2x, x6, 3y, y7,
y -x+9, 1975t, t1990
object(r1,x,y) :- 1x, x11.5, 2y11,
1994t, t1996
object(p2,x,y) :- x3, y5, yx-1,
yx+5, y -x+13,
1991t, t1996
BD de restrições: conclusão
Estende BD relacionais e dedutivas
Permite implementar elegantemente BD espaciais,
temporais, multimídia e interoperabilidade em BD
distribuídas heterogêneas
Resolve impedance-mismatch (já que programação por
restrições é computacionalmente completa)
Reaproveita de técnicas de IA (busca heurística),
pesquisa operacional e matemática para conseguir
eficiência
Vasto leque de aplicações práticas e industriais
Apenas na fase inicial em termos de:
• Implementação de SGBD
• Divulgação e ensino do formalismo
• Padronização