假设您有一个大网格。您拥有对点集进行操作的对象。据推测,实现这一点以在运行时具有合理性能的合理方法(即游戏的合理大小的网格),假设内存可用是:
你有指向每个对象的指针,每个对象都对每个点的特定点进行操作。
但是让我们假设网格的精度过高并且您不想为每个点存储指针,大概您会实现类似的东西:
分层拆分网格
下一个问题是,在一组所述子集中找到包含一个点的空间子集的最佳方法是什么?
也许:
可以在整个集合中进行简单的选择搜索 (N),也可以对原点/反向 pos 轴进行索引,然后对匹配的范围进行交集。
关于存储在内存数据结构中的对象属性的索引,我们大概可以最佳地实现:
维护对象属性的 B-Tree 索引 搜索索引并对查询进行交集/并集
所以本质上这是一个关于是否:
- 关于从网格请求此类信息,我是否遗漏了什么?
- 人们通常如何实现内存中索引(当然它们可能只对范围较小的大型集合有用,考虑到交集会产生巨大的成本?)
Sorted String Table (SSTable) or B+ Tree for a Database Index?
有那个线程。我不明白他们是如何在看起来像数组的东西中存储索引的。他们如何解决插入/转移到(动态/磁盘)阵列中间的 N 成本?
最佳答案
如果我正确理解你的问题,因为你有对象在网格上的一系列点上运行,那么你可以用 2-dimensional interval tree 表示它.
关于algorithm - 如何搜索影响空间点的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16500160/