Хотя я не могу конкретно говорить о том, как networkx реализует эту функцию, использование алгоритма Дейкстры для решения проблемы кратчайших путей всех пар просто означает запуск одной копии алгоритма Дейкстры, начиная с каждого узла в графе, для вычисления парных расстояний.
При принятии решения, использовать ли цикл for
вокруг одного вызова или использовать функцию all_pairs_dijkstra
, я бы рекомендовал использовать all_pairs_dijkstra
, если у вас нет веских причин не делать этого, поскольку эта функцияявно телеграфирует ваше намерение.Кроме того, если за кулисами проводятся какие-либо оптимизации, вы сможете ими воспользоваться.
Но специально для networkx, есть ли причина не просто использовать более простую функцию all_shortest_paths
?Я полагаю, что это еще проще и будет хорошим вызовом, если у вас нет особых причин использовать all_pairs_dijkstra
.