0

假设您有一个大网格。您有对点集进行操作的对象。据推测,实现这一点以在运行时具有合理性能的合理方法(即,假设内存可用的合理大小的游戏网格)是:

对于每个点,您都有指向在特定点上操作的每个对象的指针。

让我们假设,但是网格的精度令人望而却步,并且您不想为每个点存储指针,大概您会实现类似的东西:

分层拆分网格

下一个问题是,在一组所述子集中找到包含一个点的空间子集的最佳方法是什么?

也许:

可以对整个集合进行简单的选择搜索 (N),也可以索引原点/反向 pos 轴,然后进行匹配范围的交集。

关于存储在内存数据结构中的对象的属性的索引,大概可以最佳地实现:

维护对象属性的 B-Tree 索引 搜索索引并为查询执行相交/联合

所以本质上这是一个关于是否:

  1. 我是否错过了从网格中请求此类信息的某些内容?
  2. 通常如何实现内存中的索引(当然它们可能只对具有小范围的大集合有用,考虑到交集将是巨大的成本?)

用于数据库索引的排序字符串表 (SSTable) 或 B+ 树?

有那个线程。我不明白他们如何将索引存储在看起来像数组的东西中。他们如何绕过插入/转移到(动态/磁盘上)阵列中间的 N 成本?

4

1 回答 1

1

如果我正确理解您的问题,因为您的对象在网格上的一系列点上进行操作,那么您可以用2-dimensional interval tree来表示它。

于 2013-05-11T18:28:00.540 回答