Advertisement

Python的广度优先搜索(BFS)算法处理相同权重的最短路径问题

阅读量:

BFS广度优先搜索 示例:

针对图示中的无向连通图,假设图中各边的权重均为1,显然存在多条从起点A至终点T的最短路径,现需计算所有不同的最短路径数量。

广度优先搜索

算法分析

在权值相等的最短路径问题中,单源点 Dijkstra 算法将退化为 BFS 广度优先搜索 ,假设初始节点为 0,目标节点为 N:
所有节点的步数 step[0…N-1] 初始设置为 0
当从当前节点 i 向其相邻节点 j 进行扩展时:
如果 step[ j ] 的值为 0,则
将 step[ j ] 设定为 step[ i ] + 1,此时到达节点 j 的路径即等于到达节点 i 的路径加上节点 j
若 step[ j ] 等于 step[ i ] + 1,则
到达节点 j 的路径将更新为原路径加上(到达节点 i 的路径与节点 j 的组合)
在扩展过程中一旦抵达目标节点 N,可立即终止算法执行

Python代码如下:

复制代码
    import numpy as np
    from cop

全部评论 (0)

还没有任何评论哟~