图论中求多源最短路算法floyd再思考
状态表示:f[k][i][j]
(1)集合:从i到j且中间经过1-k若干个点的集合(且i,j不属于1-k的点)
(2)属性:最小值
状态计算:
可根据是否经过第k个点划分
不经过第k个点:f[k][i][j]=f[k-1][i][j]
经过第k个点 : f[k][i][j]=f[k-1][i][k]+f[k-1][k][j] //只有这样才可以确保一定经过第k个点
所以 f[k][i][j]=min(f[k-1][i][j],f[k-1][i][k]+f[k-1][k][j])
借鉴01背包优化方式可以优化成二维,所以k这一层循环要放在最外面