外部内存边缘四叉树与无分支搜索程序研究
1. 外部内存边缘四叉树算法
在处理平面上一组边的四叉树构建时,有一套高效的算法。首先,在寻找边与四叉树细分的交点时,对于正斜率的边 (E^+) 和四叉树 (Q),当 (E^+) 和 (Q) 排序后,它们的交点可以在 (O(scan(n + l^+))) 次 I/O 操作内找到,其中 (l^+) 是 (E^+) 和 (Q) 的交点数量。
对于负斜率的边 (E^-),需要考虑不同的 z 顺序 (Z’ = NW, NE, SW, SE)。具体操作步骤如下:
1. 将 (Q) 转换为基于 (Z’) 顺序曲线的细分 (Q’)。
2. 使用与处理正斜率边相同的算法找到 (E^-) 与 (Q’) 的交点。
3. 将交点映射回 (Q) 中的单元格。
这些步骤总共需要 (O(sort(n + l^-))) 次 I/O 操作,其中 (l^-) 是 (E^-) 和 (Q) 的交点数量。总体而言,(Q) 与 (E^+) 和 (E^-) 的交点可以在 (O(sort(n + l))) 次 I/O 操作内找到,这里 (l = l^+ + l^-) 是总交点数。
当处理 K - 四叉树(每个单元格最多包含 (k) 个顶点)时,对于 (k = 1) 的情况,算法按顺序从 (Q) 读取区间,同时维护栈 (S_L) 和 (S_B)。对于每个区间 (I_j),执行以下操作:
1. 找到起源于 (\sigma_j) 的边。
2. 找到与 (\sigma_j) 相交且起源于 (\sigma_j) 外部的边。
3. 将这两组边按顺序合并到栈上。
当 (k > 1) 时,只有步骤 3 有所不同。此时,起源于
超级会员免费看
订阅专栏 解锁全文
1176

被折叠的 条评论
为什么被折叠?



