计算Voronoi单元的边界长度

时间:2013-12-21 19:49:50

标签: algorithm voronoi

计算Voronoi单元边界的最有效算法是什么? 更具体地说,我们有一个点列表(在2维中简化问题):P1,P2,P3 .. Pn 现在,如果我想找到一个随机点的Voronoi单元边界的长度,比如Pi,它与另一个相邻点Pj共享,那么有一个有效的算法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我现在有一个解决这个问题的方法,但我不确定它是否足够有效。让我重新定义问题。

问题:我们的点列表是{P1,P2,P3 ,. 。 .Pk,X}和我们的查询点是X;即我们感兴趣的是找到在Pi的Voronoi单元和X的Voronoi单元之间共享的facet的超体积(在2维中共享边的长度)。

解决方案:

  1. 我们找到一组点CC = {T1,T2,T3,... 。 .Tk-1}是点{Pi,X,Pj}的圆周,其中j<> i< = j< = k。这可以在O(k)

  2. 中完成
  3. 从集合CC中,我们可以删除不在X的Voronoi单元格内的点。这可以在O(k ^ 2)中完成,而无需计算任何Voronoi图。

  4. 集合CC中剩下的其余点将完全定义在Pi的Voronoi单元和X的Voronoi单元之间共享的边界面。在二维中,我们将只留下两个点(结束集合CC中的共享边的点),我们可以从中轻松找到长度。

  5. 现在,由于我们定义了边界面,我们可以在多项式时间内轻松找到这个面的近似体积。