Каковы различия между алгоритмом всех кратчайших путей NetworkX и алгоритмом scipy floyd warshall? Есть ли причины предпочесть одно другому? Какой самый быстрый?
NetworkX против Scipy все алгоритмы кратчайшего пути
Ответы (1)
(для тех, кто не знает, что алгоритм numpy floyd-warshall доступен в networkx)
Сетьx описание floyd_warshall_numpy гласит:
Алгоритм Флойда подходит для поиска кратчайших путей в плотных графах или графах с отрицательными весами, когда алгоритм Дейкстры не работает. Этот алгоритм все еще может потерпеть неудачу, если есть отрицательные циклы. Он имеет время работы O (n ^ 3) с рабочим пространством O (n ^ 2).
networkx single_source_shortest_path лучше работает на разреженных графах. Вы должны знать, что если вы используете различные алгоритмы «shortest_path», они игнорируют веса ребер. Различные алгоритмы Дейкстры включают веса ребер.
Более подробное описание здесь.
person
Joel
schedule
15.12.2014
numpy.random.exponential(size=(1000,1000))Я обнаружил, чтоscipy.sparse.csgraph.floyd_warshall()примерно в 10 раз быстрее, чемnetworkx.algorithms.floyd_warshall_numpy. Другая функцияnetworkx.algorithms.floyd_warshallне была завершена в течение разумного времени. - person Colonel Panic   schedule 30.04.2017