用圆圈覆盖一个简单的多边形


10

假设我有一个简单的多边形和一个整数。有什么现有的方法可以找到最小半径,以便我可以用半径圆覆盖?如果是固定的,我想最小化呢?ķ ř 小号ķ - [R [R ķSkrSkrrk

Answers:


11

使用k中心聚类算法:请参阅http://goo.gl/pLiEO中的 4.2节。

使用滑动网格可以获得1 + eps近似算法。

由于Feder和Greene的工作,自然可以假设问题是NP-Hard。


1
这就是滑动网格为您提供的...
Sariel Har-Peled 2014年

谢谢您的回答。我或多或少熟悉滑动网格。在点的情况下,它至关重要地依赖于以下事实:在网格的每个单元中,由于每个磁盘的边界上包含两个点,加上覆盖该单元的磁盘数量是有界的,因此可以最佳地解决覆盖问题。这样就可以解决它的蛮力。但是在多边形的设置中,我看不到如何最佳地解决一个网格中的问题。您介意对此提供一些提示吗?
2014年

滑动网格意味着在网格单元内部解决方案的大小很小。然后,您需要使用其他算法来解决每个网格单元内的问题(通常是完全正确)。这是考虑问题的另一种方法-非常密集地采样多边形,然后在采样上解决您的问题...是的,有关如何执行此操作的确切细节可能非常痛苦...所以,假设您有一个具有n条边的多边形,您知道最优解的大小为k。您知道在这种情况下如何解决问题吗?
Sariel Har-Peled 2014年

再次感谢你。经过一番思考后,即使我知道k,我仍然不知道如何用k个磁盘最佳地覆盖多边形。它几乎没有离散性的事实使它对我来说真的很难接缝。关于采样方法:采样后,您是否只想覆盖采样的零件?我们难道不是遇到浪费大量磁盘来填补空白的问题吗?
2014年

1
考虑广场。对于,用网格 覆盖它。很容易证明,覆盖所有这些点的k个磁盘,在将每个磁盘以其半径的分数扩展后,都会覆盖整个正方形。对于多边形,将其三角剖分,为每个三角形形成上面的网格(这需要一定注意,但并不特别困难)。如果采用所有这些点集的并集,则您将得到同一保证人。这类似于k中心聚类的核心集构造。N = O k / ϵ ϵN×NN=O(k/ϵ)ϵ
Sariel Har-Peled 2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.