The Divide-and-Conquer Subgoal-Ordering Algorithm for Speeding up Logic
  Inference
  It is common to view programs as a combination of logic and control: the
logic part defines what the program must do, the control part -- how to do it.
The Logic Programming paradigm was developed with the intention of separating
the logic from the control. Recently, extensive research has been conducted on
automatic generation of control for logic programs. Only a few of these works
considered the issue of automatic generation of control for improving the
efficiency of logic programs. In this paper we present a novel algorithm for
automatic finding of lowest-cost subgoal orderings. The algorithm works using
the divide-and-conquer strategy. The given set of subgoals is partitioned into
smaller sets, based on co-occurrence of free variables. The subsets are ordered
recursively and merged, yielding a provably optimal order. We experimentally
demonstrate the utility of the algorithm by testing it in several domains, and
discuss the possibilities of its cooperation with other existing methods.
