找到从给定节点 s 到任何其他节点 v 的最短路径数的算法?

algorithm that finds the number of the shortest paths from given node s to any other node v?

我想找到一种算法,当给定一个图 G=(V,E) 和一个来自 V 的节点 s 时,对于 V 中的任何节点 v 它找到从 s 到 v 的最短路径的数量。 我了解到 BFS 算法找到从 s 到 v 的最短路径,但我只是不知道如何使用它来解决这个问题。 任何帮助将不胜感激。

这是伪代码(意思是未经测试Python)。

path_count[s] = 1
length_to[s] = 0
todo = [s] # A queue
while len(todo):
    v = todo.pop(0)
    for w in edges(graph, v):
        if w not in length_to:
            length_to[w] = length_to[v] + 1
            path_count[w] = 0
            todo.append(w)

        if length_to[w] == length_to[v] + 1:
            path_count[w] += path_count[v]

之后length_to[v]给出到v的最短路径的长度,paths_to[v]给出到v的最短路径的数量。 (这就是您要找的。)