![](https://img-blog.csdnimg.cn/0aef72ccc66f47a58665eccf87d12df7.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
图论
文章平均质量分 83
包含数据结构--图相关内容,年代久远请多关照
Eric_bells
发文须用意,一字值千金
展开
-
dijkstra习题集
城市路(Dijkstra)题目描述罗老师被邀请参加一个舞会,是在城市n,而罗老师当前所处的城市为1,附近还有很多城市2~n-1,有些城市之间没有直接相连的路,有些城市之间有直接相连的路,这些路都是双向的,当然也可能有多条。 现在给出直接相邻城市的路长度,罗老师想知道从城市1到城市n,最短多少距离。输入描述输入n, m,表示n个城市和m条路; 接下来m行,每行a b c, 表示城市a与城市b有长度为c的路。输出描述输出1到n的最短路。如果1到达不了n,就输出-1。样例输入.原创 2022-04-12 07:51:43 · 638 阅读 · 0 评论 -
求图最短路径 详解bellman-ford法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言各位在学习C语言的时候,会遇到这个求图最短路径的算法:bellman_ford,也叫做贝尔曼——福特法。下面我带来这个算法的详解,有问题随时指正~贝尔曼-福特算法(英语:Bellman–Ford algorithm),求解单源最短路径问题的一种算法,由理查德·贝尔曼(Richard Bellman) 和莱斯.原创 2022-04-09 16:54:30 · 989 阅读 · 0 评论 -
求图最短路径2 详解dijkstra算法
定义编辑播报Dijkstra算法一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN, CLOSE表的方式,这里均采用永久和临时标号的方式。注意该算法要求图中不存在负权边。[2]原理编辑播报1.首先,引入一个辅助数组(vector)D,它的每个元素D表示当前所找到的从起始点(即源点)到其它每个顶点的长度。[3]例如,D[3] = 2表示从起始点到顶点3的路径相对最小长度为2。[1]这里强调相对就是说在算...原创 2022-04-09 17:01:46 · 1954 阅读 · 0 评论 -
DFS——深搜详解 图论系列1.1
最大黑区域时间限制:1秒 内存限制:128M题目描述二值图像是由黑、白两种像素组成的矩形点阵,图像识别的一个操作是求出图像中最大黑区域的面积。请设计一个程序完成二值图像的这个操作。黑区域由黑像素组成,一个黑区域中的每像素至少与该区域中的另一个像素相邻,规定一个像素仅与其上下左右的像素相邻。两个不同的黑区域没有相邻的像素。一个黑区域的面积是其所包含的像素数。输入描述第一行两个正整数n和m,1<=n,m<=100,分别表示二值图像的行数与列数后面紧跟着n行,每行含m个整数0或原创 2022-04-23 09:39:58 · 368 阅读 · 0 评论 -
图论10 拓扑排序
上次我们学习了prim和kruskal算法还有LCA点的知识,全是干货……详见《图论9 prim+LCA算法详解》。今天我们来学一个简单又易学的排序算法——拓扑排序。在接触之前,我们先来学一种图,他的名字叫有向无环图(DAG)。这种图指的是一个不包括环的有向图,但是不能是一棵树,要不可能就成了这个图的生成树,这个生成树叫有向树。接下来我们在学习几个干货:点的前驱和后继。一个点的前驱是在到这个点以前必须先到的点,一个点的后继是经过这个点以后可以到达的点。但是注意,这些的前提是没有回路,否则就代表一原创 2022-05-22 16:10:03 · 521 阅读 · 0 评论 -
图论4 详解SPFA
原理及证明编辑播报最短路问题SPFA算法的全称是:Shortest Path Faster Algorithm,是西南交通大学段凡丁于 1994 年发表的论文中的名字。不过,段凡丁的证明是错误的,且在 Bellman-Ford 算法提出后不久(1957 年)已有队列优化内容,所以国际上不承认 SPFA 算法是段凡丁提出的。为了避免最坏情况的出现,在正权图上应使用效率更高的Dijkstra算法。若给定的图存在负权边,类似Dijkstra算法等算法便没有了用武之地,SPFA算法便派上用.原创 2022-04-12 08:19:31 · 407 阅读 · 0 评论 -
BFS——宽搜详解 图论1.2
上次我们学了dfs,深度优先搜索。深搜有个缺点,就是“不撞南墙不回头”的遍历太暴力了,所以可能会时间超限,但是代码好写。我们今天还是来学搜索——宽度优先搜索,bfs。首先,为了让代码好些,我们来学一个库——STL。我们要学2个数据类型:Stack(栈),queue(队列)。先说stack栈。栈的特点是先进后出,像一个车库,先进的车最后才能出来,后进的车先出来。注意加头文件#include<stack>。顺便提一嘴,dfs深搜就使用栈来解决。接下来是常用stack函数原创 2022-04-27 16:26:37 · 719 阅读 · 2 评论 -
图论8 并查集深入解析——边带权并查集和拓展域并查集和最小生成树
我们先复习一下并查集的基本知识。并查集的三个操作:查询,初始化,合并;并查集的结构;操作方法以及代码;路径压缩优化(详见《图论7 弗洛伊德&并查集算法详解》)。补充一下,并查集分两种:1,边带权并查集,也就是要记录边权,我们可以维护一下当前点到父节点的距离,这样就维护出了一个最短距离。然后判断到底是x合并到y还是y合并到x,在进行合并。我们用一个题来看看边带权并查集:信息传递时间限制:1秒内存限制:128M题目描述有 n 个同学(编号为 1 到 n )...原创 2022-04-30 20:31:00 · 288 阅读 · 0 评论 -
图论3 详解Floyd算法
简介编辑播报在计算机科学中,Floyd-Warshall算法是一种在具有正或负边缘权重(但没有负周期)的加权图中找到最短路径的算法。算法的单个执行将找到所有顶点对之间的最短路径的长度(加权)。 虽然它不返回路径本身的细节,但是可以通过对算法的简单修改来重建路径。 该算法的版本也可用于查找关系R的传递闭包,或(与Schulze投票系统相关)在加权图中所有顶点对之间的最宽路径。Floyd-Warshall算法是动态规划的一个例子,并在1962年由Robert Floyd以其当前公认的形式出版。然而.原创 2022-04-12 08:12:10 · 817 阅读 · 0 评论 -
图论6 并查集
正在上传…重新上传取消1.正方形显示正在上传…重新上传取消2.矩形显示正在上传…重新上传取消3.递增三角形显示正在上传…重新上传取消4.递减三角形显示正在上传…重新上传取消正在上传…重新上传取消5.递减倒三角形显示正在上传…重新上传取消6.递增倒三角形显正在上传…重新上传取消7.持续递增三角形显示正在上...原创 2022-04-23 17:37:13 · 98 阅读 · 0 评论 -
图论7 弗洛伊德&并查集算法详解 深度解析图论
上次我们先简单学习了单源最短路问题,也就是说起点是固定的。尤其是spfa和dijkstra,必须熟记模板!!我之前发过一篇解析,关于并查集。复习以后,我们进入正题……这个弗洛伊德,是1978年图灵奖获得者。没事,他先不看。你们学计算机再详细看他。先来思想:其实它是基于动态规划的,代码特别像多维dp。老玩家明白。假设我们写下一组数据:dp[k][i][j],表示在经过的店不超过k个时,从i到j的最短路线。算法也很简单,假设你现在站在一个十字路口,位置是i,你要去名字叫j的饭原创 2022-04-23 20:30:32 · 338 阅读 · 0 评论 -
图论11 连通性和tarjan算法
在今天的课开始之前先道个歉……这几天我有事,所以三周没更贴,今天一起更(稿我都写好啦)今天的主要知识点是图的连通性。先来一些干货,没有这个就没有tarjan算法的那种:1.连通分量&强连通分量:一个有向图或无向图的最大连通子图,一个连通图的连通分量就是他本身。如果这个图不联通,每一个联通部分是一个连通分量。2.强连通有向图:一般叫强连通图,意思是一个有向图的所有点都相连,可以理解为从任意一个点都能走到一个指定的位置。我们这是又要接触一个东西了,他叫搜索树,就是一个保存搜索顺序的树。跟搜索树相关的干货:1,树原创 2022-06-12 08:40:14 · 136 阅读 · 0 评论 -
图论9 prim+LCA算法详解
这周末要上课,忙得很,所以帖子晚更了一个星期,请大家谅解。先复习一下:上节课我们学习了最小生成树和并查集进阶(详见《图论8 并查集进阶和最小生成树》),分为边带权并查集、拓展域并查集和最小生成树。最小生成树有克鲁斯卡尔算法,这个算法是把这个图的边一个一个删掉,出现环就给他删一条边,直到删到一个环也没有了为止。克鲁斯卡尔的方法使用了一个要额外维护点数的并查集思想,所以这个方法还是十分巧妙的。上个代码:bool cmp(edge x,edge y){ return x.w<y.w;原创 2022-05-14 20:35:39 · 259 阅读 · 0 评论 -
链式前向星:为了搜图诞生的“万恶之源”
所以我们发明了前向星存法,就是以边为单位存储,记录起点、终点和权值,重点在于需要排序:首先根据起点排序,完成后一样的起点的边会并列在一起。然后在起点相同的情况下,再根据终点排序,使用的时候,只需要按照次序使用即可。这是个折中一点的方案,效率高,空间花费少,时间也更短一些,而且主要的代码只有四行。链式前向星是要完成所有以同一个点为起点的节点所形成的链式结构,每条单独的链通过数组连接。链式前向星其实就是基于他来的,是一种静态的邻接表。原创 2022-09-11 14:32:57 · 188 阅读 · 0 评论