微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

给定 n 个重叠的多边形,如何获得以最少多边形数量提供最大覆盖范围的集合

如何解决给定 n 个重叠的多边形,如何获得以最少多边形数量提供最大覆盖范围的集合

我想获得提供最大覆盖范围的最小多边形集。例如,对于下图中的多边形,红色的多边形不应进行切割,因为它们已经被一个或多个多边形覆盖(摆脱其他多边形中的多边形是不够的)。孔正常且符合预期(如第二张图片所示)。

Example 1

Example 2

上面多边形的数据在这里

http://geojson.io/#id=gist:rumicuna/b36cab7d0019511b92120db130a73d44&map=8/38.311/-81.403

我很乐意接受任何语言的算法,甚至是关于如何解决这个问题的数学描述。该图像是一个示例,但就我而言,我有数千个多边形(卫星图像边界)。

解决方法

@btilly 提到了相关的近似硬度结果,但在实践中你应该能够得到一个很好的结果:

  1. 用离散元素形成一个 weighted coverage problem。通过找到合适的平面细分,有一种聪明的方法可以做到这一点。还有一个不太聪明的方法来做到这一点,通过重复寻找一对相交的多边形 P 和 Q 并将它们替换为子多边形 P ∖ Q,P ∩ Q,Q ∖ P,跟踪子多边形之间的对应关系-多边形和原始多边形。计算几何库将为您节省大量时间——也许是 CGAL?

  2. 使用整数规划解决这个覆盖问题。我偏爱OR-Tools,因为它是由我的同事开发的,但您有很多选择。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。