其他分享
首页 > 其他分享> > 2022.3.30学习日记

2022.3.30学习日记

作者:互联网

迪杰斯特拉算法:

 连接图是二维邻接矩阵

通过Dijkstra计算图G中的最短路径时,需要指定起点vs(即从顶点vs开始计算)。
此外,引进两个集合S和U。S的作用是记录已求出最短路径的顶点,而U则是记录还未求出最短路径的顶点(以及该顶点到起点vs的距离)。
初始时,S中只有起点vs;U中是除vs之外的顶点,并且U中顶点的路径是"起点vs到该顶点的路径"。然后,从U中找出路径最短的顶点,并将其加入到S中;接着,更新U中的顶点和顶点对应的路径。 然后,再从U中找出路径最短的顶点,并将其加入到S中;接着,更新U中的顶点和顶点对应的路径。 … 重复该操作,直到遍历完所有顶点。


 思路整理:

将地图整理成二维连接矩阵的形式,但把每个站点都当成一个矩阵行列,数据的大小十分庞大,这不是我一个人能应付过来的

所以我将图例简化——我发现图有很多个交叉点,交叉点的出现,导致如果路线出现变更,需要从交叉点换车,并且换乘的次数不固定,要想取得最快的路线,有两种情况:需要换乘和不需要换乘

不需要换乘很简单,从出发点遍历路线站表就可以获得路线

需要换乘的情况就相对复杂了,不仅需要从出发线离开,还需要找到终点站在哪条线中

我将图中交叉点留下,省略其他点,将交叉点之间的站间数作为权值,构造一个简单的无向图。出发点(或终点)如果是交叉点就直接借用交叉图来计算和记录;如果出发点(或终点)不在交叉点就将其向两头延申到交叉点再进行以上计算和记录。

思路清晰,开始构建

标签:路径,需要,30,日记,vs,交叉点,顶点,换乘,2022.3
来源: https://www.cnblogs.com/jnr0219/p/16082049.html