最坏情况高效的外部内存优先队列
1. 引言
优先队列是一种数据结构,它存储一组元素,每个元素包含一些信息和一个来自全序集合的优先级。优先队列支持以下操作:
- Insert(x) :将具有任意优先级的新元素 x 插入到数据结构中。
- DeleteMin() :从数据结构中删除并返回具有最小优先级的元素。若有多个最小元素,任意选择一个删除。前提是优先队列不为空。
优先队列有众多应用,如排序算法、网络优化算法、离散事件模拟和计算机系统中的作业调度等。
在具有两级内存(快速的内部内存和慢速的外部内存)的计算机上维护优先队列时,算法的性能可由处理器性能和 I/O 性能来衡量。处理器性能通过元素比较次数来衡量,I/O 性能通过块传输或 I/O 操作的数量来衡量,即从外部内存读取的块数加上写入外部内存的块数。
在表达优先队列操作的性能时,使用以下参数:
| 参数 | 含义 |
| ---- | ---- |
| B | 每个块中的元素数量 |
| M | 内部内存可容纳的元素数量 |
| N | 当前存储在优先队列中的元素数量,具体指在执行 Insert 或 DeleteMin 操作之前结构中存储的元素数量 |
假设每个块和内部内存除了元素还能容纳一些指针,且 B ≥ 1,M ≥ 23B。同时,使用 loga n 作为 max(1, lnn / lna) 的简写,其中 ln 表示自然对数。
一些优先队列方案,如隐式堆、左偏堆和二项队列,已被证明可以在最坏情况下以 O(log² N) 次比
超级会员免费看
订阅专栏 解锁全文
1073

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



