简单图论课件.pptVIP

  • 20
  • 0
  • 约4.7千字
  • 约 30页
  • 2018-03-12 发布于广东
  • 举报
简单图论课件.ppt

蛟川书院 邵铖希 Floyd算法简介 Floyd算法用于求解多源最短路径(即任意两个可连通点之间的最短路径),是一种动态规划算法,稠密图效果最佳,边权可正可负。 此算法简单有效,由于三重循环结构紧凑,对于稠密图,效率要高于执行|V|次Dijkstra算法,也要高于执行V次SPFA算法。(V表示总点数) 空间复杂度O(n^2),时间复杂度O(n^3)。 简单流程(floyd求最短路) floyd扩展1:求最短路径经行的路径。 1.这里要用一个矩阵P,它的定义是这样的:P[i][j]的值如果为k,就表示i到j的最短行经为i-k...-j,也就是说k是i到j的最短行径中的j之前的第1个点。 2.P矩阵的初值为P[i][j]=j。有了这个矩阵之后,要找最短路径就轻而易举了。对于i到j而言找出P[i][j],令为k,就知道了路径i-k....-j;再去找P[k][j],如果值为q,k到j的最短路径为k-q...-j;再去找P[q][j],如果值为r,q到j的最短路径为q-r...-j;那么就可得出i到j的最短路径为i-k-q-r....-j。也就是一个递归的过程。 3.但是,如何动态的回填P矩阵的值呢?回想一下,当d[i][j]d[i][k]+d[k][j]时,就要让i到j的最短路径改为走i-...-k-...-j这一条路,那么d[i][k]

文档评论(0)

1亿VIP精品文档

相关文档