O slideshow foi denunciado.
Mecanismos avançados para
manipulação de tabelas em sistemas
Prolog com suporte para tabulação

         Flávio Manuel Fer...
Palavras-chave

Prolog
Tabulação
Call-Subsumption
YAP
XSB Prolog
Prolog
 SLD (Selective Linear Definite) é a estratégia de avaliação
 tradicional do Prolog
 Apesar de ser muito usada tem a...
Prolog
                path(1, Z)


           path(1, Z), edge(Z, Y)


             CICLO INFINITO


E agora?
Tabulação

A tabulação é uma forma diferente de avaliar Prolog
Resolve as incapacidades da SLD quanto aos ciclos infinitos ...
Tabulação
                           1. path(1, Z)      11. complete




   2. path(1, Z), edge(Z, Y)               3. edg...
Call-Subsumption

A extensão do YAP para Tabulação (YapTab) só suporta
chamadas variantes (Call-Variance)
O objectivo do t...
Call-Subsumption
Call-Variance só reaproveita soluções de um golo se este for variante de um
já colocado na tabela. Exempl...
Perspectivas de solução

O mecanismo de tabulação do XSB Prolog já implementa
Call-Subsumption
Existem dois artigos que de...
Plano de Trabalhos

Estudo dos modelos de execução de tabulação em sistemas
Prolog com particular ênfase na implementação ...
Plano de Trabalhos

Tentar reutilizar algoritmos e estruturas de dados do XSB
Prolog e integrá-los na máquina do Yap (2,5 ...
Plano de Trabalhos

Testes e validação (1 mes)
Escrita de 1 ou 2 artigos sobre o trabalho efectuado
Dissertação! (1 mes)
:- Fim.
Obrigado pela vossa atenção!
Prasad Rao, C. R. Ramakrishnan, I. V. Ramakrishna. A Thread in Time Saves Tabling Tim...
Call-Subsumption
                                      1. path(X, Y)        11. complete

                                ...
Próximos SlideShares
Carregando em…5
×

Call Subsumption

275 visualizações

Publicada em

Publicada em: Tecnologia
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Call Subsumption

  1. 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
  2. 2. Palavras-chave Prolog Tabulação Call-Subsumption YAP XSB Prolog
  3. 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).
  4. 4. Prolog path(1, Z) path(1, Z), edge(Z, Y) CICLO INFINITO E agora?
  5. 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
  6. 6. Tabulação 1. path(1, Z) 11. complete 2. path(1, Z), edge(Z, Y) 3. edge(1, Y) path(1, VAR0): 4. VAR0 = 2 Z=2 Z=3 7. VAR0 = 3 6. edge(2, Y) 9. edge(3, Y) 4. Y = 2 5. fail 7. Y = 3 8. fail 10. fail
  7. 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. 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. 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. 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. 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. 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. 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
  14. 14. Call-Subsumption 1. path(X, Y) 11. complete path(VAR0, VAR1): 3. VAR0 = 1, VAR1 = 2 4. VAR0 = 2, VAR1 = 3 2. edge(X, Y) 7. edge(X, Z), path(Z, Y) 5. VAR0 = 3, VAR1 = 4 10. VAR0 = 1, VAR1 = 3 15. fail 13. VAR0 = 2, VAR1 = 4 17. VAR0 = 1, VAR1 = 4 3. X = 1 4. X = 2 5. X = 3 6. fail Y=2 Y=3 Y=4 8. path(2, Y) 11. path(3, Y) 14. path(4, Y) path(2, VAR0): 9. Y = 3 12. Y = 4 9. VAR0 = 3 16. VAR0 = 4 16. Y = 4 path(3, VAR0): path(X, Y) :- edge(X, Y). 12. VAR0 = 4 path(X, Y) :- edge(X,Z), path(Z, Y). edge(1, 2). edge(2, 3). edge(3, 4).

×