Determining the Equivalence of Algebraic Expressions by Hash Coding
Journal of the ACM (JACM)
Fast Probabilistic Algorithms for Verification of Polynomial Identities
Journal of the ACM (JACM)
Probabilistic Algorithms for Deciding Equivalence of Straight-Line Programs
Journal of the ACM (JACM)
Determining equivalence of expressions in random polynomial time
STOC '84 Proceedings of the sixteenth annual ACM symposium on Theory of computing
Canonical representations in Lisp and applications to computer algebra systems
ISSAC '91 Proceedings of the 1991 international symposium on Symbolic and algebraic computation
Signature functions for algebraic numbers
ISSAC '94 Proceedings of the international symposium on Symbolic and algebraic computation
Reliable Implementation of Real Number Algorithms: Theory and Practice
Hierarchical representations with signatures for large expression management
AISC'06 Proceedings of the 8th international conference on Artificial Intelligence and Symbolic Computation
Hi-index | 0.00 |
We devise several procedures based on signatures (or hashing functions) to determine equivalence of expressions in Random Polynomial Time (also called Probabilistic Polynomial Time) (RPT). We extend the previous results known to include various new functions that can be tested. These procedures return as result: “equivalent” or “not-equivalent”. The result “not-equivalent” is always correct, while the result “equivalent” is correct with probability at least 1 — &egr;. This probability depends on a random number generator and is independent of the problem being solved. In all our procedures, the value &egr; can be made arbitrarily small. This method works for determining equivalence over an important class of functions as well as answering other questions like linearity, polynomial dependence, squareness, independence, etc.The general scheme for all these algorithms is to use a basic heuristic “test” several times. I.e. solve( problem, epsilon ) repeat select suitable characteristic p randomly; assign random values to all variables; t := test( problem, p ); if t = “not-equivalent” then return( t ) until Prob of cumulative failures = epsilon; return( “equivalent” );It is assumed that “test” gives a wrong answer with probability &dgr;, where &dgr; remains bounded below 1. For all our “test” procedures, &dgr; ≤ 1/2.In what follows we will describe the “test” part of the different procedures, it is always assumed that these are used in the above context.Without loss of generality we will assume that equivalence of expressions (A ≡ B) can be transformed into testing for 0 (A — B ≡ 0).This test can be performed “quickly” in the sense that it can run in polynomial time on the size of the dag (directed acyclic graph) representation of the expression, also known as “linear program representation” of an expression.