I'll downgrade this from "bug" to "wish" because the current behaviour is not
really wrong.
It's a bit difficult to act on this because there are two different aspects that
are not so easy to separate experimentally:
1) data structure efficiency
2) tie-breaking
Many of our uses of the queue are not sensitive to tie-breaking because we get
the same result no matter how we break ties. For example, this is the case for
things like h^max, h^add and the distance computations within abstraction
heuristics (merge-and-shrink, perhaps others?). However, FF is highly sensitive
to tie-breaking.
If we want to investigate this more deeply, I suggest that we first make the
type of queue a command-line configurable parameter in a few places, i.e.,
introduce a new parameter "priority_queue" or whatever that allows selecting
between different queue implementations and then do a larger experiment with
different places that use the queue.
Depending on the result, we can then decide if we want to keep this parameter or
remove it again, and whether we want to investigate alternative options for the
queue, such as ones that are similar to the ones we currently have but do
different tie-breaking. For example, for bucket-based queues, FIFO, LIFO and
uniform random should all be easy to implement.
Your thoughts?
|