BFS和DFS学习笔记】的更多相关文章

深度优先搜索 学习笔记 引入 深度优先搜索 DFS 是图论中最基础,最重要的算法之一.DFS 是一种盲目搜寻法,也就是在每个点 \(u\) 上,任选一条边 DFS,直到回溯到 \(u\) 时才选择别的边,如下图. 他的搜索顺序为 1-2-3-4-6. 递归实现指数型枚举 从 \(1\sim n\) 中这 \(n\) 个整数选取任意多个,输出所有可能的选择方案. 每一个数都有选与不选两种可能,相当于在每次递归上尝试选与不选两种分支,最后的时间复杂度即为 \(O(2^n)\). 递归实现组合型枚举…
算法学习之BFS.DFS入门 0x1 问题描述 迷宫的最短路径 给定一个大小为N*M的迷宫.迷宫由通道和墙壁组成,每一步可以向相邻的上下左右四格的通道移动.请求出从起点到终点所需的最小步数.如果不能到达,输出"不能走到那里".(N,M<=50,起点,终点分别用S,G表示) 输入样例:N=5,M=5 #S### ..##. #.### ..### ..G## 1 2 3 4 5 6 输出:5 0x2 BFS解法 ​ bfs用来求解最短路径相当简单. #include <ios…
广度优先搜索 BFS 学习笔记 引入 广搜是图论中的基础算法之一,属于一种盲目搜寻方法. 广搜需要使用队列来实现,分以下几步: 将起点插入队尾: 取队首 \(u\),如果 $u\to v $ 有一条路径,则将 \(v\) 插入队尾: 如果队列不为空,重复执行 \(2\sim 3\) 步. 如上图,就是一次 BFS 的搜索过程.利用 BFS,我们可以在 \(O(n+m)\) 的时间内对一张图实现遍历,其中 \(n\) 为点数,\(m\) 为边数. 代码实现: void bfs(int s) { q…
奇偶剪枝学习笔记 描述 编辑 现假设起点为(sx,sy),终点为(ex,ey),给定t步恰好走到终点, s | | | + — — — e 如图所示(“|”竖走,“—”横走,“+”转弯),易证abs(ex-sx)+abs(ey-sy)为此问题类中任意情况下,起点到终点的最短步数,记做step,此处step1=8: s — — — — — + | + | + — — — e 如图,为一般情况下非最短路径的任意走法举例,step2=14: step2-step1=6,偏移路径为6,偶数(易证): 结…
点亮技能树行动-- 本篇blog按照分类将网上写的OI知识点归纳了一下,然后会附上蒟蒻我的学习笔记或者是我认为写的不错的专题博客qwqwqwq(好吧,其实已经咕咕咕了...) 基础算法 贪心 枚举 分治 倍增 构造 高精 模拟 图论 图 最短路,次短路 k短路 差分约束 最小生成树 拓扑排序 欧拉图 二分图染色,二分图匹配 最大团,最大独立集 tarjan找scc.桥.割点,缩点 网络流 最大流,最小割,费用流 有上下界的网络流 分数规划 2-SAT 树 LCA 最近公共祖先 树的直径 树的重心…
Ford-Fulkerson & EK - 学习笔记 之前网络流什么的快忘完了 老师讲课的时候一脸懵逼--开始系统复习,从最大流开始 标签:网络流-最大流 『预备』 首先复习了网络流的概念-- 网络流是一个有向图,每一条边有一个流量限制(也可以叫做边权),图上有且仅有两个特殊点:源点-入度为0.汇点-出度为0.除此之外的所有点都有出度和入度. 网络流类似于"水流",源点就相当于"无穷的水源",从源点出发向其相邻边"流水",边上"…
对于图论--虽然本蒟蒻也才入门--于是有了这篇学习笔记\(qwq\) 一般我们对于最短路的处理,本蒟蒻之前都是通过构建二维数组的方式然后对每两个点进行1次深度或者广度优先搜索,即一共进行\(n\)^2遍深度(DFS)或广度优先搜索(BFS)--直到学习了Floyd算法\(qwq\) 先上核心代码\(Code\): for(k=1;k<=n;k++) { for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(e[i][j]>e[i][1]+e[1][j…
自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列<Hadoop学习笔记系列>.其实,早在2014年Hadoop2.x版本就已经开始流行了起来,并且已经成为了现在的主流.当然,还有一些非离线计算的框架如实时计算框架Storm,近实时计算框架Spark等等.相信了解Hadoop2.x的童鞋都应该知道2.x相较于1.x版本的更新应该不是一丁半点,最显著的体现在两点: (1)H…
2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hadoop有了一个基础的了解.但是还是有一些理论性的东西需要重复理解,这样才能彻底的记住它们.个人认为重复是记忆之母.精简一下: NameNode:管理集群,并且记录DataNode文件信息: SecondaryNameNode:可以做冷备份,对一定范围内的数据作快照性备份: DataNode:存储数据:…
在<Hadoop入门学习笔记---part1>中感觉自己虽然总结的比较详细,但是始终感觉有点凌乱.不够系统化,不够简洁.经过自己的推敲和总结,现在在此处概括性的总结一下,认为在准备搭建hadoop环境时,需要在linux机器上做一些设置,在搭建Hadoop集群环境前,需要在本地机器上做以下设置: 修改ip地址: 关闭防火墙: Hostname的修改: Ssh自动登陆的设置(也即:免密码登录): **关于以上操作的详细命令可以查看上一篇博客<Hadoop入门学习笔记---part1>…