【图论】最短路径

本文详细介绍了图论中的最短路径算法,包括单源的迪杰斯特拉算法和其他算法,以及多源的弗洛伊德算法。还提及了旅行商问题与相关算法的应用。
摘要由CSDN通过智能技术生成

本文为图论的学习总结,讲解最短路径算法。

当边的权值全相同时,我们可以从起点出发对图进行 BFS,遇到终点时停止。由此得到的广度优先生成树上,从根节点到终点节点就是中转次数(即总权值)最少的路径。

但实际情况中,边的权值不完全相同,我们通常这个问题分为两类,一种是从某个源点到其余各顶点的最短路径(单源),另一种是每一对顶点间的最短路径(多源)。

单源

迪杰斯特拉

首先将起点放入集合 S S S,对其余各点标记起点到该点的最小距离和路径。找一条从 S S S 中出去的最短边加入边集 E E E,将边的终点加入 S S S,并更新各点标记。不断重复直到所有点都被标记。

dDmG5t.png

编程实现见【Dijkstra 算法】,算法复杂度为 O ( n 2 ) O(n^2) O(n2)

其他算法

其他算法如 Bellman Ford、SPFA、堆优化的 Dijkstra 等见【单源最短路径】、【A* 算法】、【模拟退火算法】、【遗传算法】。

多源

弗洛伊德

如果将 Dijkstra 算法重复 n n n 次也可以进行求解,Floyd 算法形式上更加简单。

( v i , … , v k ) (v_i,…,v_k) (v

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值