外部存储器算法是在一个被称为外部存储器模型(或输入/输出模型,或磁盘访问模型)的理想化计算模型中进行分析的。外部存储器模型是一个类似内存机器模型的抽象机器,但是除了主存储器之外还有一个高速缓存。该模型捕捉到这样一个事实,即高速缓存中的读写操作比主存储器中的快得多,并且读取长的连续块比使用磁盘读写头随机读取快得多。外部存储器模型中算法的运行时间由所需的内存读写次数来定义。[3] 该模型是由Alok Aggarwal 和 Jeffrey Vitter于1988年推出的。[4] 外部存储器模型与高速缓存无关模型相关,但是外部存储器模型中的算法可能知道块大小和高速缓存大小。因此,该模型有时被称为缓存感知模型。[5]
该模型由一个处理器组成,该处理器具有大小为M的内部存储器或高速缓存,连接到一个无界的外部存储器。内部和外部存储器都被分成大小为B的块。一个输入/输出或存储器传输操作包括将一个B连续元素块从外部移动到内部存储器,并且算法的运行时间由这些输入/输出操作的数量决定。[4]
外部内存模型中的算法利用了这样一个事实,即从外部内存中检索一个对象会检索整个大小的块 。这个属性有时被称为局部性。
在以下元素中搜索元素 对象在外部存储器模型中是可能的,使用带有分支因子的B树 。使用B树,可以在中实现搜索、插入和删除 时间(大0符号)。从理论上讲,这是这些操作可能的最小运行时间,所以使用B树是渐近最优的。[4]
外部排序是在外部内存设置中进行排序。外部排序可以通过分发排序(类似于快速排序)或通过 -方式合并排序。两种变体都实现了的渐近最优运行时间 分类 N 物体。这个界限也适用于外部存储器模型中的快速傅立叶变换。[2]
排列问题是重新排列 元素转换成特定的排列。这可以通过排序来完成,这需要上面的排序运行时,或者按顺序插入每个元素,而忽略局部性的好处。因此,置换可以在 时间到了。
^Vitter, J. S. (2001). "External Memory Algorithms and Data Structures: Dealing with MASSIVE DATA". ACM Computing Surveys. 33 (2): 209–271. CiteSeerX 10.1.1.42.7064. doi:10.1145/384192.384193..
^Vitter, J. S. (2008). Algorithms and Data Structures for External Memory (PDF). Foundations and Trends in Theoretical Computer Science. Series on Foundations and Trends in Theoretical Computer Science. 2. Hanover, MA: Now Publishers. pp. 305–474. CiteSeerX 10.1.1.140.3731. doi:10.1561/0400000014. ISBN 978-1-60198-106-6..
^Zhang, Donghui; Tsotras, Vassilis J.; Levialdi, Stefano; Grinstein, Georges; Berry, Damon Andrew; Gouet-Brunet, Valerie; Kosch, Harald; Döller, Mario; Döller, Mario; Kosch, Harald; Maier, Paul; Bhattacharya, Arnab; Ljosa, Vebjorn; Nack, Frank; Bartolini, Ilaria; Gouet-Brunet, Valerie; Mei, Tao; Rui, Yong; Crucianu, Michel; Shih, Frank Y.; Fan, Wenfei; Ullman-Cullere, Mollie; Clark, Eugene; Aronson, Samuel; Mellin, Jonas; Berndtsson, Mikael; Grahne, Gösta; Bertossi, Leopoldo; Dong, Guozhu; et al. (2009). "I/O Model of Computation". Encyclopedia of Database Systems. Springer Science+Business Media. pp. 1333–1334. doi:10.1007/978-0-387-39940-9_752. ISBN 978-0-387-35544-3..
^Aggarwal, Alok; Vitter, Jeffrey (1988). "The input/output complexity of sorting and related problems". Communications of the ACM. 31 (9): 1116–1127. doi:10.1145/48529.48535..
^Demaine, Erik (2002). Cache-Oblivious Algorithms and Data Structures (PDF). Lecture Notes from the EEF Summer School on Massive Data Sets. Aarhus: BRICS..
暂无