Abstract:
The principal technique for enhancing the speed of clause resolution in logic programming languages, such as Prolog, is indexing. Given a goal, the primary objective of indexing is to quickly eliminate clauses whose heads do not unify with the goal. Efforts at maximizing the performance of indexing automata have focused almost exclusively on constructing them with small depth, which in turn translates into making fewer transitions. Performance of an automata also critically depends on its ability to make each transition efficiently. This is a problem that has largely been ignored and constitutes the topic of this paper.Although jump tables ensure that each transition can be done in constant time they are usually very sparse and hence are seldom used in implementations. We describe a novel method to construct dense jump tables for indexing automata. We present implementation results that show that our construction indeed yields jump tables that are dense enough to be practical. We also show that indexing automata that use jump tables based on our method, improve the overall performance of Prolog programs. We also provide experimental evidence that our method is a general technique for compressing transition tables of other finite state automata such as those used in scanners.
Bibtex Entry:
@inproceedings{DRR:PLILP95, author = {Steven Dawson and C. R. Ramakrishnan and I. V. Ramakrishnan}, title = {Design and Implementation of Jump Tables for Fast Indexing of Logic Programs}, booktitle = {Seventh International Symposium on Programming Languages: Implementations, Logics and Programs ({PLILP})}, pages = {133--150}, series = {Lecture Notes in Computer Science}, volume = {982}, publisher = {Springer}, year = {1995} }
Full Paper: | [pdf] |
C. R. Ramakrishnan
(cram@cs.sunysb.edu)