Stop the Hollyweb! No DRM in HTML5.

Dijkstra深入思考(待续)

  • 为什么要每次取最短距离

设已经访问的顶点集是U,未访问的集合是T,则dist[i](i属于T)是 源点 ~> S -> i 的最短路径。

源点 ~> i的最短路径可能是

    • 源点 ~> S -> i (=dist[i])
    • 也可能是源点 ~> S -> j ~> i(j属于T,j<>i)(=dist[j]+……)。

显然对于每次访问时放入U的顶点i,之后的dist不会更新,即要保证dist[i]是源点到i的最短距离。当dist[i](i属于T)最小时,显然最短路径只可能是前一种情况(因为其它的dist[j]都大于dist[i],故 源点 ~> S -> j ~> i 的长度肯定大于 dist[i])。所以每次取最短距离就能保证每次计算的是最短路。

posted on 2013-03-28 21:25  灰天飞雁  阅读(157)  评论(0编辑  收藏  举报

填写您的邮件地址,订阅我们的精彩内容:  点击这里给我发消息

添加到收藏夹