Abstract
Given a string X of length n on alphabet , the FM-index data structure allows counting all occurrences of a pattern P of length m in O(m) time via an algorithm called backward search. An important difficulty when searching with an FM-index is to support queries on L, the Burrows-Wheeler transform of X, while L is in compressed form. This problem has been the subject of intense research for 25 years now. Run-length encoding of L is an effective way to reduce index size, in particular when the data being indexed is highly-repetitive, which is the case in many types of modern data, including those arising from versioned document collections and in pangenomics. This paper takes a back-To-basics look at supporting backward search in FM-indexes, exploring and engineering two simple designs. The first divides the BWT string into blocks containing b symbols each and then run-length compresses each block separately, possibly introducing new runs (compared to applying run-length encoding once, to the whole string). Each block stores counts of each symbol that occurs before the block. This method supports the operation rankc(L, i) (i.e., count the number of times c occurs in the prefix L[1.i]) by first determining the block i/b in which i falls and scanning the block to the appropriate position counting occurrences of c along the way. This partial answer to rankc(L, i) is then added to the stored count of c symbols before the block to determine the final answer. Our second design has a similar structure, but instead divides the run-length-encoded version of L into blocks containing an equal number of runs. The trick then is to determine the block in which a query falls, which is achieved via a predecessor query over the block starting positions. We show via extensive experiments on a wide range of repetitive text collections that these FM-indexes are not only easy to implement, but also fast and space efficient in practice.
Original language | English |
---|---|
Title of host publication | 21st International Symposium on Experimental Algorithms, SEA 2023 |
Editors | Loukas Georgiadis |
Publisher | Schloss Dagstuhl- Leibniz-Zentrum fur Informatik GmbH, Dagstuhl Publishing |
Publication date | Jul 2023 |
Pages | 7:1--7:16 |
Article number | 7 |
ISBN (Electronic) | 978-3-95977-279-2 |
DOIs | |
Publication status | Published - Jul 2023 |
MoE publication type | A4 Article in conference proceedings |
Event | International Symposium on Experimental Algorithms - Barcelona, Spain Duration: 24 Jul 2023 → 26 Jul 2023 Conference number: 21 |
Publication series
Name | Leibniz International Proceedings in Informatics, LIPIcs |
---|---|
Volume | 265 |
ISSN (Print) | 1868-8969 |
Fields of Science
- data structures
- efficient algorithms
- 113 Computer and information sciences