Round-Hashing for Data Storage: Distributed Servers and External-Memory Tables
本文提出了轮散列,这是适合于分布式服务器上的数据存储和实现外部内存表,其中每个查找检索最多一个外部内存块,使用一个stash。对于数据存储,轮散列就像一致性散列一样,因为它避免了在添加新服务器时对密钥进行完全重排序。实验表明,服务请求的速度是10倍以上的最先进的。在分布式数据存储,这保证了更好的吞吐量为服务请求,而且,大大减少了决策时间,数据应该移动到新的服务器作为重新扫描数据要快得多。
2018-05-08 cs.DS
External-Memory Network Analysis Algorithms for Naturally Sparse Graphs
在本文中,我们提出了一些网络分析算法的外部记忆模型。我们专注于大型自然稀疏图的方法,也就是说,n-顶点图,具有O(n)的边缘和结构,使这种稀疏性属性适用于这样的图的任何子图。我们给出了有效的外部存储器算法,为以下问题,这样的图:-找到一个近似的D-退化订购; -找到一个周期的长度正好为C; -枚举所有最大的集团。例如,在分析社交网络时,这些问题是很有意义的,因为它们被用来研究网络内聚性。
2011-06-30 cs.DS
Worst-Case Optimal Tree Layout in External Memory
考虑将N个节点的固定拓扑树布置到块大小为B的外部存储器中,以便最小化从根到深度为D的节点的路径所需的最坏情况块存储器传输次数。我们证明了最佳的内存传输次数是$$ \cases{ \displaystyle Θ\left( {D \over \lg (1{+}B)} \right) & when $D = O(\lg N)$, \cr \displaystyle Θ\left( {\lg N \over \lg \left(1{+}{B \lg N \over D}\right)} \right) & when $D = Ω(\lg N)$ and $D = O(B \lg N)$, \cr \displaystyle Θ\left( {D \over B} \right) & when $D = Ω(B \lg N)$. } $$
2013-11-27 cs.DS
Using Hashing to Solve the Dictionary Problem (In External Memory)
我们考虑了外部存储器中的字典问题,并将众所周知的缓冲树的更新时间提高了大约一个对数因子。对于任意λ>= max {lg lg n,log_{M/B}(n/B)},我们可以支持时间复杂度为O(λ/ B)的更新和时间复杂度为O(log_λn)的查询。我们还提出了一个下限的细胞探针模型表明,我们的数据结构是最佳的。在RAM中,半个多世纪以来,哈希表一直被用来比二分查找更快地解决字典问题。相比之下,我们的数据结构是第一个在外部存储器中克服比较障碍的结构。我们的也是第一个令人信服地脱离不可分割性范式的数据结构。
2011-04-14 cs.DS
Lempel-Ziv Parsing in External Memory
几十年来,计算字符串的LZ因子分解(或LZ 77解析)在许多不同的应用程序中都是必要的和计算密集的步骤,包括文本索引和数据压缩。多年来已经发现了许多LZ 77解析算法;然而,尽管越来越需要将LZ 77应用于海量数据集,但迄今为止还没有算法可以扩展到超过内部内存大小的输入。在本文中,我们描述的第一个算法计算LZ 77分析在外部存储器。我们的算法在实践中是快速的,并将允许下一代的文本索引,以实现大规模的字符串和字符串集合。
2013-07-04 cs.DS
Data-Oblivious Graph Algorithms in Outsourced External Memory
出于对外包数据的隐私保护的动机,数据无关外部存储器是一种计算框架,其中客户端以不向服务器泄露其数据的方式对存储在半信任服务器处的数据执行计算。这种方法比传统框架更有利于协作和可靠性,并且它提供了隐私保护,即使服务器完全访问数据,并且他可以监视客户端如何访问数据。挑战在于,即使数据被加密,服务器也可以基于客户端数据访问模式来学习信息;因此,访问模式也必须被混淆。我们调查的隐私保护算法外包外部存储器的基础上使用的数据不经意的算法,也就是说,算法中的每个可能的数据访问序列是独立的数据值。我们给出了新的高效的数据不经意算法在外包外部存储器模型的一些基本的图形问题。我们的研究结果包括新的数据不经意的外部存储器的方法,用于构建最小生成树,进行各种根树遍历,回答最少的共同祖先查询树,计算双连接组件,并形成开放的耳朵分解。我们的算法都没有使用恒定时间的随机预言。
2014-09-02 cs.DS
Faster Average Case Low Memory Semi-External Construction of the Burrows-Wheeler Transform
Burrows Wheeler变换在数据压缩以及全文索引中有应用。尽管其重要的应用和各种现有的算法方法的构造的变换的大数据集仍然是具有挑战性的。本文提出了一种新的构造Burrows Wheeler变换的半外存储算法。如果有足够的内部存储器可用于保存输入文本的固定部分,则它能够在平均时间$O(n\log^2\log n)$的有限字母表上构造长度为$n$的输入文本的变换。在最坏的情况下,运行时是$O(n\log n \log\log n)$。算法在外部存储器中使用的空间量为$O(n)$位。在串行算法的基础上,我们还提出了一种在$p$处理器可用的情况下平均按时间运行的共享内存并行算法$O(\frac{n}{p}\max\{\log^2\log n+\log p\})$。
2016-04-22 cs.DS
Low Space External Memory Construction of the Succinct Permuted Longest Common Prefix Array
最长公共前缀(LCP)数组是索引字符串匹配中的一种通用辅助数据结构。它可以用来加速使用后缀数组(SA)的搜索,并提供底层后缀树拓扑的隐式表示。长度为$n$的字符串的LCP阵列可以表示为长度为$n$的字的阵列,或者在存在SA的情况下,表示为$2n$位加上渐近可忽略的支持数据结构的位向量。已经提出了用于LCP阵列的外部存储器构造算法,但是迄今为止提出的那些算法在外部存储器中具有$O(n)$字(即,$O(n \log n)$位)的空间要求。在某些实际情况下,这种空间要求过于昂贵。我们提出了一个外部存储器算法,用于构建的$2n$位版本的LCP阵列,使用$O(n \log σ)$位的额外空间在外部存储器中时,给定的(压缩)BWT与字母大小$σ$和采样率$O(\log n)$的采样逆后缀阵列。在$σ$通常比$n$小得多或者甚至是常数的情况下,这在实践中通常是显著的空间增益。我们还考虑了计算循环字符串的简洁LCP数组的情况。
2016-03-08 cs.DS
Dynamic Planar Point Location in External Memory
针对外存模型中的平面点定位问题,提出了一种全动态的数据结构。我们的数据结构支持$O(\log_B n(\log\log_B n)^3))$ I/O中的查询和$O(\log_B n(\log\log_B n)^2))$分摊I/O中的更新,其中$n$是细分中的段数,$B$是块大小。这是第一个具有几乎最优查询成本的动态数据结构。为了进行比较,此问题的所有先前已知结果都需要$O(\log_B^2 n)$ I/O来回答查询。我们的结果几乎匹配最知名的上限内记忆模型。
2019-03-15 cs.DS
On Dynamic Breadth-First Search in External-Memory
我们提供了第一个非平凡的结果动态广度优先搜索(BFS)在外部存储器:对于一般稀疏无向图的初始$n$节点和O(n)的边缘和单调更新序列的$Θ(n)$边缘插入或$Θ(n)$边缘删除,我们证明了摊销的高概率界的$O(n/B^{2/3}+\sort(n)\cdot \log B)$ I/O每次更新。相比之下,目前在稀疏无向图上进行静态BFS的最佳方法需要$Ω(n/B^{1/2}+\sort(n))$ I/O。
2008-02-20 cs.DS
Efficient Semi-External Breadth-First Search
本文针对磁盘驻留大规模图的半外部内存模型,提出高效 BFS 算法 EP-BFS,以较小内存需求在数十亿级节点和边的图上实现高达 10 倍加速。
2025-07-17 cs.DS
External memory BWT and LCP computation for sequence collections with applications
我们提出了一个外部存储器算法的BWT和LCP阵列的序列集合的计算。我们的算法以可用内存的量作为输入参数,并试图通过将输入集合拆分为足够小的子集合来最大限度地利用它,以便使用最佳线性时间算法在RAM中计算它们的BWT。接下来,它合并外部存储器中的部分BWT,并且在此过程中,它还计算LCP值。我们证明了我们的算法执行O(nAveLcp)顺序I/O,其中n是集合的总长度,AveLcp是集合的平均最长公共前缀。这个界限是对相同任务的已知算法的改进。实验结果表明,我们的算法优于目前最好的算法的集合的序列具有不同的长度和集合具有相对较小的平均最长公共前缀。在本文的第二部分中,我们表明,我们的算法可以修改输出两个额外的数组,使用BWT和LCP阵列,提供简单的,基于扫描的,外部存储器的算法,在生物信息学中的三个众所周知的问题:最大重复的计算,所有对后缀前缀重叠,简洁的de Bruijn图的建设。据我们所知,没有其他已知的外部存储器算法,这些问题。
2018-05-17 cs.DS
Equivalence between Priority Queues and Sorting in External Memory
优先级队列是一种基本的数据结构,它维护一组动态有序的键,并支持以下基本操作:插入键、删除键和查找最小键。优先级队列的复杂性与排序的复杂性密切相关:优先级队列可以用来实现一个简单的排序算法。Thorup \cite{thorup2007equivalence}证明了在RAM模型中也是如此。特别是,他设计了一个优先级队列,使用排序算法作为黑盒,这样优先级队列的每个操作成本与排序的每个键成本渐近相同。在本文中,我们证明了一个类似的结果,在外部存储器模型,优先级队列是计算等价于排序在外部存储器中,在一些温和的假设。这种减少提供了一种可能性,证明下界的外部排序通过显示一个下界的优先级队列。
2012-07-18 cs.DS
Computing the BWT and LCP array of a Set of Strings in External Memory
索引非常大的字符串集合,如广泛的下一代测序技术产生的,在很大程度上依赖于多串概括的Burrows-Wheeler变换(BWT):大量的要求在内存中的方法刺激了最近的发展外部存储器算法。计算字符串的最长公共前缀(LCP)数组是计算字符串之间的后缀前缀重叠的一个重要步骤,是许多基因组组装算法的基础。在以前的论文中,我们提出了一种内存中的分治方法来构建BWT和LCP,其中我们合并部分BWT和前向方法来排序后缀。在本文中,我们提出了一种替代的向后策略,开发一种外部存储器的方法,同时建立BWT和LCP阵列上的m个字符串的不同长度的集合。在一组字符串具有恒定长度k的算法具有O(mkl)的时间和I/O量,使用O(k + m)的主存,其中l是LCP数组中的最大值。
2020-12-04 cs.DS
External Memory Algorithms For Path Traversal in Graphs
本文给出了一些关于树和图中路径遍历的结果。特别是,我们专注于数据结构,它允许这样的遍历在外部存储器设置有效地执行。此外,对于树和平面图,我们提出的数据结构是简洁的。我们的树结构允许有效的自下而上的路径遍历任意程度的根树和有效的自上而下的路径遍历二叉树。在图的设置,我们允许有效的遍历任意路径有界度平面图。我们的数据结构的树和图形匹配或略有改善目前最好的结果,外部存储器路径遍历在这些设置中,而在同一时间,由于我们的数据结构的简洁性,提高空间边界。利用我们的有界度平面图的路径遍历结构,我们描述了这种技术在R^2中三角网格上的一些有用的应用。作为三角形网格R^2表示的扩展,我们还提出了R^3中良好形状四面体网格的有效外存储表示。我们提出的外部存储器表示是基于一个分区方案,匹配目前最知名的结果,形状良好的四面体网格。我们描述了应用程序的路径遍历四面体网格,这是有效的外部存储器设置使用我们的结构。最后,我们给出了一个在R^2和R^3的良好形状网格中使用跳跃-行走点定位的结果。我们证明,给定一个近似最近的邻居从一个网格的顶点之间,定位包含查询点的单纯形涉及一个恒定长度的步行(路径遍历)在网格中。
2013-08-21 cs.DS
On the Complexity of List Ranking in the Parallel External Memory Model
研究了并行外部存储器模型中的链表排序问题。我们观察到一个有趣的双重性质的硬度的问题,由于有限的信息交换的处理器之间的列表的结构,一方面,其密切的关系,置换数据的问题,这是已知的是很难的外部存储器模型,另一方面。通过仔细定义计算模型的幂,我们证明了PEM模型中的置换下界。此外,我们提出了一个更强的Ω(log^2 N)下界的问题的一个特殊变体和一个特定的模型参数范围,这使我们更接近证明一个非平凡的下界的列表排名问题的批量同步并行(BSP)和MapReduce模型。最后,我们还提出了一种算法,该算法比以前的工作中的模型的参数范围更大。
2014-06-12 cs.DS
What Does Dynamic Optimality Mean in External Memory?
在本文中,我们重新审视的问题,搜索树的动态最优性应该如何定义在外部存储器。外部存储器数据结构的一个定义特征是,查询和插入/更新/删除之间存在明显的不对称性:通过使前者稍微渐进地慢一些,可以使后者明显渐进地快一些(甚至允许使用子常数摊销I/O的操作)。这种不对称性使得基于旋转的搜索树在插入/更新/删除繁重的外部内存工作负载中不是最佳的(甚至接近最佳)。为了研究这种工作负载的动态最优性,必须考虑不同类别的数据结构。要考虑的数据结构的自然类是我们称之为缓冲传播树的。这样的树可以动态地适应输入序列的局部属性,以优化不同插入/更新/删除和查询之间的交互。我们还提出了一种新形式的超越最坏情况的分析,使我们能够正式研究静态和动态最优之间的连续体。最后,我们给出了一种新的数据结构,称为\jellotree,这是静态最优的,并实现动态最优的一个大的自然类的输入定义我们超越最坏情况下的分析。
2022-04-21 cs.DS
Optimal Hashing in External Memory
哈希表是字典数据结构的一个普遍存在的类别。然而,标准的哈希表实现不能很好地转换到外部内存模型中,因为它们没有包含插入的局部性。Iacono和Patracsu为外部哈希表建立了一个更新/查询权衡曲线:在$O(λ/B)$分期IO中执行插入的哈希表需要$Ω(\log_λN)$预期的IO用于查询,其中$N$是可以存储在数据结构中的项目的数量,$B$是内存传输的大小,$M$是内存的大小,$λ$是一个调优参数。它们为$λ$提供了一种满足该曲线的散列数据结构,即$Ω(\log\log M + \log_M N)$。他们的数据结构,我们称之为\defn{IP hash table},是复杂的,据我们所知,还没有实现。在本文中,我们提出了一个新的和更简单的最佳外部存储器哈希表,\defn{Bundle of Arrays Hash Table}(BOA)。BOA基于大小分层的LSM,这是一种经过充分研究的数据结构,并且几乎同样容易实现。BOA最适用于较窄范围的$λ$。然而,BOA的简单性允许它们容易地被修改以实现以下结果:\begin{itemize} \item A new external memory data structure, the \defn{Bundle of Trees Hash Table} (BOT), that matches the performance of the …
2018-05-23 cs.DS
Lightweight Data Indexing and Compression in External Memory
在本文中,我们描述的算法计算的BWT和建设(压缩)索引在外部存储器中。我们的算法的创新特点是,他们是轻量级的意义上说,对于一个输入的大小$n$,他们只使用${n}$位的磁盘工作空间,而所有以前的方法使用$\Th{n \log n}$位的磁盘工作空间。此外,我们的算法只通过顺序扫描访问磁盘数据,因此它们充分利用了现代磁盘功能,使顺序磁盘访问比随机访问快得多。我们还提出了一个基于扫描的算法,用于反相的BWT,使用$\Th{n}$位的工作空间,和一个轻量级的{ \em内部存储器}算法计算的BWT,这是最快的文献中可用的工作空间时,$\os{n}$位。最后,我们证明了{ \em下限}的计算和反转的BWT通过顺序扫描的经典产品的复杂性:内部存储器空间$\times$通过磁盘数据的数量。
2009-09-24 cs.DS
Near-Optimal Online Multiselection in Internal and External Memory
我们介绍了一个在线版本的多选问题,其中q选择查询的n个元素的未排序数组的要求。我们提供了第一个在线算法,是1-竞争Kaligosi等人。[ICALP 2005]在比较复杂性方面。我们的算法也支持在线搜索查询效率。然后,我们扩展我们的算法的动态设置,同时保留在线功能,通过支持任意插入和删除的数组。假设一个元素的插入是紧接着搜索该元素之前,我们表明,我们的动态在线算法进行了最佳数量的比较,低阶项和一个添加剂O(n)项。对于外部记忆模型,我们描述了第一个在线多选择算法,是O(1)-竞争。当q > m时,这个结果改进了Sibeyn [Journal of Algorithms 2006]的工作,其中m是可以存储在主存中的块的数量。我们还扩展了它,以支持搜索,插入和删除的元素有效。
2013-07-13 cs.DS
External Memory Planar Point Location with Fast Updates
本文研究了在外部存储器模型或磁盘访问模型(DAM)下的动态平面点定位问题。该模型实现了polylog查询和polylog平均更新时间。我们提出了一个数据结构与$O( \log_B^2 N)$查询时间和$O(\frac{1}{ B^{1-ε}} \log_B N)$摊销更新时间,其中$N$是段的数量,$B$的块大小和$ε$是一个小的正常数,假设所有的面孔有恒定的大小。这是比最快的先前结构更快的更新的$B^{1-ε}$因子,并且将插入和删除的成本降低到子常数摊销时间,以便合理地选择$N$和$B$。我们的结构解决了一组动态的相邻不相交的线段之间的垂直射线拍摄查询的问题,这是众所周知的解决动态平面点定位的连接细分的平面与恒定大小的面。
2022-03-30 cs.DS
External-memory dictionaries with worst-case update cost
$B^ε$树[Brodal and Fagerberg 2003]是一种简单的I/O高效外部内存模型数据结构,它支持比B树快几个数量级的更新,查询性能与B树相当:对于任何正的恒定$ε<1$插入和缺失需要$O(\frac{1}{B^{1-ε}}\log_{B}N)$时间(而不是传统B树的$O(\log_BN)$时间),查询需要$O(\log_BN)$时间,返回$k$项的范围查询需要$O(\log_BN+\frac{k}{B})$时间。尽管$B^ε$树具有最优的更新/查询折衷,但是运行时被分摊。另一种结构是Bender等人[PODS 2017]引入的写优化跳表,它与$B^ε$树具有相同的性能,但运行时是随机的,而不是摊销的。在本文中,我们提出了一个变种的$B^ε$树与确定性的最坏情况下的运行时间是相同的原始的摊销运行时间。
2022-11-11 cs.DS
Dynamic External Hashing: The Limit of Buffering
哈希表是计算机科学中最基本的数据结构之一,无论在理论上还是在实践中都是如此。它们在外部存储器中特别有用,在外部存储器中,它们的查询性能接近仅一次磁盘访问的理想成本。Knuth给出了一个优雅的分析,表明使用一些简单的冲突解决策略(如线性探测或链接),查找的预期平均磁盘I/O数仅为$1+1/2^{Ω(b)}$,其中每个I/O可以读取包含$b$项的磁盘块。向哈希表中插入新项也会消耗$1+1/2^{Ω(b)}$ I/O,如果哈希表完全存储在磁盘上,这几乎是最好的方法。然而,这种假设是不现实的,因为任何在外部哈希表上运行的算法都必须有一些内部内存(至少是$Ω(1)$块)来工作。对于许多外部存储器数据结构,小的内部存储器缓冲区的可用性可以显著地减少对$o(1)$ I/O的摊销插入成本。在本文中,我们研究了固有的查询插入外部哈希表中存在的内存缓冲区的权衡。特别是,我们表明,对于任何常数$c>1$,如果查询成本是针对$1+O(1/b^{c})$ I/O,那么它是不可能的,以支持插入小于$1-O(1/b^{\frac{c-1}{4}})$ I/O摊销,这意味着内存缓冲区基本上是无用的。而对于任何常量$c<1$,如果将查询成本放宽为$1+O(1/b^{c})$ I/O,则存在具有$o(1)$插入成本的简单动态哈希表。这些结果也回答了Jensen和Pagh最近提出的一个悬而未决的问题。
2008-11-19 cs.DS
Buffered Partially-Persistent External-Memory Search Trees
本文提出一种缓冲的部分持久外部存储搜索树,以线性空间和摊销最优 I/O 界限同时支持历史版本查询与当前版本更新,并通过改进存储需求实现了最坏情况下的相同性能。
2025-03-11 cs.DS
Parallel and External-Memory Construction of Minimal Perfect Hash Functions with PTHash
提出支持多线程和外部内存处理的PTHash新构建算法,在保持竞争性构建时间与空间消耗的同时,实现了2-6倍更优的查找性能。
2023-08-06 cs.DS
Efficient Algorithms and Data Structures for Massive Data Sets
对于许多算法的问题,传统的算法,优化的数量上执行的指令证明昂贵的I/O。新颖的和非常不同的设计技术,当应用到这些问题,可以产生算法的I/O效率。这篇论文加入了越来越多的合唱这样的结果。我们使用的计算模型是外部存储器模型和W流模型。在外部记忆模型下,我们得到了如下结果。(1)一种计算图的最小生成树的I/O高效算法,该算法改进了最佳已知算法的性能。(2)软堆的第一个外部存储器版本,一个近似可融合的优先级队列。(3)硬堆,第一个可合并的外部内存优先级队列,它与已知外部内存优先级队列的摊销I/O性能相匹配,同时允许以相同的摊销成本进行合并操作。(4)I/O高效的精确,近似和随机算法的最小割问题,这还没有探索之前的外部存储器模型。(5)区间图的I/O的一些下限和上限。在W-Stream模型上,我们得到了如下结果。(1)用于各种树问题和列表排序的算法,其性能与最知名的算法相匹配,并且比它们更容易实现。(2)通过有效的排序算法,以及最大独立集问题,改进了最知名的算法。(3)给出了求顶点着色、近似单源最短路、最大匹配和近似加权顶点覆盖等图问题的有效算法。(4)列表排序和最大匹配的传递的下界。我们提出了两个变种的W-流模型,并设计算法的最大独立集,顶点着色,平面图单源最短路径问题的模型。
2010-05-19 cs.DS
Efficient Binary Decision Diagram Manipulation in External Memory
Aarhus University(奥胡斯大学)
本文提出基于迭代I/O高效算法的BDD操作方法,改进了原有算法性能,并扩展至其他BDD操作,实现更高效的外部内存处理。
2026-03-24 cs.DS
PaCHash: Packed and Compressed Hash Tables
我们引入PaCHash,一个哈希表,它将对象连续存储在一个数组中,即使对象的大小可变,也不需要插入空间。具体地,每个对象可以使用标准压缩技术来压缩。小的搜索数据结构允许在恒定的预期时间内定位对象。PaCHash最自然地被描述为静态外部哈希表,其中它需要每个外部存储器块的内部存储器的恒定位数。在这里,从某种意义上说,PaCHash击败了k-完美散列的空间消耗下限。快速SSD的实现需要每个外部存储器块大约5位的内部存储器,每个搜索操作仅需要一次磁盘访问(可变长度),并且与磁盘访问成本相比具有较小的内部搜索开销。我们的实验表明,即使考虑相同大小的对象,它的空间消耗也比之前所有方法都低。
2022-11-08 cs.DS
Lempel-Ziv Decoding in External Memory
简单快速的解码是LZ 77类型文本编码的主要优点之一,它被用于许多流行的文件压缩器,如gzip和7zip。随着最近引入用于Lempel-Ziv因式分解的外部存储器算法,需要外部存储器LZ 77解码,但是标准算法对文本进行随机访问,并且不能针对外部存储器计算进行简单修改。我们描述了LZ 77解码的第一个外部存储器算法,证明了它们的I/O复杂度是最优的,并证明了它们在实践中非常快,只有大约三倍慢于内存解码(当读取输入和写入输出的时间包括在内)。
2016-01-31 cs.DS cs.IT math.IT
BEEM : Bucket Elimination with External Memory
概率图模型的精确推理算法的一个主要限制是它们大量的内存使用,这通常使它们无法解决现实世界的问题。在本文中,我们将展示如何扩展推理算法,特别是桶消除,集群(加入)树分解的特殊情况下,利用磁盘内存。我们提供了基本的想法,并显示出有前途的实证结果,准确地解决了以前无法解决的大问题。
2012-03-15 cs.AI cs.DS
Nearest Neighbor based Clustering Algorithm for Large Data Sets
聚类是一种无监督学习技术,其中数据或对象基于某种相似性度量被分组为集合。大多数聚类算法都假设主存储器是无限的,并且可以容纳模式集。在现实中,许多应用程序会产生大量的模式,这些模式不适合主存储器。当数据集太大时,大部分数据存储在辅助存储器中。磁盘的输入/输出(I/O)是设计高效的大数据集聚类算法的主要瓶颈。不同的设计技术已经被用于设计大数据集的聚类算法。外存算法是一类可用于大数据集的算法。这些算法利用计算机的分层存储器结构,直接在算法中加入引用局部性。本文对在外部存储器模型(Aggarwal和Vitter 1988年提出)中设计聚类算法做出了一些贡献,使算法具有可扩展性。本文证明了共享近邻算法的I/O效率不是很高,因为其计算复杂性与I/O复杂性相同。该算法采用外部存储器模型设计,降低了I/O复杂度。计算复杂性保持不变。通过在STXXL库中实现,我们证明了算法与传统算法的性能,从而证实了理论分析。
2015-05-22 cs.DS
An External-Memory Algorithm for String Graph Construction
最近的一些结果已经引入了外部存储器算法来计算一组字符串的自索引,主要是通过计算输入字符串的Burrows-Wheeler变换(BWT)。这些结果的动机来自生物信息学,其中大量的短字符串(称为读取)被常规地产生和分析。在该领域中,一个基本问题是从未知基因组中提取的大量短得多的样本中组装基因组。目前用来解决这个问题的方法是内存密集型的。这一事实并不预示着基因组数据的可用性正在不断增加。在基因组组装中使用的数据结构是字符串图,其中顶点对应于样本,弧表示两个重叠的样本。在本文中,我们解决一个开放的问题:设计一个外部存储器算法来计算字符串图。
2015-06-11 cs.DS q-bio.GN
A Faster External Memory Priority Queue with DecreaseKeys
优先级队列是一种基本的数据结构,它维护一组动态的(键,优先级)对,并支持插入、删除、提取最小值和减少键操作。在外部存储器模型中,当前最佳优先级队列支持摊销$O(\frac{1}{B}\log \frac{N}{B})$ I/O中的每个操作。如果不需要支持DecreaseKey操作,则可以设计支持Insert的更有效的数据结构,最近的一个结果表明,通过证明$O(\frac{1}{B}\log \frac{N}{B}/ \log \frac{M}{B})$ I/O的下界,性能下降是不可避免的。具有DecreaseKeys的优先级队列的OS。在本文中,我们提出了一个新的优先级队列,它支持DecreaseKey操作,并具有预期的摊销I/O复杂度为$O(\frac{1}{B}\log \frac{N}{B}/\log\log N)$,从而缩小了下限和上限之间的差距。我们的研究结果在十多年来首次改进了DecreaseKeys的外部存储器优先级队列,并给出了最快的外部存储器单源最短路径算法。
2018-06-20 cs.DB cs.DS
Multi-variable Quantification of BDDs in External Memory using Nested Sweeping (Extended Paper)
Aarhus University(奥胡斯大学)
本文提出嵌套扫掠框架,用于在外部存储中高效处理BDDs的多变量量化、关系积和变量重排,提升算法性能。
2026-03-24 cs.DB cs.DS
Practical Parallel External Memory Algorithms via Simulation of Parallel Algorithms
本文介绍了PEMS 2,它是对PEMS(并行外部存储系统)的改进。PEMS在外部存储器(EM)上下文中执行批量同步并行(BSP)算法,使得能够计算超过主存储器大小的非常大的数据集。许多并行算法已经被设计和实现为批量同步并行计算模型。这样的算法通常假设整个数据集一次存储在主存储器中。PEMS通过使用磁盘空间作为额外的“虚拟处理器”的存储器来克服这个限制,而不需要对算法进行任何修改。之前的工作表明,这是一种很有前途的方法,可以随着计算资源(即处理器和磁盘)的添加而扩展。然而,该技术招致显着的开销相比,专用的EM算法。PEMS 2对模拟过程进行了改进,旨在减少此开销以及运行模拟所需的磁盘空间量。还引入了新功能,包括异步I/O和对多核处理器的支持。实验结果表明,这些变化显着提高了仿真的运行时间。PEMS 2缩小了模拟BSP算法和手工EM算法之间的性能差距,为使用超过RAM大小的数据集的BSP算法提供了一个实用的系统。
2010-01-19 cs.DC cs.DS
Symbolic Model Checking in External Memory
本研究为外部存储器BDD包Adiar扩展单调变量替换支持以实现关系积运算,优化后小BDD模型检测速度最高提47%,其I/O高效性使其受内存影响小,大实例下远快于同类工具CAL。
2025-05-16 cs.DS cs.LO
Validating XML Documents in the Streaming Model with External Memory
我们研究的问题验证XML文档的大小$N$对一般的DTD的流算法的上下文中。这项工作的出发点是一个众所周知的空间下界。有些XML文档和DTD的$p$ -pass流算法需要$Ω(N/p)$空间.我们表明,当允许访问外部存储器,有一个确定性的流算法,解决了这个问题的内存空间$O(\log^2 N)$,一个恒定数量的辅助读/写流,和$O(\log N)$总数量的通过XML文档和辅助流。该算法的一个重要中间步骤是以流的方式计算初始XML文档的第一子下兄弟(FCNS)编码。我们独立研究这个问题,我们还提供了内存高效的流算法解码的XML文档中的FCNS编码。此外,在没有外部存储器的情况下,可以使用次线性存储器来验证在通常的流模型中编码二叉树的XML文档。有一种使用$O(\sqrt{N \log N})$空间的一次通过算法和一种使用$O(\log^2 N)$空间的双向两次通过算法执行此任务。
2011-08-18 cs.DB cs.DS
External Memory Three-Sided Range Reporting and Top-$k$ Queries with Sublogarithmic Updates
提出了一种外部存储器数据结构,用于在点的插入和删除下维护$N$二维点的动态集合,并支持3边范围报告查询和顶- $k$查询,其中顶- $k$查询报告在给定$x$范围内具有最高$y$值的$k$点。对于任何常数$0<\varepsilon\leq \frac{1}{2}$,构建支持摊销的$O(\frac{1}{\varepsilon B^{1-\varepsilon}}\log_B N)$ IO中的更新和摊销的$O(\frac{1}{\varepsilon}\log_B N+K/B)$ IO中的查询的数据结构,其中$B$是外部存储器块大小,$K$是查询的输出大小(对于顶部$k$查询,$K$是$k$和查询间隔中的点数的最小值)。数据结构使用线性空间。更新边界是一个显着的因素$B^{1-\varepsilon}$改善以前的最佳更新边界的两个查询问题,同时保持在相同的查询和空间的界限。
2015-09-28 cs.CG cs.DS
DecreaseKeys are Expensive for External Memory Priority Queues
外部存储器数据结构中最大的公开问题之一是DecreaseKey操作的优先级队列问题。如果仅需要支持插入和提取最小值操作,则可以设计基于比较的优先级队列,其在一系列$N$操作上执行$O((N/B)\lg_{M/B} N)$ I/O,其中$B$是以字数表示的磁盘块大小,而$M$是以字数表示的主存储器大小。这与基于比较的排序的下限相匹配,因此对于基于比较的优先级队列是最佳的。但是,如果我们还需要支持DecreaseKeys,那么最知名的优先级队列的性能仅为$O((N/B) \lg_2 N)$ I/O。最大的问题是是否真的有必要降低性能。我们肯定地回答这个问题,证明了一个下界的$Ω((N/B) \lg_{\lg N} B)$ I/O处理一个序列的$N$混合插入,ExtraxMin和DecreaseKey操作。我们的下界证明了在细胞探测模型,因此也适用于非比较为基础的优先级队列。
2016-11-03 cs.CC cs.DS
External Memory Pipelining Made Easy With TPIE
当处理超过主存储器容量的大型数据集时,主存储器和外部存储器(磁盘)之间的数据移动,而不是实际(CPU)计算时间,通常是计算的瓶颈。由于数据在磁盘和主存之间以大的连续块移动,这导致了大量I/O高效算法的发展,这些算法最大限度地减少了这种块移动的数量。TPIE是为支持I/O高效算法实现而开发的两个主要库之一。TPIE提供了一个接口,在该接口中,可以以简单和模块化的方式实现列表流处理和排序,而不必担心存储管理或块移动。然而,如果不小心,这种基于流的实现可能导致实际上效率低下的算法,因为数据项列表通常在组件之间写入磁盘(和从磁盘读取)。在本文中,我们提出了一个主要的扩展TPIE库,其中包括一个流水线框架,允许实际有效的基于流的实现,同时最大限度地减少流组件之间的I/O开销。该框架通过管道传输流组件以避免组件之间的I/O,也就是说,它同时处理多个组件,同时将一个组件的输出直接传递到主存中下一个组件的输入。TPIE自动确定哪些组件要流水线化,并执行所需的主存储管理,该扩展还包括支持内部存储器计算的并行化和整个应用程序的进度跟踪。扩展库已经被用来评估I/O高效的算法在研究文献中,并大量用于I/O高效的商业地形处理应用程序的丹麦启动SCALGO。
2017-10-27 cs.DC cs.DS
Data-Oblivious External-Memory Algorithms for the Compaction, Selection, and Sorting of Outsourced Data
我们提出了数据不经意的算法在外部存储器模型的压缩,选择和排序。这些问题的动机来自使用外包数据存储服务并希望掩盖其数据访问模式的客户端。我们表明,压缩和选择可以做数据遗忘使用$O(N/B)$ I/O,排序可以做,成功的概率很高,使用$O((N/B)\log_{M/B} (N/B))$ I/O。我们的方法使用了一些新的算法技术,包括数据遗忘使用可逆的布鲁姆查找表,蝴蝶般的压缩网络,随机数据细化,和“洗牌和交易”数据扰动。此外,由于数据不经意的排序是在现有的不经意的RAM模拟的“内循环”的瓶颈,我们的排序结果提高了摊销的时间开销做不经意的RAM模拟的对数因子在外部存储器模型。
2011-03-26 cs.CR cs.DC cs.DS
Efficient Semi-External Depth-First Search
随着图形大小的快速增长,目前许多真实世界的图形很难加载到主存中。深度优先搜索(DFS)结果的计算成为一个热门话题,即,深度优先顺序或DFS树,半外部存储器模型。半外部算法假设主存至少能存储图G的一棵生成树T,并逐步将T重构为一棵非平凡的DFS-树。在本文中,我们提出了一个全面的研究半外部DFS问题。本文在分析了DFS算法存在的主要问题的基础上,提出了一种新的半外部DFS算法EP-DFS。与传统算法不同,我们专注于有效地解决这样复杂的问题,不仅具有更少的I/O,而且具有更简单的CPU计算(实现友好)和更少的随机I/O访问(关键效率)。在合成图和真实图上进行了广泛的实验评估。实验结果表明,我们的EP-DFS算法显着优于现有的算法。
2022-02-22 cs.DB cs.DS
Efficient Parallel and External Matching
我们表明,一个简单的算法,用于计算一个匹配的图形运行在对数的阶段引起的工作线性的输入大小。该算法可以适用于在几种计算模型中提供有效的算法,例如PRAM,外部存储器,MapReduce和分布式存储器模型。我们的CREW PRAM算法是第一个O(log^2 n)时间的线性工作算法。实验结果表明,该算法具有速度快、效率高、解质量好的特点。
2014-02-01 cs.DC cs.DS
Lower Bounds for External Memory Integer Sorting via Network Coding
对超大型数据集进行排序是实践中经常发生的任务。这些数据集通常比计算机的主存储器大得多,因此经常使用由Aggarwal和Vitter(1988)首次引入的外部存储器排序算法。基于比较的外部存储器排序的复杂性已经被理解了几十年,但是如果我们假设要排序的键是整数,情况仍然难以理解。在内部存储器中,可以使用经典的基数排序算法在$O(n)$时间内对每个$Θ(\lg n)$比特的一组$n$整数密钥进行排序,然而在外部存储器中,没有已知的比基于简单比较的整数排序算法更快的整数排序算法。在本文中,我们提出了一个严格的条件下界的外部存储排序的整数的复杂性。我们的下界是基于一个著名的猜想,在网络编码的李和李,谁证明了网络编码不能帮助任何超出标准的多商品流率在无向图。以前唯一将Li和Li猜想与算法的下界联系起来的工作是Adler等人的工作。Adler等人确实获得了遗忘算法的相对简单的下界(存储器访问模式是固定的并且与输入数据无关)。不幸的是,遗忘是一个很强的限制,特别是整数排序:我们表明,李和李猜想意味着一个$Ω(n \log n)$下界的内部存储器遗忘排序时的关键字是$Θ(\lg n)$位。这与经典的(非遗忘的)基数排序算法形成鲜明对比。事实上,超越遗忘是非常重要的;我们需要引入几个新的方法和相关技术,这是他们自己的兴趣,以获得我们的外部存储器整数排序的紧下界。
2018-11-04 cs.CC cs.DB cs.DS
I/O efficient bisimulation partitioning on very large directed acyclic graphs
在本文中,我们介绍了第一个有效的外部存储算法计算的双相似等价类的有向无环图(DAG)。DAG通常用于在各种实际应用中对数据进行建模,从XML文档和数据起源模型到Web分类和科学工作流。在研究大规模图上的高效推理时,节点双相似性的概念起着核心作用。例如,将XML数据集中的双相似节点分组在一起是许多复杂方法的第一步,这些方法用于构建索引数据结构,以实现高效的XML查询评估。然而,迄今为止,只有内部内存互模拟算法进行了研究。由于真实世界的DAG数据集的大小通常超过可用的主存储器,因此需要在外部存储器中进行存储。因此,实际上需要一种有效的方法来计算外部存储器中的互模拟。我们的通用算法具有O(Sort(|N| + |E|))的最坏情况IO复杂度,其中|N|和|E|分别是节点和边的数量,Sort(n)是对大小为n的输入进行排序所需的外部存储器访问次数。我们还研究了这种算法的特殊化,以共同的变化,互模拟树结构的XML数据集。我们经验验证了高效的性能的算法上的图形和XML文档具有数十亿的节点和边缘,并发现,即使在非常有限的内部内存可用的算法可以有效地处理这样的图形。所提出的算法是足够简单的实际实现和使用,并打开大门,进一步研究外部存储互模拟算法。为此,完整的开源C++实现已经免费提供。
2011-12-05 cs.DB cs.DS
Scalable Distributed-Memory External Sorting
我们设计算法,在大规模并行机器上对庞大的数据集进行排序。该算法是基于多路合并范式。我们首先概述了一个算法,其I/O的要求是接近下限。因此,与多路合并的天真实现和我们已知的所有其他方法相比,即使对于最大的可想象的输入,该算法也只对数据进行两次传递。第二种算法减少了通信开销,并以略微增加I/O要求为代价使用更传统的结果规范。一个实现在几个类别中赢得了众所周知的排序基准,并在很大程度上超过了它的竞争对手。
2009-10-14 cs.DC cs.DS cs.PF
External memory bisimulation reduction of big graphs
在本文中,我们提出,据我们所知,第一个已知的I/O高效的解决方案,用于计算的k-互模拟分区的大规模有向图,并执行维护这样的分区更新后的底层图形。互模拟在图数据的理论和应用中无处不在,互模拟是一个强大的节点等价概念,它直观地将图中共享基本结构特征的节点分组在一起。k-互模拟是互模拟的标准变体,其中仅在半径$k\geqslant 0$的局部邻域内考虑节点的拓扑特征。我们的分区构造算法的I/O成本由$O(k\cdot \mathit{sort}(|\et|) + k\cdot scan(|\nt|) + \mathit{sort}(|\nt|))$限定,而我们的维护算法由$O(k\cdot \mathit{sort}(|\et|) + k\cdot \mathit{sort}(|\nt|))$限定。空间复杂度界分别为$O(|\nt|+|\et|)$和$O(k\cdot|\nt|+k\cdot|\et|)$。这里,$|\et|$和$|\nt|$分别是由输入图的边集和节点集占用的磁盘页面的数量,而$\mathit{sort}(n)$和$\mathit{scan}(n)$分别是分类和扫描的成本,在外部存储器中占用$n$页的文件。对各种大规模真实世界和合成图形数据集的实证分析表明,我们的算法在实践中有效地执行,随着图形大小的增长而优雅地扩展。
2013-05-02 cs.DB cs.DS
Scalable String and Suffix Sorting: Algorithms, Techniques, and Tools
本文主要研究两个基本的排序问题:字符串排序和后缀排序。第一部分考虑共享内存多核机器上的并行字符串排序,第二部分使用归纳排序原理进行外部内存后缀排序,第三部分使用新的分布式算法大数据框架Thrill进行分布式外部内存后缀排序。
2018-08-02 cs.DC cs.DS
Batched Predecessor and Sorting with Size-Priced Information in External Memory
在单位成本比较模型中,一个黑盒接受两个输入项并输出比较结果。排序和搜索等问题已经在这个模型中进行了研究,它已经被推广到包括定价信息的概念,其中不同的项目对(例如数据库记录)具有不同的比较成本。这些比较成本可以是任意的(在这种情况下,没有算法可以接近最优(Charikar et al. STOC 2000)),结构化的(例如,比较成本可能取决于数据库的长度(Gupta et al. FOCS 2001)),或随机的(Angelov et al. LATIN 2008)。出于数据库设置的成本取决于项目的大小,我们考虑的问题,排序和批处理前两个非均匀的项目集$A$和$B$作为输入。(1)在RAM设置中,我们考虑两个集合都有$n$键的情况。在$A$中比较两个项目的成本是$a$,在$A$中比较一个项目和$B$中比较一个项目的成本是$b$,在$B$中比较两个项目的成本是$c$。我们给出了$a \le b \le c$情形的上界和下界。请注意,案例$b=1, a=c=\infty$是著名的“螺母和螺栓”问题。(2)在磁盘访问模型(DAM),在磁盘和内部存储器之间传输元素的主要瓶颈,我们考虑的情况下,在$B$中的元素大于元素在$A$。较大的项需要更多的I/O进入内存,消耗更多的内存空间,并且需要完整地进行比较。我们首先给出了输出敏感的下限和上限的批量前的问题,并使用这些推导出的两个模型中的排序的复…
2020-04-27 cs.DC cs.DS
Undirected Multiple-Unicast Network Coding and Faster External-Memory Integer Sorting
University of Toronto(多伦多大学);Tsinghua University(清华大学)
该研究针对Li-Li猜想给出反例,提出确定性外存整数排序算法,其块传输次数在多参数范围内优于经典方法,并通过Lean 4验证了算法正确性与编码的优势。
2026-11-03 cs.CC cs.DS cs.IT
Hierarchical Bin Buffering: Online Local Moments for Dynamic External Memory Arrays
局部矩用于局部回归,以计算统计测量,如总和,平均值和标准差,以及近似概率分布。我们考虑的情况下,数据源是一个非常大的I/O数组的大小为n,我们要计算的前N个局部矩,为某个常数N。时间复杂度为O(n)。我们开发了一系列的算法越来越复杂,使用预先计算和额外的缓冲区空间,以加快查询。更简单的算法将I/O数组划分为称为bin的连续范围,它们不仅适用于局部矩查询,而且适用于代数查询(MAX,AVERAGE,SUM等)。对于大小为sqrt{n}的N个缓冲区,时间复杂度下降到O(sqrt n)。更复杂的方法使用分级缓冲,并且当使用大小为n/b的N个分级缓冲器时,具有对数时间复杂度(O(b log_b n))。使用重叠箱缓冲,我们表明,只有一个单一的缓冲区是必要的,与基于小波的算法,但使用更少的存储。应用存在于多维和统计数据库中的海量数据集、交互式图像处理和可视化。
2020-04-26 cs.DB cs.DS
Leyenda: An Adaptive, Hybrid Sorting Algorithm for Large Scale Data with Limited Memory
排序是现代数据管理系统的基本任务之一。随着磁盘I/O成为最受指责的性能瓶颈和更多计算密集型工作负载,我们注意到,在异构环境中,性能瓶颈可能因基础设施而异。因此,排序内核需要适应不断变化的硬件条件。在本文中,我们提出了Leyenda,一个混合的,并行的和高效的基数最高有效位(MSB)合并排序算法,利用本地线程级CPU缓存和高效的磁盘/内存I/O。Leyenda能够根据不同的I/O和处理条件有效地进行内部或外部分拣。我们使用Sort Benchmark的三种不同工作负载对Leyenda进行了基准测试,针对三种独特的用例,包括内部,部分内存和外部排序,我们发现Leyenda的性能超过GNU的并行内存快速/合并排序实现多达三倍。Leyenda还在ACM 2019 SIGMOD编程竞赛中排名第二,总体排名第四。
2019-09-17 cs.DB cs.DC cs.DS