2D模式搜索

时间:2013-07-03 11:23:40

标签: c# algorithm design-patterns

用于搜索2D数据数组并围绕相同类型的数据创建边界的好算法是什么?数据是随机的,因此除了它包含数值之外,不会有任何可用数据的先验知识。

否则是否有关于这个主题的好文章/书籍?

修改

这是我想要实现的一个例子:

enter image description here

对于两个人来说同样如此

3 个答案:

答案 0 :(得分:3)

广度优先搜索可以帮到你。首先构建图 G 如下:

G 的边缘(u,v)是唯一的,如果第u个单元格的值=第v个单元格的值。

然后执行BFS会给出很好的图形,您可以使用单元格的值方便地标记为访问过。

答案 1 :(得分:1)

这是一个复杂的问题,我认为相当于找到一组点的凹壳。

首先必须为数据点定义相等操作,以便确定“相同排序”数据点的集合。

以这种方式识别出一组点后,您需要找到该组点的凹壳。

(我假设您想要凹形船体,而不是convex hull)。

寻找凹形船体是一件非常重要的任务。

详情请见此处:https://gis.stackexchange.com/questions/1200/concave-hull-definition-algorithms-and-practical-solutions

如果它实际上是你想要的凸包,请参阅此处了解C#中的实现:

http://miconvexhull.codeplex.com/

答案 2 :(得分:0)

一个天真的解决方案(适用于小数据集)是定义一个带有两个参数的比较运算符,如果它们相等则返回true,否则返回false然后简单地比较所有相邻值对(水平和垂直)并且如果比较返回false,则绘制边框。