STL Реализация reheapify - PullRequest
       21

STL Реализация reheapify

0 голосов
/ 08 февраля 2012

В алгоритме графа мне нужно найти узел с наименьшим значением.

На шаге алгоритма значение этого узла или его соседей может быть уменьшено, и несколько его соседей могут быть удалены в зависимости от их значения.Кроме того, я не хочу каждый раз искать весь граф для этого узла (хотя он не такой большой (<1000 узлов)). </p>

Поэтому я посмотрел библиотеку STL и нашел структуру кучи, котораяпочти делает то, что я хочу.Я могу очень быстро вставлять и удалять узлы, но есть ли способ быстрого обновления кучи, когда я только изменил значение одного узла, не прибегая к целой куче?Я чувствую, что это было бы огромным узким местом в программе.

1 Ответ

1 голос
/ 08 февраля 2012

Сначала концептуальная часть: если вы используете метод вставки кучи с элементом, который уменьшил его значение в качестве начальной точки для вставки, вместо того, чтобы начинать с конца коллекции, все просто работает.

У меня нетВ C ++ это еще не сделано, но std :: push_heap для этой цели выглядит отлично.

...