2016-11-26 3 views
0

Я работаю над реализацией алгоритма кратчайшего пути Dijkstra в Python. График ориентирован и взвешен. График имеет 1070375 вершин. Первая задача - найти кратчайший путь между вершинами # 100562 и 1070345. Я сделал это. У меня нет проблем с этим. Но вторая задача - найти количество уникальных путей между этими вершинами, которые имеют одинаковую длину и разные внутренние вершины. Мой вопрос в том, что это означает: уникальные пути между ними, которые имеют одинаковую длину и разные внутренние вершины. Может быть несколько путей от 100562 до 1070345, или уникальный путь это также путь, например, от вершины # 111700 до вершины # 111704. Мог ли U показать это на простом графическом примере?Dijkstra Algorithm Specific Case

ответ

0

Простой пример из множества уникальных кратчайших путей между двумя вершинами будет:

(111700) -2-> (1117002) -2-> (1117004) 
     \  /  / 
      \ /  3 
      1 3  /  
      \/ /  
      \/  /  
      (1117001)  

В этом случае у вас есть 2 кратчайших путей от 111700 до 1117004. Один 111700 -> 1117002 -> 1117004 длины 4, но есть еще один из 1117000 -> 1117001 -> 1117004, который также длины 4

Но 111700 -> 1117001 -> 1117002 -> 1117004, очевидно, не является кратчайшей длины пути, потому что этот путь имеет длину 5 (И заметьте, если в этом примере край 1117001 -> 1117002 был весом 1 мы имели бы третий самый короткий путь)