Как алгоритм Дейкстры формирует дерево кратчайших путей, когда несколько узлов имеют одинаковую длину кратчайшего пути - PullRequest
0 голосов
/ 09 января 2020

Я столкнулся со следующей проблемой:

Рассмотрим ниже график:
enter image description here
Каким будет дерево кратчайших путей, начинающееся с узла $ A $ возвращается алгоритмом Дейкстры, если мы предположим, что очередь приоритетов реализована в виде двоичной минимальной кучи?

Мое решение:

Я сослался на Дейкстру из CLRS:
enter image description here

С A в качестве начального узла у нас будет минимальная куча bin очереди приоритетов следующим образом:

A{root, 0}
    |
Rest all:{∅,∞}

(Обозначение: {parent in SPT, shortest path weight})

Он извлечет A из очереди приоритетов и добавит его в SPT, а A C и AB ослабит:

    B{A:5}
     /  \
C{A:6}  Rest all:{∅,∞} 

Извлечет B из очереди приоритетов и добавит его в SPT:

   C{A:6}
      |
Rest all:{∅,∞} 

и расслабится BE:

            C{A:6}
             /   \
Rest all:{∅,∞}   E{B,6}

Далее будет извлечено C и т. Д. Таким образом, SPT будет:

enter image description here

Но не:

enter image description here

Q1. Правильно ли я с выше?
Q2. CLRS al go не указывает, какой узел добавить в SPT, если несколько из них имеют одинаковый вес кратчайшего пути. Следовательно, это зависит от того, как реализована приоритетная очередь. Если не было предоставлено никакой информации о том, как была реализована приоритетная очередь, мы не можем сказать, как будет формироваться SPT. Я прав?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...