Дейкстра: найти кратчайший путь в ориентированном графе

Рассмотрим ориентированный граф, показанный на рисунке ниже. Существует несколько кратчайших путей между вершинами S и T. Какой из них будет сообщен алгоритмом кратчайшего пути Дейстры? Предположим, что на любой итерации кратчайший путь к вершине v обновляется только тогда, когда обнаруживается строго более короткий путь к v. введите здесь описание изображения

Мой ответ - SBDT, но в решениях он дает SACET, я не могу понять, почему.


person Nishant Kumar    schedule 06.11.2012    source источник
comment
Оба пути имеют длину 10, поэтому они оба являются кратчайшими путями.   -  person flight    schedule 06.11.2012
comment
Это домашнее задание? Попробуйте вручную запустить алгоритм dijstra самостоятельно, и вы увидите, что он обязательно сначала пойдет на SACET и не заменит его на SBDT, когда это возможно, потому что это не лучшее решение, afaik dijstra сначала проверяет ребра с наименьшим весом.   -  person Benjamin Gruenbaum    schedule 06.11.2012
comment
@BenjaminGruenbaum: сначала: S = 0, и все, смежные с s, будут иметь вес {a = 4, b = 3, d = 4}, так что какой из них здесь минимальный, так что идите на B, не так ли ... Извлеките минимум из очередь.... Поправьте меня, если я ошибаюсь   -  person Nishant Kumar    schedule 06.11.2012
comment
Похоже, это домашнее задание, но помните, что тег домашнего задания устарел и удаляется. meta.stackexchange.com /вопросы/147100/   -  person apnorton    schedule 06.11.2012
comment
Это зависит от конкретной реализации. Алгоритм Дейкстры часто реализуется с использованием приоритетной очереди в куче. Порядок объектов в куче может быть разным для одной и той же последовательности вставок в зависимости от реализации. Другими словами, вам нужно будет предоставить точный алгоритм, к которому относится ваш вопрос.   -  person Björn Pollex    schedule 06.11.2012


Ответы (2)


Алгоритм Дейкстры выбирает узлы следующим образом:

B(3) from S
A(4) from S
C(5) from A
E(6) from C
D(7) from S or B
G(8) from E
T(10) from D or E

Таким образом, кратчайший путь к T — это SBDT, SDT или SACET.

Но из-за "the shortest path to a vertex v is updated only when a strictly shorter path to v is discovered" при посещении E предшествующий узел T для кратчайшего пути будет установлен как E и больше не изменится.

Таким образом, ответ SACET.

person Bernhard Barker    schedule 09.01.2013

Запустите его в http://dracos.co.uk/maths/dijkstra/. Ответ: SDT. . Причина: После узла S рассматриваются его непосредственные соседи, т.е.: A(4),D(7),B(3) Теперь рассматриваются непосредственные соседи этих узлов. Мы приходим к SDT(10) до того, как рассматривается узел C, потому что C не является непосредственным соседом S. Ответ: SDT

person Jerry    schedule 08.02.2013