简体   繁体   English

非均匀圆盘的最佳覆盖

[英]Optimal covering with non-uniform discs

What kind of algorithm can I use to search for an optimal (minimum area) covering of a limited region of the XY plane with n discs ( x j , y j , r j ) ?我可以使用什么样的算法来搜索具有n 个圆盘( x j , y j , r j )的 XY 平面有限区域的最佳(最小面积)覆盖?

I've found many investigations on fixed radius discs, but nothing about variable radius.我发现了许多关于固定半径圆盘的调查,但没有关于可变半径的调查。

n is fixed but the discs can be placed freely (they're not in assigned positions and their centers are not required to be inside the region). n是固定的,但光盘可以自由放置(它们没有在指定的位置,它们的中心不需要在区域内)。 The region is in general non-connected and non-simply connected (can be composed by multiple parts and can have holes).该区域一般是非连通和非单连通的(可以由多个部分组成,可以有孔)。 In my specific case is defined by multiple closed polygons (using odd-even filling rule).在我的具体情况下由多个闭合多边形定义(使用奇偶填充规则)。

To recap:回顾一下:

Input:输入:

  • a limited area of the XY plane (eg described as a collection of closed polygons with odd-even filling rule) XY 平面的有限区域(例如,描述为具有奇偶填充规则的闭合多边形的集合)

  • an integer number n > 0整数n > 0

Output:输出:

  • a list of n discs described by center x[i], y[i] and radius r[i] so that every point of the area is contained in at least one disc由中心x[i], y[i]和半径r[i]描述的n圆盘的列表,以便该区域的每个点都包含在至少一个圆盘中

Minimizing:最小化:

  • the area of the plane covered by the union of the discs圆盘联合所覆盖的平面区域

Example例子

解决方案示例

In this example the input was the "A" shape.在这个例子中,输入是“A”形。 Ten points were placed manually and minimal circles covering the intersection of the area with the Voronoi cells were computed.手动放置十个点,并计算覆盖该区域与 Voronoi 单元相交的最小圆。

I'm currently investigating the approach based on just looking for the centers x[i], y[i] and computing the radiuses r[i] with this algorithm (search space is reduced by ℝ n and always produces an acceptable solution).我目前正在研究基于仅查找中心x[i], y[i]并使用此算法计算半径r[i] (搜索空间减少了 ℝ n并且总是产生可接受的解决方案)。

This is a really cool problem!这真是一个很酷的问题! I'm glad I stumbled on this one.我很高兴我偶然发现了这个。 I fully realize that this is over a year old, so you probably don't care about it anymore, but I'll answer it either way because I like riddles and this was a fun one (assuming my solution even works!).我完全意识到这已经一年多了,所以你可能不再关心它了,但我会以任何一种方式回答它,因为我喜欢谜语而且这是一个有趣的谜语(假设我的解决方案甚至有效!)。

What I would do seems similar to the Voronoi diagram suggestion:我要做的似乎类似于 Voronoi 图建议:

  1. Start with a hierarchical clustering solution to the problem.从问题的层次聚类解决方案开始。 It won't have minimal area, but it will cover everything with N disks.它不会有最小的面积,但它会用 N 个磁盘覆盖所有内容。

    a.一种。 Note: I wouldn't use K-means because K-Means tends to get caught in local minima quite easily.注意:我不会使用 K-means,因为 K-Means 很容易陷入局部最小值。

  2. You could probably then use gradient descent to move the centers of the disks (with the loss being the total area of each disk -- computed as the miximal distance to the points within this "cluster") to get you a more optimal solution.然后,您可能可以使用梯度下降来移动磁盘的中心(损失是每个磁盘的总面积 - 计算为到该“集群”内点的混合距离)以获得更优化的解决方案。

I think some caveats here would be if you have a few lone points, they might lead to some undesirable solutions.我认为这里有一些警告,如果你有一些孤立的点,它们可能会导致一些不受欢迎的解决方案。

There's obviously no proof that this would work.显然没有证据表明这行得通。 What do you think?你怎么认为? Also, what did you end up using?另外,你最后用的是什么?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM