This class provides a hash value for
objects. This is useful for tabular
planning and learning algorithms that make use of hash-backed sets or maps for fast retrieval.
In general, hash codes should only be computed once, and only once the hashCode method is called.
If something about the StateHashTuple changes, then needsToRecomputeHashCode boolean flag should be
set to true so that the next time the hashCode is called it is recomputed. Likewise, once the
method has been called, it should set the needToRecomputeHashCode flag to false.
By default, equality checks use the standard
object equality check. If you need
to handle this specially, (such as providing state abstraction), then the equals method should be overridden.