Python 如何实现Floyd算法?

Python 如何实现Floyd算法?,python,floyd-warshall,Python,Floyd Warshall,我必须用Python实现Floyd算法 我必须使用这个代码模板。 邻接矩阵在练习中给出,但我必须将其转换为双矩阵,如下所示。最后,需要在双矩阵上执行Floyd算法 我现在的主要问题是将邻接矩阵转换成双矩阵,它包含距离和上一个节点 import math import pprint as pp def createBiMatrix(mat): bimatrix = [] pass return bimatrix def updateForNode(bimat, node):

我必须用Python实现Floyd算法

我必须使用这个代码模板。 邻接矩阵在练习中给出,但我必须将其转换为双矩阵,如下所示。最后,需要在双矩阵上执行Floyd算法

我现在的主要问题是将邻接矩阵转换成双矩阵,它包含距离和上一个节点

import math
import pprint as pp

def createBiMatrix(mat):


bimatrix = [] 


pass

return bimatrix



def updateForNode(bimat, node):

pass;




return bimat



def determinePath(bimat, start, end):


recursionStep(bimat, start, end)

print(end)


def recursionStep(bimat, start, end):

pass

return


if __name__ == "__main__":

matsize = 5

mat = [matsize * [math.inf] for i in range(matsize)]
mat[0][0] = 0
mat[0][1] = 2
mat[0][2] = 10
mat[1][1] = 0
mat[1][2] = 3
mat[1][3] = 12
mat[2][0] = 10
mat[2][1] = 3
mat[2][2] = 0
mat[2][4] = 1
mat[3][1] = 12
mat[3][3] = 0
mat[4][2] = 1
mat[4][3] = 6
mat[4][4] = 0

bim = createBiMatrix(mat)
pp.pprint(bim)


for i in range(matsize):
    bim = updateForNode(bim, i)
    print("Step " + str(i) + ":")
    pp.pprint(bim)



start = 0
end = 3
print("shortest path (" + str(start) + " nach " + str(end) + "):")
determinePath(bim, start, end)

假设
双矩阵
是索引
i
上存储到顶点
i
和前面顶点的最短路径的列表

createBiMatrix(mat):
双矩阵=[(math.inf,无)表示uuu范围内(len(mat))]
对于范围内的from(len(mat)):
对于范围内的to(len(mat[0]):
如果mat[from][to]
有帮助吗?是的,有帮助,但没有解释从相邻矩阵到双矩阵的转换。您希望双矩阵是什么<代码>双矩阵[i]=(距离,节点)s.t.
dist=min(mat[node][i])
用于所有
节点