0
我正在研究使用二进制堆作为内部数据结构的优先级队列。考虑到块大小为M的外部存储器模型,幻灯片声称deleteMin需要大约2log(n/M)
块访问。对于二进制堆优先级队列,有多少块外部存储器无法访问?
这是为什么?在原始论文中描述自下而上的启发式(Wegener 93)或幻灯片中找不到解释。
第一个块包含堆的根目录和第一个日志(M)级别。之后,对于每个节点,它必须读取每层的一个块,其将包含两个连续的子节点。只有在极少数情况下(因此“近似”)才需要读取两个块才能获取节点的两个子节点。由于第一个日志(M)级别将通过单个块访问进行读取,因此只需加载最低级别的(log n - log M) = log n/M
级别的块。
2
从哪里来?它将不得不在缓存逐出时将这些数据块写回磁盘,但通常不会在负载情况下进行解释吗?
我希望我已经很好地解释了这个问题。非常感谢!
谢谢你的回应。我知道通常使用'M'和'B'。本讲座的所有幻灯片也都这样做,但是这个特殊的幻灯片以上述方式使用了“M”。至于为什么,我不知道。由于'M'是整个缓存的大小,因此可以假定,整个缓存将在一个I/O时间步中加载堆阵列的开始。然而,这对我来说没有多大意义。 – lekv 2012-08-17 12:46:12