【发布时间】:2015-02-05 15:58:52
【问题描述】:
我知道一些范围搜索的数据结构,例如 kd-tree、Range tree 和 quad-tree。 但是所有的实现都在内存中,我怎样才能在二级内存上以高性能的 I/O 效率来实现呢?
条件如下:
1):二维上的一组静态点。
2):仅用于查询,没有插入或删除。
3):适应二级内存。
谢谢。
【问题讨论】:
标签: disk kdtree quadtree r-tree
我知道一些范围搜索的数据结构,例如 kd-tree、Range tree 和 quad-tree。 但是所有的实现都在内存中,我怎样才能在二级内存上以高性能的 I/O 效率来实现呢?
条件如下:
1):二维上的一组静态点。
2):仅用于查询,没有插入或删除。
3):适应二级内存。
谢谢。
【问题讨论】:
标签: disk kdtree quadtree r-tree
如果你可以在构建过程中将树放入内存中:
构建 kd 树。
自下而上,收集尽可能多的点以适合您的硬件大小的块。
将数据写入此块。
重复 2.-3。递归,直到您将所有数据写入磁盘。
查询时,从磁盘加载页面,处理树的这一部分,直到您到达对另一个页面的引用。然后加载此页面并继续。
或者,您可以自上而下执行相同的操作,但您可能需要更多磁盘空间。在上述方法中,只有根页面可以接近空。
【讨论】: