
Subsumption Mechanisms for Tabled Logic Programs
Document information
language | English |
pages | 197 |
format | |
size | 1.46 MB |
school | Yap Prolog |
document_type | thesis |
- Tabling
- Logic Programming
- Call Subsumption
summary
I. Introdução
A tabulação é um mecanismo de resolução eficaz que supera limitações do método de resolução SLD em sistemas Prolog, especialmente em relação à recursão e sub-computações redundantes. A técnica de tabulação armazena respostas intermediárias em um espaço de tabela, permitindo a reutilização dessas respostas em chamadas semelhantes. A distinção entre chamadas de subgols tabelados e chamadas similares é fundamental, pois as primeiras são avaliadas através da resolução do programa, enquanto as últimas consomem respostas armazenadas. A tabulação baseada em variantes e a tabulação baseada em subsunção são as duas abordagens principais para determinar a similaridade entre subgols. A primeira considera que dois subgols são similares se forem idênticos após a renomeação de variáveis, enquanto a segunda se baseia na relação de subsunção, onde um subgol é considerado mais específico que outro. A eficiência da implementação da tabulação baseada em subsunção é desafiadora, mas oferece vantagens significativas em termos de desempenho de tempo ao permitir uma maior reutilização de respostas.
II. Mecanismos de Subsumção
Os mecanismos de subsumção são essenciais para a eficiência da tabulação. A subsumção permite que um subgol A seja considerado similar a um subgol B quando A é subsumido por B. Essa relação é baseada no princípio de que, se A é subsumido por B, os conjuntos de respostas correspondentes satisfazem a relação S_A ⊆ S_B. A implementação de mecanismos de subsunção é mais complexa do que a de tabulação baseada em variantes, mas oferece um desempenho superior em cenários onde a reutilização de respostas é crítica. A subsumção é particularmente útil em aplicações práticas, onde a eficiência do tempo de execução é um fator determinante. A introdução de Retroactive Call Subsumption (RCS) é uma inovação que permite a modificação retroativa de nós tabelados ativos, facilitando o compartilhamento total de respostas entre subgols subsumidores e subsumidos, independentemente da ordem em que são chamados.
III. Estruturas de Dados e Algoritmos
A estrutura de dados utilizada na tabulação é fundamental para o desempenho do sistema. A Trie é uma estrutura de árvore que permite a organização eficiente de subgols e respostas. Cada nó da Trie representa um estado que pode ser inspecionado durante a avaliação. A implementação de Time Stamped Tries (TST) permite que as respostas sejam armazenadas de forma a facilitar a reutilização. A organização do espaço de tabela em uma única Trie com carimbo de tempo (STST) maximiza a reutilização de respostas entre subgols do mesmo predicado. Essa abordagem não apenas melhora a eficiência, mas também simplifica a identificação de respostas já consumidas ou geradas. A análise de desempenho dos algoritmos implementados revela que a escolha da estrutura de dados e a organização do espaço de tabela são cruciais para a eficácia da tabulação em aplicações do mundo real.
IV. Resultados Experimentais
Os resultados experimentais demonstram a eficácia dos mecanismos de subsunção implementados. A comparação entre o desempenho do sistema YapTab e o SLG-WAM revela que, em muitos casos, YapTab apresenta um desempenho superior. A análise de benchmarks mostra que a criação do índice de carimbo de tempo no início do programa pode impactar significativamente o tempo de execução. A reutilização de respostas em subgols subsumidos é uma estratégia que se mostrou vantajosa, especialmente em cenários onde a complexidade da computação é alta. A avaliação do desempenho do RCS indica que, embora em alguns casos não haja ganho de desempenho, em outros, a reutilização retroativa de respostas resulta em melhorias significativas. A capacidade de adaptar a estratégia de avaliação para cada predicado é uma contribuição valiosa para a programação lógica.
V. Conclusões e Trabalhos Futuros
As contribuições principais deste trabalho incluem a integração do método TST para subsunção em YapTab e a implementação do mecanismo RCS. A tabulação baseada em subsunção não apenas melhora a eficiência do tempo de execução, mas também reduz o uso de memória. A organização do espaço de tabela em uma única Trie com carimbo de tempo permite uma reutilização mais eficaz das respostas. O trabalho futuro pode explorar a aplicação de técnicas de aprendizado de máquina para otimizar ainda mais a escolha de estratégias de avaliação e a implementação de novos algoritmos que possam melhorar a eficiência da tabulação em cenários complexos. A pesquisa contínua nesta área pode levar a avanços significativos na programação lógica e suas aplicações práticas.
document reference
- Warren’s Abstract Machine – A Tutorial Reconstruction (H. Aït-Kaci)
- Associative Commutative Discrimination Nets (L. Bachmair, T. Chen, I. V. Ramakrishnan)
- Design and Implementation of an OR-Parallel Prolog Engine (M. Carlsson)
- Global Storing Mechanisms for Tabled Evaluation (J. Costa, R. Rocha)
- Tabled Evaluation with Delaying for General Logic Programs (W. Chen, D. S. Warren)