762每一对顶点间的最短路径.pptVIP

  • 1
  • 0
  • 约4.78千字
  • 约 25页
  • 2017-06-15 发布于江苏
  • 举报
762每一对顶点间的最短路径

7.6.2每一对顶点间的最短路径 Dijkstra算法是求源点到其它顶点的最短路径。怎样求任意两个顶点之间的最短路径?我们可以把Dijkstra算执行n次,每次从不同的顶点开始,则算法时间复杂度为O(n3)。 Floyd弗洛伊德给出了另一个算法,时间复杂度也是O(n3),但是形式上简单些。 从演示中看算法思想 一个简单的图及其邻接矩阵如下: 从上面的D(-1)开始,对于每两个顶点u、v,在D(-1)中存储着一条路径u…v。现在我们考察,试着把a加到u、v的路径上能否,得到一条更短的路径,即如果u…a+a…vu…v的话,能够找到一条更短的路径。 从上面的D(0)开始,对于每两个顶点u、v,在D(0)中存储着一条路径u…v。现在我们考察,试着把b加到u、v的路径上能否,得到一条更短的路径,即如果u…b+b…vu…v的话,能够找到一条更短的路径。 从上面的D(1)开始,对于每两个顶点u、v,在D(1)中存储着一条路径u…v。现在我们考察,试着把c加到u、v的路径上能否,得到一条更短的路径,即如果u…c+c…vu…v的话,能够找到一条更短的路径。 现在,已经把所有的顶点都试了一遍,算法结束。每两个顶点之间的路径如D(2)所示。 采用图的邻接矩阵的存储结构 怎样构造一个图,再次不赘述,直接给出floyd算法。 void MDNet::Floyd(CDC *pDC) { typed

文档评论(0)

1亿VIP精品文档

相关文档