Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Implementação de Call-Subsumption no YapTab
1. Mecanismos avançados para
manipulação de tabelas em sistemas
Prolog com suporte para tabulação
Flávio Manuel Fernandes Cruz
Orientador: Ricardo Rocha
Instituição: CRACS / FCUP
3. Prolog
SLD (Selective Linear Definite) é a estratégia de avaliação
tradicional do Prolog
Apesar de ser muito usada tem algumas lacunas...
path(X, Y) :- path(X, Z), edge(Z, Y).
path(X, Y) :- edge(X, Y).
edge(1, 2). edge(2, 3).
5. Tabulação
A tabulação é uma forma diferente de avaliar Prolog
Resolve as incapacidades da SLD quanto aos ciclos infinitos e
computações redundantes
Consiste em guardar numa tabela as soluções intermédias de
determinados objectivos para que possam ser reutilizadas
quando surgirem chamadas repetidas
7. Call-Subsumption
A extensão do YAP para Tabulação (YapTab) só suporta
chamadas variantes (Call-Variance)
O objectivo do trabalho é alterar o YapTab para também
suportar Call-Subsumption
8. Call-Subsumption
Call-Variance só reaproveita soluções de um golo se este for variante de um
já colocado na tabela. Exemplo: p(X, 1, Y) é variante de P(X, 1, Z)
No entanto podemos fazer ainda melhor, reaproveitando as soluções de
golos mais gerais caso existam
Dizemos assim que um golo T1 subsume um golo T2 quando T1 é mais
geral que T2: path(X, Y) subsume p(1, X)
Com este mecanismo podemos reutilizar resultados computados e diminuir
a redundância nas tabelas do engine, poupando espaço e tempo
9. Perspectivas de solução
O mecanismo de tabulação do XSB Prolog já implementa
Call-Subsumption
Existem dois artigos que descrevem soluções implementadas
para o XSB
A ideia principal será usar as TST (time stamped tries) como
base e tentar melhorar a partir daí
10. Plano de Trabalhos
Estudo dos modelos de execução de tabulação em sistemas
Prolog com particular ênfase na implementação do sistema
YapTab (feito)
Estudo dos algoritmos e estruturas de dados utilizados para
suporte de Call-Subsumption e Common Global Trie (feito)
11. Plano de Trabalhos
Tentar reutilizar algoritmos e estruturas de dados do XSB
Prolog e integrá-los na máquina do Yap (2,5 meses)
Melhorar os algoritmos e estruturas de dados do XSB. O
objectivo será que ambos, XSB e YAP, façam proveito das
novas melhorias (2 meses)
12. Plano de Trabalhos
Testes e validação (1 mes)
Escrita de 1 ou 2 artigos sobre o trabalho efectuado
Dissertação! (1 mes)
13. :- Fim.
Obrigado pela vossa atenção!
Prasad Rao, C. R. Ramakrishnan, I. V. Ramakrishna. A Thread in Time Saves Tabling Time. 1996.
Ernie Johnson, C. R. Ramakrishnan, I.V. Ramakrishnan, Prasad Rao. A Space Efficient Engine for Subsumption-Based
Tabled Evaluation of Logic Programs. 1999.
Ricardo Rocha, Fernando Silva, Vítor Santos Costa. The YapTab Tabling System. 2003.
http://github.com/flavioc/yap
http://flaviocruz.net