Next: Experiments
Up: Variants for -Moves
Previous: Per subset and per
In order to implement the algorithms efficiently in Prolog, it is
important to use efficient data-structures. In particular, we use an
implementation of (non-updatable) arrays based on the N+K trees of
[16, pp.142-145] with N=95 and K=32. On top of this
datastructure, a hash array is implemented using the SICStus library
predicate term_hash/4 which constructs a key for a given term.
In such hashes, a value in the underlying array is a partial list of
key-value pairs; thus collisions are resolved by chaining. This
provides efficient access in practice, although such arrays are quite
memory-intensive: care must be taken to ensure that the deterministic
algorithms indeed are implemented without introducing choice-points
during runtime.
2000-07-10