FastBuilder算法
最近在开发时遇到一些问题,我需要在一串散列数组当中找出一些单独的矩形,当然,块数肯定是越少越好,当我发现经典的超像素无法解决问题的时候,就决定自己来写一个算法。
第一步 功能分析
比如我们有这样一个矩形

我们需要把这个矩形给分割为最少的矩形,但是这个是有很多解的,我们选取其中一种给大家展示一下

分割之后,我们成功的将此矩形内相同的方块分割为了三个标准的矩形,这就是大部分超像素算法无法带入我们这个实际要求的原因,那么我们如何解决?
第二步 具体实现
一开始我的思路就是我们是否可以进行单方向的搜索来达到分割的效果,那我们就来看看单方向如何进行搜索。
算法1.0版本:单方向搜索

如图就是单方向搜索的进行步骤,我们可以看到,这个原理就是从每一格的最左边开始向左边搜索,直到我们搜索到无法继续搜索,同时判断其下方是否可以合并为一个更大的矩形,假如可以,还会继续向下进行类似的搜索。这是一个非常简单的算法,但我们可以非常明显的看到,这种方法不是最优解。
因为我们一直都在对着右边进行搜索从而忘记了下方,很多人想问为什么左方和上方被忽略了,仔细观察图形我们可以得知:其实我们并不需要对于其

本文介绍了在寻找矩形分割问题中,如何利用贪心算法进行优化。从单方向搜索开始,逐步发展到双向取优的算法2.0版本,最后提出RSM算法,解决色块堵塞问题,实现更优的矩形搜索效果。
最低0.47元/天 解锁文章
282

被折叠的 条评论
为什么被折叠?



