图论
文章平均质量分 75
图论知识
wh233z
努力学习in……
展开
-
何为LCA(最近共同祖先)?
(也称暴力枚举,从一个点开始向上标记他的父节点,直接标记到根节点为止,然后另另一个点也开始向上回溯,当这个点被标记过,则找到这两个点的共同祖先),当数据过大时,很明显这个算法会超时,所以本文不过多解释此方法。用层序遍历的思想求出树的深度和宽度,同时标记每个节点所在的层数,然后用tarjan算法求出a和b的共同祖先,最后套公式输出距离即可。顾名思义,就是求两个节点最近的共同祖先,就好比下图,2和3的共同祖先为3,2和4的共同祖先为1。2.枚举所有没有访问的过的子节点y,继续遍历子节点。5.标记当前节点回溯。原创 2024-05-13 20:56:46 · 647 阅读 · 0 评论 -
何为并查集?
并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。简单来说,并查集是用来管理元素分组的算法。并查集的作用是什么?并查集可以高效的对元素进行分组(合并在一起),并且能快速的查询两个元素是否属于同一组。P3367 【模板】并查集 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)假设我们有3个人x,y,z假设x打赢y,a[y]=x;也就是说x是y的老大。原创 2024-05-10 19:04:46 · 431 阅读 · 0 评论 -
求最短路径的基本方法——SPFA(贝尔曼-福特算法的优化算法)
SPFA算法是求解单源最短路径问题的一种算法,由理查德·贝尔曼(Richard Bellman) 和 莱斯特·福特 创立的。有时候这种算法也被称为 Moore-Bellman-Ford 算法,因为 Edward F. Moore 也为这个算法的发展做出了贡献。它的原理是对图进行V-1次松弛操作,得到所有可能的最短路径。其优于迪杰斯特拉算法的方面是边的权值可以为负数、实现简单,缺点是时间复杂度过高,高达 O(VE) 其中V是节点数量,E是边数量。但算法可以进行若干种优化,提高了效率。原创 2024-08-02 11:27:23 · 1009 阅读 · 0 评论 -
求最短路径的2种基本方法——Floyd算法与Dijkstra算法
算法的特点:弗洛伊德算法是解决任意两点间的最短路径的一种算法,可以正确处理有向图或无向图或负权(但不可存在负权回路)的最短路径问题,同时也被用于计算有向图的传递闭包。算法特点:迪杰斯特拉算法可以算出从一个顶点到其余各顶点的最短路径,解决的是有权图中最短路径问题。原创 2024-08-01 15:57:13 · 1180 阅读 · 0 评论