给定一个无向(无长度)图 G=(V,E),|V|=n 和 |E|= m,以及两个顶点 v,w,求输出 G 中最短 vw 路径数的算法。运行时间应该是 O(m+n)
我一直在解决这个问题,但很难让运行时间为 O(m+n)
由于该图既是无向图又是未加权的,因此我尝试过这种方式。使用 BFS 确定最短 vw-path 的长度。然后使用 DFS 找到 vw-shortest 路径的数量,使得两个节点连接并且路径的长度等于 BFS 的输出。但是这个计划的运行时间是O(m+n)+O(m+n)。
我还尝试修改 Dijkstra 算法。当有一个节点加入到访问节点集合中时,存储最短路径的长度和最短路径的数量。而且我坚持计算运行时间。