菜鸟算法-最短路径-FloydWarshall

Floyd-Marshall最短路径

在寻找任意两点间的最短路径时(A->B),需要引入第三个点(C),通过第三个点中转,看是否能够使 A->C->B 的距离小于 A->B 的距离。

// 999 表示两点之间不连通
var theMap = [4][4]int{
        {0, 2, 6, 4},
        {999, 0, 3, 999},
        {7, 999, 0, 1},
        {5, 999, 12, 0},
}

func Floyd() {
        fmt.Println("Floyd")

        for point := 0; point < 4; point++ {
                for i := 0; i < 4; i++ {
                        for j := 0; j < 4; j++ {
                                if theMap[i][j] > (theMap[i][point] + theMap[point][j]) {
                                        theMap[i][j] = theMap[i][point] + theMap[point][j]
                                }
                        }
                }
                fmt.Println(" Cover point()", point, ") ", theMap)
        }
}

结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 关于诊断X线机准直器的作用,错误的是()。 (6.0 分) A. 显示照射野 B. 显示中心线 C. 屏蔽多...
    我们村我最帅阅读 10,896评论 0 5
  • 数据结构与算法--最短路径之Floyd算法 我们知道Dijkstra算法只能解决单源最短路径问题,且要求边上的权重...
    sunhaiyu阅读 1,795评论 2 0
  • Dijkstra单源最短路径 这里求定点A到各顶点的最短距离? 0 我们需要有一个数组记录当前已知的从顶点A到各顶...
    甚了阅读 1,764评论 0 3
  • 她哭着说:“从今往后,我就是别人茶余饭后的谈资了,要习惯被人指指点点,嘲笑讥讽,即使难过也只能独自承受,这样的我,...
    夜白安阅读 256评论 0 0
  • 不管是作为个人还是作为企业来讲,如果想尽快的获得成功,只需满足一个条件即可——让他人获益!任何自私的想独占成功果实...
    未竹阅读 293评论 2 2