辅助记忆中的KD-Tree?

时间:2014-12-08 02:28:54

标签: disk kdtree quadtree r-tree

我知道一些范围搜索数据结构,例如kd-tree,Range tree和quad-tree。 但是所有的实现都在内存中,我如何在具有高性能I / O效率的二级存储器上实现它们呢?

以下是条件:

1):二维上的一组静态点。

2):仅用于查询,无插入或删除。

3):适应二次记忆。

感谢。

1 个答案:

答案 0 :(得分:2)

如果你可以在施工期间将树放入记忆中:

  1. 构建kd-tree。

  2. 从下到上,收集尽可能多的点,使其适合您的硬件大小。

  3. 将数据写入此块。

  4. 重复2.-3。递归地,直到您将所有数据写入磁盘。

  5. 查询时,从磁盘加载页面,处理树的这一部分,直到您到达另一页的引用。然后加载此页面并继续。

    或者,您可以自上而下执行相同操作,但随后可能需要更多磁盘空间。在上面的方法中,只有根页可以接近空。