其实这篇文章曾经在 "初赛复习" 里,只是觉得把它拿出来以后可能找的更方便一些。 Dijkstra:贪心策略,每次取与源点距离最近的点。一个点不能重复入堆,不适用于负权边(或负环) 1. 朴素版 时间复杂度:$O((m+n)logn)$ 以前打堆优化好像有很多都在mark的地方打错了,但数据比较水。 ...
分类:
其他好文 时间:
2019-11-05 17:03:14
阅读次数:
90
最短路算法有个基础——————松弛操作(在大多数最短路算法都会涉及) 最短路算法一共有多少种方法我不知道,在这里我只想记录4种: ?Dijkstra:求单源点最短路(不含负边权) ?Bellman-ford:求单源点最短路(可含负边权) ?SPFA(使用队列优化后的Bellman-ford) ?Fl ...
分类:
编程语言 时间:
2019-11-01 22:44:30
阅读次数:
126
动态规划(Dynamic Programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化 ...
分类:
编程语言 时间:
2019-10-09 09:30:56
阅读次数:
80
一、 最短路 Floyd 算法,求解图中任意两点的最短路,可处理有向图或负权,时间复杂度 Θ(n3) Dijkstra 算法,求解图中某一点到其余点的最短路,时间复杂 度 Θ(mlog2 n) Bellman-Ford 算法,求解图中某一点到其余点的最短路,时间 复杂度 Θ(nm) 启发式搜索算法A ...
分类:
其他好文 时间:
2019-10-05 10:55:14
阅读次数:
75
https://www.luogu.org/problem/P4822 现在这个大陆上有 N 个城市,M 条双向的道路。城市编号为 1~N,我们在 1 号城市,需要到 N 号城市,怎样才能最快地到达呢?这不就是最短路问题吗?我们都知道可以用 Dijkstra、Bellman-Ford、Floyd-W ...
分类:
其他好文 时间:
2019-10-03 22:02:16
阅读次数:
93
本篇博客只讲思路,总结经验,不适于作为新手零基础学习的材料。 关于负权回路,一般有2种主流算法:spfa与bellman。 spfa判负环: 1、bfs版:即最基础的spfa判负环。有多种判定条件:当一个路径上的节点数大于n时;当某个点的入队次数大于n-1时。最差复杂度O(nm) 2、dfs版:基于 ...
分类:
编程语言 时间:
2019-09-22 16:40:40
阅读次数:
118
何老板最近在玩一款游戏,游戏虽然简单,他仍旧乐此不疲。 游戏地图由n个关卡构成,关卡编号1到n。起点在1号关卡,终点在n号关卡。 关卡间通过m条有向道路相连,每条道路都有一个分值,表示每经过一次该道路,玩家都将获得对应分值。 何老板想知道,他操控游戏角色从起点走到终点,最多能得多少分?请你帮忙计算! ...
分类:
其他好文 时间:
2019-09-22 01:07:29
阅读次数:
90
Spfa $Spfa$ 算法的全称是: $Shortest$ $Path$ $Faster$ $Algorithm$ ,是 $Bellman Ford$ 算法的队列优化算法的别称,通常用于求含负权边的单源最短路径,以及判负权环。 基本原理 设立一个先进先出的队列用来保存待优化的结点,优化时每次取出队 ...
分类:
其他好文 时间:
2019-09-12 21:31:47
阅读次数:
92
适用范围 单源最短路(可判负圈). 原理 Bellman-Ford算法核心思想:动态规划.d[i]的定义为起点s到第i个点的最短距离.刚开始d[i]数组初始化为INF,d[s]=0.然后遍历所有的边,把所有能更新的点更新一遍,能更新的点判定条件为d[to]>d[from]+w(边权),能更新则更新为 ...
分类:
编程语言 时间:
2019-09-08 20:02:54
阅读次数:
105