![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
图论初步
文章平均质量分 92
搜索、回溯的相关练习与题解
_L.Y.H._
人生就像复杂的无向图,我们虽然不能找到最短路,但是我们能不断搜索。
展开
-
【喜闻乐见,包教包会】二分图最大匹配:匈牙利算法(洛谷P3386)
下面采用一种喜 闻 乐 见的方式进行演示。突然发现上面的引入太无聊了,那么就换个例子吧。既然是匹配,那就来找女朋友……原创 2023-05-28 16:55:04 · 1082 阅读 · 5 评论 -
拓扑排序详解(包含算法原理图解、算法实现过程详解、算法例题变式全面讲解等)
非常详细的讲解。点开有惊喜!原创 2023-05-06 23:09:02 · 9540 阅读 · 12 评论 -
初级图论全解
边导出子图:选出若干条边,以及这些边所连接的所有顶点组成的图称为 边导出子图。点导出子图:选出若干个点,以及两端都在该点集的所有边组成的图称为 点导出子图。闭合子图:定义在有向图上。点集 V导出的 闭合子图 是所有 V可达的点的点导出子图。其精确定义为若 x在子图内,则 x的所有出点和出边均在子图内的原图子图;等价于每个点能到的所有点都在子图中。差分约束问题为给出若干形如 xa−xb≤c或 xa−xb≥c的不等式,求任意一组 x的解。我们发现,只要 xa,xb。原创 2023-05-27 09:43:21 · 1787 阅读 · 2 评论 -
【最短路算法】SPFA
而在这茫茫的算法大海中,有一种算法闪烁着亮丽的光彩——最短路算法。最短路算法是一种图论算法,用于在加权图中找到两个节点之间的最短路径。交通规划:最短路算法可以用于城市交通规划,帮助确定最短路线,以减少交通拥堵和提高交通效率。物流配送:在物流配送中,最短路算法可以帮助确定最短路径,以最小化运输成本和时间。网络设计:在计算机网络中,最短路算法可以帮助确定最佳路由,以确保数据包能够以最快的速度传输。原创 2023-07-31 23:04:24 · 369 阅读 · 5 评论 -
DFS(深度优先搜索)详解(概念讲解,图片辅助,例题解释,剪枝技巧)
深度优先搜索作为初学者遇到的第一个算法,给大家留下了许多“美好”的回忆。不说废话,先来看看百度百科是怎么说的。深度优先搜索是一种在开发爬虫早期使用较多的方法。它的目的是要达到被搜索结构的叶结点(即那些不包含任何超链的HTML文件在一个HTML文件中,当一个超链被选择后,被链接的HTML文件将执行深度优先搜索,即在搜索其余的超链结果之前必须先完整地搜索单独的一条链。深度优先搜索沿着HTML文件上的超链走到不能再深入为止,然后返回到某一个HTML文件,再继续选择该HTML文件中的其他超链。当不再有其他超链。原创 2023-01-25 17:46:38 · 7230 阅读 · 48 评论 -
宽度优先搜索算法(BFS)详解(超级详细讲解,附有大图)
补充说明:由上可以知道,广度优先搜索的特征为从起点开始,由近及远进行广泛的搜索。因此,目标顶点离起点越近,搜索结束得就越快。三.对比与发现DFS和BFS的区别bfs 遍历节点是先进先出,dfs遍历节点是先进后出;bfs是按层次访问的,dfs 是按照一个路径一直访问到底,当前节点没有未访问的邻居节点时,然后回溯到上一个节点,不断的尝试,直到访问到目标节点或所有节点都已访问。bfs 适用于求源点与目标节点距离最近的情况,例如:求最短路径。dfs 更适合于求解一个任意符合方案中的一个或者遍历所有情原创 2023-01-18 15:32:09 · 39976 阅读 · 38 评论 -
【BFS】巧妙取量(c++基础算法)
②一个特殊情况(特判)当目标状态与初始状态一样时,要直接输出一个yes,0(因为当出现上述情况时,无需操作即可达到目标状态)③标记因为有可能达不到目标状态,因此需要用bool数组(初始值为false)当到达目标状态时,标记为true。详情请看后面的代码。④因为多组数据如题,因为有多组数据,我们要做一些烦人的操作。1.输入要用到EOF这样的东西。EOF:当你将一个文件输入到一个函数中时,它总是会返回一个状态,它是读出来的,或者是失败的,它是如何表达的?所以就约定俗成定义一个标识原创 2023-01-11 21:46:02 · 700 阅读 · 8 评论 -
A* 算法详解(超级详细讲解,附有大图)
今天想跟大家聊的,是我们经常用到,但是却让大家觉得十分神秘的那个算法:A*。这是一个远古而又非常经典的游戏——红警和玩的时候,就会发现这里面的兵,你只要指定好地点,他们就会自己朝目的地进发,最终去向你指定的地点。。。(这段是看了参考资料【1】之后乱编出来的)很多游戏也是这样,它会将你指定的人物,以一定的路径,到达某地(逐渐抽象)。简单来说,就是。在游戏,乃至生活之中,在很多地方会有寻路的需求。而我们因为各种原因,总会寻求最短的路线,在计算机科学中,这种寻求最短路径的问题统称为。原创 2023-01-01 19:59:05 · 20956 阅读 · 11 评论 -
【BFS】海上救援任务(c++基础算法)
普及组训练营暂时停更。②题意若存在xs,ys在不经过零的情况下到达xe,ye的路线,则输出最短路径;否则,输出Impossible三.做题可以说,这道题是百年不遇的水题,因此就不解释了。唯一值得注意的是,存入地图的操作。 scanf("%d%d",&n,&m); for(int i=1;i原创 2022-12-28 13:48:00 · 1374 阅读 · 4 评论 -
【BFS】魔板(c++基础算法)
人都是用二维数组来搞,但我觉得没有必要。我直接在main函数中,利用switch()语句来进行。“A”功能:循环j从1-4,交换a[j]与a[9-j]。“B”功能:循环j从1-3,交换a[j],a[4],和a[9-j],a[5].(不断对第j列[j会不断加1]和最后一列交换,最终达成目的)“C”功能,直接换来换去。switch(i) { case 1: for(int i=1;i原创 2023-10-01 09:44:34 · 1198 阅读 · 1 评论 -
【BFS】八数码问题(c++基础算法)
作为最经典的一道宽度优先搜索题,它的题面并不是很难懂。题目描述【题意】在3×3的棋盘上摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格,空格用0来表示。空格周围上下左右相邻的棋子可以移到空格中。现给出原始状态和目标状态,求实现从初始布局到目标布局的最少步骤(初始状态的步数为0)。如下图,答案为5。【输入格式】第一个3*3的矩阵是原始状态;第二个3*3的矩阵是目标状态。【输出格式】输出移动所用最少的步数。【样例1输入】2 8 3。原创 2023-09-30 21:11:26 · 4783 阅读 · 1 评论 -
【宽搜必备】康托展开(从公式解析到代码实现)
1220: 【宽搜必备】康托展开及其逆运算内存限制:128 MB时间限制:1.000 S题目描述给出正整数n(1原创 2022-12-17 16:06:58 · 1718 阅读 · 6 评论 -
康托展开和康托展开的逆运算
第一个数x1,假设x1目前有k个比x1小的并且还没有出现过的数,那么 k= 28016 / (8-1)!= 28016 / 5040=5(28016除以5040等于5,不理余数), 也就是有5个比x1小并且没有出现过的数,那么x1=6.28016变成28016 - 5040*5=2816。= 23 / 6 = 3, 也就是有3个比x2小并且没有出现过的数,那么x2=5.(有3个数比它小的数是4,但4已经在之前出现过了,所以是5)第一个数是4,研究比4小的并且还没有出现过的数有3个:1,2,3。原创 2023-12-31 12:13:27 · 570 阅读 · 4 评论 -
一场分班考试
小航如愿以偿,以五百分的成绩,进入了c++佚名者学校。(详见走进“深度搜索基础训练“,踏入c++算法殿堂(五)_aliyonghang的博客-CSDN博客)现在到了分班考试时间,同学们个个摩拳擦掌,准备考试。 “叮——”考试开始。第一道题题目:1.迷宫问题(Standard IO)时间限制:1000 ms空间限制:262144 KB具体限制题目描述:输入:第一行输入n,表示n行n列的迷宫接下来有n行,每行n个数,...原创 2022-01-19 18:21:28 · 541 阅读 · 4 评论 -
【小测试,大题解】烈日中的BFS
过了几天,夏天来了。朝阳似火,炙烤大地;老师严肃,严格无比……很快,一次“小测”来了。 同学们刚落座,测试就开始了。小航马上打开文档,读起题来。“现在,你们要学的越来越多,学习任务更紧更多了,学习更加辛苦了,就如同夏天烈日。但是,坚持一下,烈日将变为暖阳,照亮你们的程序人生”看着快速收拾书包的同学们,TL老师意味深长地说道。原创 2022-01-26 15:43:04 · 219 阅读 · 6 评论 -
【搜索与回溯算法】保卫农场(DFS)
1111. 【搜索与回溯算法】保卫农场(Standard IO)时间限制:1000 ms空间限制:262144 KB具体限制题目描述:农夫John的农场里有很多小山丘,他想要在那里布置一些保镖去保卫他的那些相当值钱的奶牛们。他想知道如果在一座小山丘上布置一名保镖的话,他总共需要招聘多少名保镖。他现在有一个用数字矩阵来表示地形的地图。这个矩阵有N行(1 < N < = 100)和M列( 1 < M < = 70) 。矩阵中的每个元素都有一个值H_ij(......原创 2022-02-19 17:51:11 · 823 阅读 · 2 评论 -
【抄抄题解,以题代学】清风中的BFS
c++佚名者学校根据c++编程开了很多课程。这是一个阳光明媚的日子。清风轻抚大地,划过河岸,嬉戏在柳树间。小航离开宿舍,在春光的沐浴中走向“算法教室”。算法课由XC老师开展教授。“叮——叮——”上课铃响了,GDN老师走入教室,“废话不说,上课!”第一部分:认识BFS“同学们对基础算法之一——DFS掌握的还挺好的,今天我们就学习BFS,就是宽度优先搜索!请同学们认真听课!”GDN老师扫视着同学们。 “BFS属于一...原创 2023-09-30 21:14:14 · 389 阅读 · 1 评论 -
浅谈剪枝算法
一、引子剪枝,就是减小搜索树规模、尽早排除搜索树中不必要的分支的一种手段。形象地看,就好像剪掉了搜索树的枝条,故被称为剪枝。二、常见剪枝方法1.优化搜索顺序在一些问题中,搜索树的各个分支之间的顺序是不固定的不同的搜索顺序会产生不同的搜索形态,规模也相差甚远2.排除等效分支在搜索过程中,如果我们能够得知搜索树的当前节点沿着某几条不同分支到达的子树是等效的,那么只需要对其中一条路径进行搜索3.是否可行剪枝在搜索过程中,每次对当前状态进行检查,如......原创 2022-02-27 19:52:51 · 4365 阅读 · 4 评论