【问题标题】:KD-Tree on secondary memory?辅助存储器上的KD-Tree?
【发布时间】:2015-02-05 15:58:52
【问题描述】:

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

条件如下:

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

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

3):适应二级内存。

谢谢。

【问题讨论】:

    标签: disk kdtree quadtree r-tree


    【解决方案1】:

    如果你可以在构建过程中将树放入内存中:

    1. 构建 kd 树。

    2. 自下而上,收集尽可能多的点以适合您的硬件大小的块。

    3. 将数据写入此块。

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

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

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

    【讨论】:

    • 我知道你的意思。首先,这听起来很难实现,对吧?其次,有很多细节需要关注。例如,如何在磁盘页面中保持树形。
    • 是的,这并不容易。 R-tree 更好,因为它已经是面向磁盘页面的。
    猜你喜欢
    • 2014-01-27
    • 2011-03-22
    • 1970-01-01
    • 2021-10-10
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 2017-03-12
    相关资源
    最近更新 更多