
数据结构之图专栏
文章平均质量分 80
讲解关于数据结构中图算法的知识
zhaoliwen是猪啊
这个作者很懒,什么都没留下…
展开
-
图结构专栏——最小生成树之Kruskal算法
最小生成树——Kruskal算法一、最小生成树在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树。例如,对于上图所示的连通网可以有多棵权值总和不同的生成树,而最后的生成树是最小生成树。二、Kruskul算法克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成树的算法。基本思想:按照权值从小到大的顺序选择n-1条边,并保证这n-1条边不构成回路。具体做法:首先构造一个只含n个顶点的森林,然后依权值原创 2021-04-18 18:55:51 · 564 阅读 · 0 评论 -
图结构专栏——Dijkstra算法详解(大量注释)
Dijkstra算法详解(大量注释)Dijkstra 算法是求一个图中一个点到其他所有点的最短路径的算法一、算法详解每次从 「未求出最短路径的点」中 取出 距离距离起点 最小路径的点,以这个点为桥梁 刷新「未求出最短路径的点」的距离,可以结合下面的案例来理解。对于这样一个无向图,我们希望求得节点3到其他节点的最短路径长度。首先,我们定义一个数组distance记录了节点3到其他节点的最短路径长度,再定义一个数组visited记录哪些节点到3节点的最短路径长度已经计算过了,这些数组初始化都为-1。原创 2021-04-15 08:54:20 · 487 阅读 · 0 评论 -
图结构专栏——判断二分图
图结构专栏——判断二分图一、什么是二分图定义:如果能将一个图的节点集合分割成两个独立的子集 A 和 B ,并使图中的每一条边的两个节点一个来自 A 集合,一个来自 B 集合,就将这个图称为二分图 。例子1:这不是一个二分图,因为不能将节点分割成两个独立的子集,以使每条边都连通一个子集中的一个节点与另一个子集中的一个节点例子2:这是一个,可以将节点分成两组: {0, 2} 和 {1, 3}二、如何判断一个图是不是二分图对于图中的任意两个节点 u 和 v,如果它们之间有一条边直接相连,那么原创 2021-04-13 19:31:35 · 1467 阅读 · 0 评论 -
图结构专栏——拓扑排序
三种方法实现拓扑排序一、什么是拓扑排序在图论中,拓扑排序(Topological Sorting)是一个有向无环图(DAG, Directed Acyclic Graph)的所有顶点的线性序列。且该序列必须满足下面两个条件:每个顶点出现且只出现一次。 若存在一条从顶点 A 到顶点 B 的路径,那么在序列中顶点 A 出现在顶点 B 的前面。有向无环图(DAG)才有拓扑排序,非DAG图没有拓扑排序一说。例如,下面这个图:它是一个 DAG 图,那么如何写出它的拓扑排序呢?这里说一种比较常用的方法原创 2021-04-12 10:52:52 · 8814 阅读 · 0 评论