Ames Laboratory,
Department of Energy,
ISU,
Ames, Iowa

As the size of the search tree is exponential both in the number of variables and the number of operations, we need as many pruning rules as possible to be able to tackle interesting problems in reasonable time. Due to this, we added some pruning rules that seem to be intuitively appealing, without the guarantee that they eliminate only unpromising subtrees. These rules greatly assist in finding clever solutions but cannot be used to prove the nonexistence of any methods with a given operation budget:
expression, where nis an integer, |n| > 1 and expression is a product of input variables, then we
can also exclude all operations that result in such terms.
This set of pruning rules, along with the conservative pruning rules, reduces the number of possibilities for the a2 - b2 search space from 15552 to a much more manageable 24 expressions. The savings are more dramatic for larger search trees, of course. The resulting search tree for the computation of a2 - b2 is shown in figure 7.
FIGURE 7. Aggressively pruned search tree for a2 - b2
A few more pruning rules were found useful in dealing with goal expressions denoting the product of two mathematical entities like complex numbers, vectors and matrices. None of the goal expressions for such a product contains a term with two variables drawn from the same operand and none of the known shortcuts contains any intermediate expressions with such terms.
We define the structure of a term to be the sequence of operand names from
which the variables forming the term are drawn.
For example, with respect to the
complex product (a + ib)
(c + id), the term bc has
the structure (exp1, exp2), where exp1 and exp2 refer to the first and
the second operand respectively. The following pruning rules are based on the
structures of expressions. Due to these pruning rules, each expression is made of terms of the same structure and the structure of any term can be taken as the structure of the entire expression.
,
operations are allowed only on operands of the same structure.
is allowed only on operands
of different structures.
(a + b) is not allowed whereas (a + b)
(c + d) is allowed.
