消防部门覆盖区域

时间:2016-08-11 19:27:30

标签: algorithm computer-science

给定一组点(GPS坐标)和包含所有这些点的多边形,可以确定这些点覆盖该区域的程度,或者多边形内任何位置到最近点的最长距离是多少?

例如,如果我在纽约市区内有所有消防部门,我想知道消防车在最坏的情况下需要多长时间才能驾驶(在紧急情况下)。

关于这个问题的名称是什么或者这个问题可以减少到什么的任何想法?或者是否有任何现有的算法?

谢谢:)

1 个答案:

答案 0 :(得分:6)

首先构建网站集的Voronoi diagram(GPS坐标)。 Voronoi图是表示平面到单元的分区的数据结构,每个站点一个单元,这样每个站点的单元由距离该站点更近的所有点组成,而不是任何其他站点。

构建Voronoi图可以使用Fortune's sweep-line algorithmO(nlog(n))中完成,其中n是输入网站的数量。

然后遍历Voronoi单元格。每个单元格都是多边形。对于每个单元格,计算单元格站点与每个多边形顶点之间的距离。站点与站点单元顶点之间的最长距离是为了到达站点而必须走的最长距离。

算法的运行时间为O(nlog(n)),因为算法的第二阶段(迭代每个Voronoi单元的顶点)仅需要线性时间。这是因为整个图中的顶点总数随着站点的数量线性增长。也就是说,使用Euler's formula for planar graphs显示Voronoi顶点的总数由2n-5从上方限定并不太难。

您可以在网上找到一些Fortune算法的开源实现。例如This one