给定一组点P和一组段S,有没有办法有效地找到任何段的指定距离d内的所有点?没有蛮力比较订单O(|P||S|)
?
Bentley-Ottman搜索一组线段之间的所有交叉点都在O(n log n)
中运行,因为这个问题有类似的味道,我想知道是否有类似的性能。
C ++中允许的开源实现的加分点。
答案 0 :(得分:0)
在积分上建立Voronoi diagram网络。让每个单元格保持指向其所有邻居的指针。比任何事都有可能。
给出一个点,找到它所在的单元格。简单,从网络的左下角到该点绘制一条线,并从该角落单元开始,接近该点,从而找到它所在的单元格英寸
给定一条线,找到它穿过的所有细胞。微不足道的。
给定直线和偏移距离,找到走廊内的所有单元格。来自2。
等
Voronoi网络用作空间导航和查询的支持结构。所有操作都是本地的,因此线性复杂。 之后构建图表。 :)