Bellman-Ford 单源最短路径算法 Python实现
若最短路径不只一条,可寻找到多条最短路径
完整代码:
import numpy as np
import pandas
import numpy
import os
import shutil
def bellmanford(filepath):
# 读csv数据
data_read = pandas.read_csv(filepath, dtype='int')
# 生成列表
data = data_read.values.tolist()
# 遍历节点个数
v_max = max(np.max(data, axis=0)[1], np.max(data, axis=0)[2])
v = v_max + 1
# 生成矩阵
graph = numpy.array(data)
# 定义邻接矩阵,初始值为无穷大
D = numpy.zeros((v, v), dtype='float')
for i in range(v):
for j in range(v):
D[i][j] = numpy.inf
# 根据图G为邻接矩阵赋值
for i in range(0, len(graph)):
D[graph[i][1]][graph[i][2]] = graph[i][3]
for i in range(v):
D[i][i] = 0
# 建立前置节点列表
Pr = [[]for i in range(v)]
# 建立路长列表, 并初始化原点到各点的路长
u = numpy.zeros(v, dtype='float')
for