我正在开发一个简单的生态系统模拟,我坚持为这些生物选择最佳的数据结构。
我基本上拥有的是当前世界中所有动物的列表,其中包含有关动物类型和位置的信息。这个列表可能会变得非常大 - 可能接近数百万。
因此,为了实现一些简单的AI,我需要尽可能快地完成这个操作: 给定地图上的一个点和半径,给我一个半径范围内所有动物的列表,按照距中心点的距离排序。
世界将是2d所以我们仅限于平面坐标。 我还需要支持的一些操作:
我读到了kd树以及他们快速计算最近邻居的能力。
问题:
你认为它适用于我的情况吗?如果没有,我应该使用什么数据结构来满足要求?
修改
以下是评论中要求的更多详细信息。 世界不会太大 - 这种东西可以适合屏幕,动物是小圆圈。我还应该支持世界变得相当密集的情景。 最后,我希望每个查询返回的数据不会超过几十个,但是因为我会有大量的查询(每个动物一个,因此应该以某种方式缓存,但是为了简单起见,让我们忘记了)这就是尽可能快速有效。
答案 0 :(得分:1)
鉴于你的约束(大量的移动物体和可能固定大小的小世界),简单的grid可能比kd树更合适。
答案 1 :(得分:0)