洪水填充(Flood fill)算法

从一个起始节点开始把附近与其连通的节点提取出或填充成不同颜色颜色,直到封闭区域内的所有节点都被处理过为止,是从一个区域中提取若干个连通的点与其他相邻区域区分开(或分别染成不同颜色)的经典算法。

因为其思路类似洪水从一个区域扩散到所有能到达的区域而得名。在GNU Go和扫雷中,Flood Fill算法被用来计算需要被清除的区域。

洪水填充算法接受三个参数:起始节点,目标节点特征和针对提取对象要执行的处理。

目前有许多实现方式,基本上都显式的或隐式的使用了队列或者栈。

洪水填充算法实现最常见有四邻域填充法(不考虑对角线方向的节点),八邻域填充法(考虑对角线方向的节点),基于扫描线填充方法。

根据实现又可以分为递归与非递归(基于栈)。

最简单的实现方法是采用深度优先搜索的递归方法,也可以采用广度优先搜索的迭代来实现。

基于递归实现的泛洪填充算法有个致命的缺点,就是对于大的区域填充时可能导致栈溢出错误,

基于扫描线的算法实现了一种非递归的洪水填充算法。

除提出连通区域外,还可以应用于计算从某一节点开始,到可能到达其他所有节点的距离。比如解决像走迷宫这类的问题。

参考资料:

1.图像处理之泛洪填充算法(Flood Fill Algorithm)

2.Flood Fill Algorithm

3.QuickFill: An efficient flood fill algorithm.

洪水填充算法_洪水填充(Flood fill)算法相关推荐

  1. 算法提高课-搜索-Flood fill算法-AcWing 1097. 池塘计数:flood fill、bfs

    Flood fill 算法简介: 像洪水一样,一圈一圈往外蔓延,像bfs. flood fill 算法可以在线性复杂度内,找到某个点所在的连通块. 题目分析 来源:acwing ac代码 #inclu ...

  2. 算法提高课-搜索-Flood fill算法-AcWing 1106. 山峰和山谷:flood fill、bfs

    题目分析 来源:acwing 分析:这道题还是flood fill算法的应用,不同点在于八个方向扫描,习惯性采用二重循环来扫描周围的8个方向:其次,这里需要统计周围比它高的和比它矮的,这点用bool变 ...

  3. 算法提高课-搜索-Flood fill算法-AcWing 1098. 城堡问题:flood fill、bfs

    题目分析 来源:acwing 分析:找房间个数,也就是找连通的个数. 样例画出来的房间个数如下图:其中'|' 和'-'不是墙,只有#是墙. 分析:这题不用建图,直接bfs(flood fill)来做, ...

  4. 算法提高课学习——2.搜索——2.1.Flood Fill算法

    Flood Fill Flood Fill算法用于求图中的连通块数量,一般用BFS实现,不过也可以使用DFS来实现,更加简洁,但同时也可能会有爆栈的风险 对于图中的任意一个点,我们从该点出发标记它所有 ...

  5. 常见算法之Flood Fill算法

    常见算法之Flood Fill算法 算法介绍 基本作用:寻找连通块 基本方法:BFS搜索 适用题目:需要找出分类块的题目/一些聚类问题 顾名思义,Flood Fill算法就是像洪水泛滥一样去寻找周围符 ...

  6. flood fill算法

    flood fill算法实现有三种形式 1.depth first search 2.breadth first search 3.breadth first scan 基本思想是找到还没有分配com ...

  7. 红与黑 ( Flood fill 算法 (针对网格题) )

    题目描述 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖. 你站在其中一块黑色的瓷砖上,只能向相邻(上下左右四个方向)的黑色瓷砖移动. 请写一个程序,计算你总共能够到达多少块黑色的瓷砖. ...

  8. BFS 之Flood Fill 算法

    一个很重要的点:只有边权为1时才能应用BFS算法 习题篇:(12条消息) BFS 之Flood Fill 算法(二)_Dream.Luffy的博客-CSDN博客 算法介绍:  一如往常,我们先看看Fl ...

  9. Flood Fill算法总结

    最近一直跟着y总在刷蓝桥杯的课,借此我来对里面涉及到的Flood Fill算法做一个我目前接触到的所有的flood fill算法的总结 总 首先,这本质上是一个搜索算法.他的作用是对一个图(目前我用到 ...

最新文章

  1. 使用RecycleView实现无限滚动的日历
  2. 物流系统高可用架构案例
  3. 小县城也被互联网+撞了一下腰
  4. 2018 “神策杯”高校算法大师赛 6 强诞生,【招人】进行时……
  5. Qt中ui文件的使用
  6. perl学习之:编译、执行与内存关系(转)
  7. 数据库基础知识——初始MySQL
  8. 漫画:程序员和产品经理撕得真是太太太太厉害了
  9. 打造核心动力 争夺国际大数据话语权
  10. 研究生,怎么经济独立?
  11. PB中导入EXCEL数据
  12. 生成模型之flow-based model
  13. 红外近距空空导弹弹道仿真
  14. ngx_lua常用变量参数
  15. MAYAPlugin_Mel_顶点法线批处理_V2
  16. 404究竟是什么意思呢?像404,200,503等数字究竟是什么东西
  17. SQL获得当前的日期和时间与DB2 中操作日期和时间
  18. 《信息与编码》考试复习笔记6----第六章连续信源熵和信道容量(考点在连续信道容量)
  19. PCB做的 东南大学 校徽
  20. 还有未完待续的瓜哦!

热门文章

  1. Programming Ruby学习笔记一
  2. # ; @REM !等符号在WINCE6.0下的意义和作用
  3. Python常见问题解决记录1-Non-ASCII character ‘\xe7‘错误
  4. 【报告分享】全球产业趋势系列研究之人工智能.pdf(附下载链接)
  5. glide加载gif图不显示动画_关于glide加载gif问题
  6. TikTok如何将粉丝转到私域,提高转化和复购?
  7. sql2012服务器桌面图标,Windows Server 2012 修改桌面图标
  8. CN笔记:第三章 链路层
  9. 数学建模-12.预测模型
  10. Educational Codeforces Round 57 (Rated for Div. 2)