图论
文章平均质量分 91
数据结构-图C++实现
图文参考了《算法导论》和《殷人昆 数据结构:用面向对象方法与C++语言描述(第二版)》
NUC_Dodamce
醉生梦死谁成器,拓马长枪定乾坤。
展开
-
数据结构-考研难点代码突破 (图关键路径完全解析(流程+代码) - C++代码)
我们用有向无环网描述某项工程时,数据结构中称这样的网结构为AOE(Activity OnEdge)网,网中的顶点称为“事件”,弧称为“活动”,弧对应的权值代表活动持续的时间。活动的时间余量:活动最迟开始时间-最早开始时间,表示在不增加完成整个工程所需总时间的情况下,活动a可以拖延的时间。,以边上的权值表示完成该活动的开销(如完成活动所需的时间),称之为用边表示活动的网络,简称AOE网。求所有活动的时间余量d(),d(i)=0的活动就是关键活动,由关键活动可得关键路径。原创 2023-01-06 04:29:40 · 1109 阅读 · 0 评论 -
数据结构-考研难点代码突破 (C++实现有向无环图的拓扑排序)
AOV网∶若用DAG 图(有向无环图)表示一个工程,其顶点表示活动,用有向边表示活动 Vi必须先于活动Vj进行的这样一种关系,则将这种有向图称为顶点表示活动的网络,记为 AOV网。在AOV网中,活动Vi是活动Vj的直接前驱,活动Vj是活动Vi的直接后继,这种前驱和后继关系具有传递性,且任何活动V不能以它自己作为自己的前驱或后继。由于输出每个顶点的同时还要删除以它为起点的边,故采用邻接表存储时拓扑排序的时间复杂度为O(V+E),采用邻接矩阵存储时拓扑排序的时间复杂度为 O(V。原创 2023-01-03 17:45:31 · 714 阅读 · 0 评论 -
数据结构-考研难点代码突破(C++实现有向图最短路径算法(Dijkstra,Floyd-Warshall算法)图解操作细节(引自C语言中文网))
在表 1 的基础上,将顶点 1 作为 “中间顶点”,计算从各个顶点出发途径顶点 1 再到达其它顶点的权值,如果比表 1 中记录的权值更小,证明两个顶点之间存在更短的路径,对表 1 进行更新。当图是带权图时,把从一个顶点a到图中其余任意一个顶点x的一条路径(可能不止一条)所经过边上的权值之和,定义为该路径的带权路径长度,把带权路径长度最短的那条路径称为最短路径.初始化默认值(无穷)3-2-1:权值为 1 + 2 = 3,表 1 中 3-1 的权值为 ∞,3 < ∞;原创 2023-01-03 03:25:13 · 2187 阅读 · 1 评论 -
数据结构-考研难点代码突破(C++实现无向图图最小生成树算法(Prim,Kruskal)图解操作细节(引自C语言中文网))
克鲁斯卡尔算法查找最小生成树的方法是:将连通网中所有的边按照权值大小做升序排序,从权值最小的边开始选择,只要此边不和已选择的边一起构成环路,就可以选择它组成最小生成树。B-T 、A-B、S-A 三条边都会和已选 A-C、C-D、B-D、D-T 构成环路,都不能组成最小生成树。从 B-D 边开始挑选,由于尚未选择任何边组成最小生成树,且 B-D 自身不会构成环路,所以 B-D 边可以组成最小生成树。最小生成树的边的权值之和总是唯一的,虽然最小生成树不唯一,但其对应的边的权值之和总是唯一的,而且是最小的。原创 2022-12-28 03:55:27 · 2532 阅读 · 0 评论 -
数据结构-难点代码突破(C++实现图广度优先遍历,深度优先遍历,广度/深度优先遍历生成树和森林,广度优先遍历求单源非带权图两点最短路径)
注意:为了简便起见,这里采用[邻接矩阵](https://blog.csdn.net/dodamce/article/details/128041066?spm=1001.2014.3001.5501)的方式储存图的边信息@[TOC]图的遍历是指从图中的某一顶点出发,按照某种搜索方法沿着图中的边对图中的所有顶点访问一次且仅访问一次。注意到树是一种特殊的图,所以树的遍历实际上也可视为一种特殊的图的遍历。图的遍历算法是求解图的连通性问题、拓扑排序和求关键路径等算法的基础。 图的遍历比树的遍历原创 2022-12-18 00:54:17 · 2560 阅读 · 0 评论 -
数据结构-难点突破(C++实现图的基本操作(邻接矩阵,邻接表,十字链表法储存,邻接多重表代码))
关于图的数据结构,我曾经自己学过一部分,,但是学习本就是重复的过程,这里打算系统的学习一下图。第一步当然是图的储存和基本操作的实现。要用C++实现图的基本操作。原创 2022-12-02 21:08:49 · 2209 阅读 · 0 评论 -
数据结构-图详解(最短路径问题-Dijkstra,Bellman-Ford,Floyd-Warshall算法 -C++)
源节点到结点P的代价(代价为0)与P点到adjoinPoint的代价和(5+0和10+0)与源节点到adjoinPoint代价(无穷(默认值))相比要小,根据上面的过程分析,需要将源节点到adjoinPoint的代价更新为源节点到P与P到adjoinPoint的代价之和。第三次,先从Q组找一个起点到源节点路径最小的节点P,P点就是图中的z点。P点相邻的节点有x,s点,源节点到x点距离根据上图可知为14,源节点到P与P到x代价和为7+6=13,两者相比把小的更新到源节点到x代价即可。......原创 2022-07-23 13:01:43 · 2300 阅读 · 0 评论 -
数据结构-图详解(最小生成树 Kruskal、 Prim算法-C++)
无向图中一个连通图的最小连通子图称为生成树。(用最少的边把所有顶点连接起来)。n个顶点的连通图的生成树有n-1条边。路径长度对于不带权图为路径的边个数。带权图为路径所有边权值的和最小生成树所有生成树中,路径长度最小的生成树。所以生成树一定是连通图。这个定义是在无向图的基础上开展的。连通图无向图中,若顶点A、B存在路径,称为A、B连通。若图中的任意两点都是连通的,则称此图为连通图。......原创 2022-07-17 15:59:09 · 911 阅读 · 0 评论 -
数据结构-图详解(图的遍历(深度、广度)-C++)
图的基本概念和图的存储结构这里存储结构采用邻接矩阵的方式保存边之间的关系。这里学习图的两种遍历方式广度优先队列:以某个顶点为起点,一层一层进行遍历。需要借助队列具体遍历方式与二叉树的层序遍历方式类似,不同的是要通过标记的方式防止节点的重复遍历。深度优先遍历时,没遍历一个节点后,将这个节点标记已访问,防止重复访问。.........原创 2022-07-14 17:35:26 · 693 阅读 · 0 评论 -
数据结构-图详解(C++图基本概念、图的存储结构、图的遍历、最小生成树Kruskal、 Prim算法、最短路径问题-Dijkstra,Bellman-Ford,Floyd-Warshall算法 )
图是由顶点集合及顶点间的关系组成的一种数据结构.表示为 G = (V, E)。V代表的是顶点集合,E代表边集合树也是一种特殊的图,这个图无环.树关注的时节点存的值,图更关注的是顶点及边的权值。权值:边中的附带的数据信息.顶点和边:图中结点称为顶点,第i个顶点记作vi。两个顶点vi和vj相关联称作顶点vi和顶点vj之间有一条边,图中的第k条边记作ek,ek = (vi,vj)或.有向图:顶点对是有序的,顶点对称为顶点x到顶点y的一条边(弧),和.....................原创 2022-07-14 15:11:48 · 1357 阅读 · 2 评论