Algorithm 在二维平面上求(近)最小覆盖集
好吧,假设我在飞机上的已知固定位置有一堆光盘。每个圆盘的半径为1个单位。这个平面完全被这组圆盘覆盖,事实上,它被这组圆盘覆盖的范围很广,在某些区域超过了一到两个数量级。我想找到一部分仍然完全覆盖飞机的光盘。优化是好的,但不是必需的 下面是前面的插图: 下面是后面的插图: 在我看来,Delaunay三角剖分存在双重问题,但我不太确定这对我有什么帮助。我也知道,这与计算几何中的圆盘覆盖问题相似,但不同。这是一个我不知道名字的标准问题吗 在我看来,可能的方法似乎包括使用局部贪婪搜索增长覆盖集,以及迭代使用最近对查询一次删除一张光盘。我不确定这两种方法是否都能很好地发挥作用,而且我还没有仔细研究过细节 哦,如果你没猜到的话,这个应用程序就是在进行查询时找到一个邮政编码质心的子样本来覆盖地图,所以n大约是50000。Game Plan 以下基本上只是对您的问题的更精确的重申,但可能会有所帮助:Algorithm 在二维平面上求(近)最小覆盖集,algorithm,geospatial,computational-geometry,Algorithm,Geospatial,Computational Geometry,好吧,假设我在飞机上的已知固定位置有一堆光盘。每个圆盘的半径为1个单位。这个平面完全被这组圆盘覆盖,事实上,它被这组圆盘覆盖的范围很广,在某些区域超过了一到两个数量级。我想找到一部分仍然完全覆盖飞机的光盘。优化是好的,但不是必需的 下面是前面的插图: 下面是后面的插图: 在我看来,Delaunay三角剖分存在双重问题,但我不太确定这对我有什么帮助。我也知道,这与计算几何中的圆盘覆盖问题相似,但不同。这是一个我不知道名字的标准问题吗 在我看来,可能的方法似乎包括使用局部贪婪搜索增长覆盖集,以及
要获得没有间隙的信心,请多次重新运行,每次随机抖动采样点的坐标。增加采样点的密度,直到最终结果没有变化。这可能更适合?鉴于问题的性质,您可能会在这方面找到更多帮助。也许。这里还有很多其他的计算几何问题。但如果我没有得到答案,我会交叉张贴。谢谢哇,回答得很好。我会花一些时间来思考/研究这个问题,如果最终效果良好,我会把解决方案归功于你。我最终做了类似的事情。我使用40000多个磁盘中心作为要覆盖的点,生成覆盖集(slow…O(n^2)),然后使用最小覆盖集的贪婪近似来选择覆盖大量点的磁盘,直到没有更多的磁盘具有未覆盖的点(更快,O(n*m),m随迭代次数减少)。从40000个磁盘增加到200多个!视觉效果不太理想,但绝对足够接近@哈兰:啊,很好。现在还没有定论,但是你可以通过按最长坐标(比如y)排序磁盘中心和点(在本例中,它们是相同的)来减少O(n^2)搜索覆盖磁盘:然后当你在(Xi,Yi)寻找覆盖点i的圆时,你只需要检查那些中心坐标大于等于Yi-r的圆。这意味着,当您从一个点检查到下一个点时,需要开始检查的圆列表中的“起点”只会增加。