Если вы смотрите на невзвешенный график, вы можете использовать поиск в ширину, а сложность по времени для малых k должна быть в среднем O(<k>^k)
, где <k>
- средняя степень рассматриваемого графика.
Если вы хотите рассчитать несколько расстояний на взвешенном графике, вам лучше использовать multi_source_dijkstra_path_length .Я не уверен, какое время выполнения имеет этот алгоритм, но, вероятно, это улучшение по сравнению с несколькими запусками Dijkstra, который имеет O(|V|log(|V|)+|E|)
(в зависимости от реализации).
Если вы хотите использовать пороговое значение,Максимальное расстояние в взвешенном графике, оно, вероятно, зависит от распределения веса на ваших ребрах и минимального или среднего веса ребра, который влияет на количество узлов, необходимых для вычисления, чтобы достичь порога.