On the declarative semantics of deductive databases and logic programs
Foundations of deductive databases and logic programming
Minimum and maximum predicates in logic programming
PODS '91 Proceedings of the tenth ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems
The well-founded semantics for general logic programs
Journal of the ACM (JACM)
Stable models and non-determinism in logic programs with negation
PODS '90 Proceedings of the ninth ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems
Programming with non-determinism in deductive databases
Annals of Mathematics and Artificial Intelligence
The VLDB Journal — The International Journal on Very Large Data Bases - Prototypes of deductive database systems
Computation of Stable Models and Its Integration with Logical Query Processing
IEEE Transactions on Knowledge and Data Engineering
Efficient Recursive Aggregation and Negation in Deductive Databases
IEEE Transactions on Knowledge and Data Engineering
Dynamic Programming in Datalog with Aggregates
IEEE Transactions on Knowledge and Data Engineering
CORAL - Control, Relations and Logic
VLDB '92 Proceedings of the 18th International Conference on Very Large Data Bases
Theory and Practice of Logic Programming
Hi-index | 0.00 |
The greedy paradigm of algorithm design is a well known tool used for efficiently solving many classical computational problems within the framework of procedural languages. However, it is very difficult to express these algorithms within the declarative framework of logic-based languages. In this paper, we extend the framework of Datalog-like languages to provide simple and declarative formulations of such problems, with computational complexities comparable to those of procedural formulations. This is achieved through the use of constructs, such as least and choice, that have semantics reducible to that of negative programs under stable model semantics. Therefore, we show that the formulation of greedy algorithms using these constructs lead to a syntactic class of programs, called stage-stratified programs, that are easily recognized at compile time. The fixpoint-based implementation of these recursive programs is very efficient and, combined with suitable storage structures, yields asymptotic complexities comparable to those obtained using procedural languages.