【问题标题】:A data-structure for efficiently indexing thousands of moving points?用于有效索引数千个移动点的数据结构?
【发布时间】:2013-02-03 03:18:22
【问题描述】:

情况:

我可能有数万个移动 (2D) 点。它们仅在一定范围内相互影响。它们可以从一个地方移动到另一个地方(本质上不是瞬移,只是在屏幕上飞来飞去)。

由于我必须在每一次交易中检查更新,因此有效地执行此操作非常重要。

我的天真的解决方案是简单地创建一个网格类型结构,网格间距在效果半径附近的某处,并且随着点从一个单元格移动到另一个单元格,更新它们所在的单元格。所以当我需要进行效果检查时,我只必须检查一个点的单元格和几个相邻的单元格。

我熟悉四叉树,但我担心它比我需要做的贵一点,但如果这确实是正确的路线,我愿意接受建议。

此外,有关补充信息,这是在 Java 中的。

谢谢

【问题讨论】:

  • 在我看来,当域的某些部分不包含许多或任何点时,四叉树可以节省计算量,因此不需要将其网格化到与域的部分相同的分辨率包含许多点。但是,如果点密度在整个域中接近均匀,我认为四叉树不会比常规网格提供优势。
  • 您是否实施了简单的解决方案以查看您需要多高的速度?您可以牺牲准确性来换取速度,但只能在您需要的程度内这样​​做。

标签: java algorithm data-structures


【解决方案1】:

我曾经和我的下一个项目将处于类似情况。
我选择了简单的网格变体,因为它实现起来更简单、更快。 数以万计的人在四叉树或 k-d 树可能有意义的边界。 (尤其是当许多单元格为空时)

您应该尝试测试网格方法是否足够。应该是吧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 2013-01-06
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    相关资源
    最近更新 更多