链表(chain table)是我们最常使用的一种数据结构。在信息学竞赛中,经常需要使用链表作为遍历等操作使用的数据结构参与解题过程。这是因为链表具有自己的优点。用数组模拟链表,可以简化链表的使用,从而使链表更好的为我们服务。如果您已经知道链表数据结构的原理,可以跳过第一部分直接查看与数组模拟链表有关的内容。
[...]
| ||||||
链表(chain table)是我们最常使用的一种数据结构。在信息学竞赛中,经常需要使用链表作为遍历等操作使用的数据结构参与解题过程。这是因为链表具有自己的优点。用数组模拟链表,可以简化链表的使用,从而使链表更好的为我们服务。如果您已经知道链表数据结构的原理,可以跳过第一部分直接查看与数组模拟链表有关的内容。 [...] 剩余时间6天。 这几天在复习: 1、网络流 2、二分图匹配 3、线段树 4、树状数组 5、括号序列 近期复习: 1、最短路 2、动态规划 3、线段树 4、网络流 5、二分图匹配 【本文由 Ceeji 原创,转载请注明出处并保留本注释。】 Bellman-Ford算法(根据发明者 Richard Bellman 和 Lester Ford 命名)是求解单源最短路径问题的一种算法。有时候这种算法也被称为 Moore-Bellman-Ford 算法,因为 Edward F. Moore 也为这个算法的发展做出了贡献。 单源点的最短路径问题是指:给定一个加权有向图G和源点s,对于图G中的任意一点v,求从s到v的最短路径。 与迪杰斯特拉算法,(另一种著名的求最短路径的算法)不同的是,在 Bellman-Ford 算法中,路径的权值可以为负数。 设想从我们可以从图中找到一个环路(即从v出发,经过若干个点之后又回到v)且这个环路中所有路径的权值之和为负。那么通过这个环路,环路中任意两点的最 短路径就可以无穷小下去。如果不处理这个负环路,程序就会永远运行下去。 而Bellman-Ford算法具有分辨这种负环路的能力。 算法描述 设G为加权有向图 V是所有结点的集合 E是所有路径的集合 S表示源点 n表示V中所有结点的数目 weight(u,v)表示从结点u到结点v的路径的权值。 Distanz(v)表示从源点s出发到结点v的最短路径的距离,(或者说是从s到v所有的路径中权值的最小值)。【Predecessor(v)表示节 点v的父结点。】在Bellman-Ford算法结束之后,可以输出,G是不是包含一个负环路。如果G不包含负环路,那么Distanz就存储了从s出发 到所有结点的距离。 Bellman-Ford 算法是 SPFA 算法的基础算法。SPFA 算法是 Bellman-Ford 算法的加强版,时间复杂度和适用面都优于 Dijkstra 算法。设G = (V,E,W) 为某一有向带权图(W 即 weight,权值),s,t 分别代表源点和终点,Distance(v) 代表 v 在算法当前阶段中暂定的从源点出发的最短权和,则算法的核心思想是进行至多 |V|-1 次的迭代处理,每次从 s 出发扩展一层路径,逐渐逼近最短路径。 [...] | ||||||
Copyright © 2012 笃志以砺,决起而飞 - All Rights Reserved. LOVE YOU FOREVER. Powered by WordPress & Atahualpa 40 queries. 0.254 seconds. |
||||||
近期评论