搜索算法
文章平均质量分 77
Electro1ux
这个作者很懒,什么都没留下…
展开
-
Dijkstra蒜法—C语言实现(邻接表)
Dijstra,求解单源最短路径问题,解决一个顶点到其它所有顶点的最短路径,但是无法求解权值为负数的情况(负权值可考虑使用spfa)。是一种基于BFS(广度优先)从起点开始,一层层向外拓展,逐步更新数据,直到拓展到终点为止。基本思想初始有S,U两个集合,S记录已经求出最小值的顶点,U记录还未求出最小值的顶点,dist数组记录顶点到其余所有点的最短路径长度,path数组用来记录最短路径。。初始...原创 2019-07-21 11:48:02 · 1768 阅读 · 3 评论 -
SPFA蒜法(SLF与LLL优化)——C语言实现
Dijkstra算法可以较快的解决单源最短路径问题,并且SPFA算法时间复杂度更大,那我们为什么还要用SPFA呢,在有些问题中,权值是有负值的情况,但是Dijkstra不能解决负权值,这时候就需要我们用SPFA算法了。SPFA本质上算是Bellman-Ford的优化,由于Bellman-Ford时间复杂度过高,我们一般更偏爱SPFA,SPFA可以解决负权值问题,但是无法处理负环的情况,我们可以事...原创 2019-07-21 20:46:59 · 629 阅读 · 1 评论 -
A*蒜法——C语言实现
概述其实A*算法用来尝试解决的问题很简单,就是从源点移动到目的地,所花费的代价最小,找到这样一条路径,这个代价可以是时间,距离,金钱等。我们找路径时,关注的重点不再只是,找他去终点的最短路径,而是要综合考虑,路径长度和路径算法两个方面,简单的讲就是路径排序的依据不仅仅是路径长度,而是依据 L + P这里,L = 源点到终点的移动成本,也就是最短路径长度。P = 该点到终点的预估成本,也就是...原创 2019-08-01 11:33:37 · 429 阅读 · 0 评论