枢纽标签压缩:优化最短路径查询的存储与性能
1. 令牌重排序以减少缓存缺失
令牌必须按 ID 升序存储,但我们可以选择合适的 ID 来优化性能。在预处理阶段对令牌进行适当的重新排序,有可能减少查询期间的缓存缺失次数。具体操作步骤如下:
1. 标记有向无环图(DAG)弧的子集 M :使得 DAG 中的每个令牌 t 在 M 中最多有一条入弧和一条出弧,这样会形成一组顶点不相交的路径。
2. 分配连续 ID :为每条路径上的顶点分配连续的 ID,路径之间的顺序是任意的。对于随机查询,与随机顺序相比,这种分配方式可以为每个标记的弧 (t, t′) 避免大约 λ(t)/n 次缓存缺失。
3. 定义增益 :将与集合 M 相关的增益定义为所有标记弧 (t, t′) 上的 λ(t) 之和。
4. 使用贪心启发式算法 :为了提高效率,我们从所有弧未标记开始,然后按 λ(·) 非递增的顺序处理令牌。处理令牌 t 时,在所有 t′ 没有标记入弧的出弧 (t, t′) 中,标记使 λ(t′) 最大的弧。如果不存在这样的弧,则跳过 t。最终会得到一个最大的标记弧集合 M。
2. 标签生成
为了创建现有标签集的压缩表示,我们从一个空的令牌数组开始,按任意顺序逐个对标签进行令牌化。具体步骤如下:
1. 自底向上遍历树 :对标签 L(v) 进行令牌化时,自底向上遍历对应的树 Tv。
2. 构建令牌 :处理顶点 w ∈ Tv
超级会员免费看
订阅专栏 解锁全文
15

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



