Используя Scala 2.9 для реализации своего рода алгоритма Дейкстры (псевдокода)
val queue = new PriorityQueue
queue.insert(...)
while (!queue.isEmpty) {
val u = queue.extractMin
queue.foreach { v =>
if (condition(u, v))
queue.decreaseKey(v, newPriority)
}
}
Я хочу изменить приоритет элемента в Scala collection.mutable.PriorityQueue
.
Поэтому попытался
- удалить элемент
- изменить приоритет
- вставьте в очередь.
Но я не могу найти метод для обновления приоритета или удаления определенного элемента (не
обязательно элемент головы), как java.util.PriorityQueue#remove(Object)
, как показано в
Удаление элемента из очереди приоритетов.
-
Как выполнить эту задачу с помощью
scala.collection.mutable.PriorityQueue
или мне нужно вместо этого использоватьjava.util.PriorityQueue
? -
Кто-нибудь знает, есть ли недостаток такого метода по дизайну, и было бы рекомендовано для восстановления очереди после изменения приоритета некоторых элементов (возможно, взгляните на обсуждение очереди с приоритетами динамических элементов)