16
Using Scala 2.9 to implement a kind of Dijkstra algorithm (pseudo code)
val queue = new PriorityQueue
queue.insert(...)
while (!queue.isEmpty) {
val u = queue.extractMin
queue.foreach { v =>
if (condition(u, v))
queue.decreaseKey(v, newPriority)
}
}
I'd like to change priority of an item in Scala's collection.mutable.PriorityQueue.
Therefore tried to
- remove item
- change priority
- reinsert into queue.
But I can't find a method to either update priority or remove a specific item (not
necessarily head element) like java.util.PriorityQueue#remove(Object) as apposed in
Removing an item from a priority queue.
How this task can be done with
scala.collection.mutable.PriorityQueueor do I have to usejava.util.PriorityQueueinstead?Does anyone know whether lack of such a method is by design and it would be recommended to rebuild the queue after changing priority of some items (maybe take a look at discussion about Priority queue with dynamic item priorities)?