Genome assembly is a prominent problem studied in bioinformatics, which computes the source string using a set of its overlapping substrings. Classically, genome assembly uses assembly graphs built using this set of substrings to compute the source string efficiently, having a tradeoff between scalability and avoiding information loss. The scalable de Bruijn graphs come at the price of losing crucial overlap information. The complete overlap information is stored in overlap graphs using quadratic space. Hierarchical overlap graphs [IPL20] (HOG) overcome these limitations, avoiding information loss despite using linear space. After a series of suboptimal improvements, Khan and Park et al. simultaneously presented two optimal algorithms [CPM2021], where only the former was seemingly practical. We empirically analyze all the practical algorithms for computing HOG on real and random datasets, where the optimal algorithm [CPM2021] outperforms the previous algorithms as expected, though at the expense of extra memory. However, it uses non-intuitive approach and non-trivial data structures. We present arguably the most intuitive algorithm, using only elementary arrays, which is also optimal. Our algorithm empirically proves even better for both time and memory over all the algorithms, highlighting its significance in both theory and practice. We further explore the applications of hierarchical overlap graphs to solve various forms of suffix-prefix queries on a set of strings. Loukides et al. [CPM2023] recently presented state-of-the-art algorithms for these queries. However, these algorithms require complex black-box data structures and are seemingly impractical. Our algorithms, despite failing to match the state-of-the-art algorithms theoretically, answer different queries ranging from 0.01-100 milliseconds for a data set having around a billion characters.
翻译:基因组组装是生物信息学中的一个重要问题,它通过一组重叠的子串来计算源字符串。传统上,基因组组装使用基于这组子串构建的组装图来高效计算源字符串,但需要在可扩展性和避免信息丢失之间进行权衡。可扩展的德布鲁因图以丢失关键重叠信息为代价。完整的重叠信息以二次空间存储在重叠图中。分层重叠图 [IPL20](HOG)克服了这些限制,尽管使用线性空间,但仍能避免信息丢失。经过一系列次优的改进后,Khan 和 Park 等人同时提出了两种最优算法 [CPM2021],其中只有前者看似实用。我们在真实和随机数据集上对所有计算 HOG 的实用算法进行了实证分析,其中最优算法 [CPM2021] 正如预期的那样优于先前算法,但代价是额外的内存开销。然而,它采用了非直观的方法和非平凡的数据结构。我们提出了可以说是最直观的算法,仅使用基本数组,并且也是最优的。我们的算法在时间和内存方面经验证均优于所有算法,凸显了其在理论和实践上的重要性。我们进一步探索了分层重叠图在解决字符串集合上各种形式的后缀-前缀查询中的应用。Loukides 等人 [CPM2023] 最近提出了针对这些查询的最先进算法。然而,这些算法需要复杂的黑盒数据结构,并且看似不实用。我们的算法虽然在理论上未能匹配最先进的算法,但对于一个包含约十亿字符的数据集,其回答不同查询的时间范围在 0.01 到 100 毫秒之间。