这是一个令我烦恼的问题。
给出一组要点,说:
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
最大的多边形是4x4平方。为此:
0 0 1 1 1
0 1 1 1 1
1 1 1 1 1
最大的是梯形,但会出现不规则和其他变化......
如何确定最大可能? (最大的意思是不能被任何其他多边形包围)我应该使用什么样的算法?
他们也需要其他属性,如面积,周长,凸面(t / f)和不变旋转的数量......
这是在说明书中提供的,但我真的不明白究竟是什么......
调用编码任何大小介于2x2和50x50之间的二维数组(两个维度可以不同), 所有元素都是0或1。 调用编码成员
m
的邻居,其中最多有八个数组成员,其值为1, 并且每个索引都与m
的相应索引相差最多1.给定一个特定的编码,我们 归纳地确定所有自然数d
深度d
(对于此编码)的多边形集合,如下所示:让一个 给出自然数
d
,并假设对于所有d 0 < d,确定了深度为d 0 的多边形集合。 将所有1的编码更改为将这些多边形确定为0.然后确定深度为d的多边形集 作为一组多边形,可以通过将1与它们的一些邻居连接起来从该编码中获得 以这种方式,我们获得一个最大的多边形(即,不包含在任何其他多边形中的多边形 通过将1与其邻居连接起来,从该编码中获得。)
答案 0 :(得分:1)
也许我太不耐烦了,但我发现你给出的关于笨拙的说明,我明白为什么你发现它们很难理解。
您已经指定了答案,但这里有一些您可能希望探索的相关主题。
凸壳可能是你想要的。凸包通常被描述为2D空间中的点都是钉板中的钉子。围钉外侧的橡皮筋形状为凸壳。
http://en.m.wikipedia.org/wiki/Convex_hull_algorithms
此外,收缩(或增长)1s并将其替换为0的操作听起来像是形态上的“侵蚀”操作。
答案 1 :(得分:0)
Create some integer B, set it to zero.
For every point p:
If p has not been marked as "been":
Mark p as "been"
BFS/DFS from p and count the number of adjacent reachable points. Also mark each of these points as "been".
If the number of reachable points + 1 is greater than B:
B = the number of reachable points + 1
最后,B =多边形的最大尺寸(以“覆盖”为单位)。