PalFM-index: FM-index for Palindrome Pattern Matching
Abstract
The palindrome pattern matching (pal-matching) is a kind of generalized pattern matching, in which two strings and of same length are considered to match (pal-match) if they have the same palindromic structures, i.e., for any possible , is a palindrome if and only if is a palindrome. The pal-matching problem is the problem of searching for, in a text, the occurrences of the substrings that pal-match with a pattern. Given a text of length over an alphabet of size , an index for pal-matching is to support, given a pattern of length , the counting queries that compute the number of occurrences of and the locating queries that compute the occurrences of . The authors in [I et al., Theor. Comput. Sci., 2013] proposed an -bit data structure to support the counting queries in time and the locating queries in time. In this paper, we propose an FM-index type index for the pal-matching problem, which we call the PalFM-index, that occupies bits of space and supports the counting queries in time. The PalFM-indexes can support the locating queries in time by adding bits of space, where is a parameter chosen from in the preprocessing phase.
1 Introduction
A palindrome is a string that can be read same backward as forward. Palindromic structures in a string are one of the most fundamental structures in the string and have been extensively studied. For example, it is known that any string contains at most distinct palindromic substrings [6], and the strings reaching the maximum values have some intriguing properties [15, 28]. Another concept regarding palindromic structures is the palindrome complexity [1, 4, 2], which is the number of distinct palindromic substrings of a given length in a string.
Instead of thinking about distinct palindromic substrings, one might be interested in occurrences of palindromic substrings. The palindromic structures in such a sense are captured by the maximal palindromes from all possible “centers” in a string. Manacher’s algorithm [26], originally proposed for computing a prefix-palindrome, can be extended to compute all the maximal palindromes in time for a string . The authors in [18] considered the problem of inferring strings from a given set of maximal palindromes and showed that the problem can be solved in time.
In [19], a new concept called palindrome pattern matching was introduced as a generalized pattern matching. Two strings and of the same length are said to palindrome pattern match (pal-match in short) iff they have the same palindromic structures, i.e., the following condition holds: for any possible , is a palindrome iff is a palindrome. We remark that and themselves are not necessarily palindromes. The palindrome pattern matching has potential applications to genomic analysis, in which some palindromic structures play an important role to estimate RNA secondary structures [21].
The pal-matching problem is to search for, in a text, the occurrences of the substrings that pal-match with a pattern. Given a text of length and a pattern of length , a Morris-Pratt type algorithm for solving the pal-matching problem in time was proposed in [19]. The method in [19] is based on the -encoding of a string , denoted as , that is the integer array of length such that is the length of the longest suffix palindrome of . The -encoding is helpful because two strings and pal-match iff . When is large and static, and patterns come online later, one might think of preprocessing to construct an index for pal-matching. An index for pal-matching is to support the counting queries that compute the number of occurrences of and the locating queries that compute the occurrences of . For this purpose, I et al. [19] proposed the palindrome suffix tree of , which is a compacted tree of the -encoded suffixes of . The palindrome suffix tree takes bits of space and supports the counting queries in time and the locating queries in time, where is the size of the alphabet from which characters in are taken and is the number of occurrences.
In this paper, we present a new index, named the PalFM-index, by applying the technique of the FM-index [7] to the pal-matching problem. In so doing we introduce a new encoding, named the -encoding, that is based on the non-trivial shortest suffix-palindrome of each prefix. In contrast to the -encoding, the -encoding has a good property to design the PalFM-index. The PalFM-index occupies bits of space and supports the counting queries in time. The locating queries can be supported in time by adding bits of space, where is a parameter chosen from in the preprocessing phase.
1.1 Related work
One of the well-studied algorithmic problems related to palindromes is factorizing a string into non-empty palindromes, or in other words, recognizing a string that is obtained by concatenating a certain number of non-empty palindromes [26, 24, 12, 9, 20, 25, 3, 29]. The combinatorial properties discovered during tackling this factorization problem are useful to work on palindromes-related problems.
Developing techniques of designing space-efficient indexes for generalized pattern matching is of great interest. Our PalFM-index was inspired by that of Kim and Cho [23], which is a simplified version of the FM-index for parameterized pattern matching [13]. Indexes based on the FM-index for other generalized pattern matching problems were considered in [14, 11, 22].
2 Preliminaries
2.1 Notations
An integer interval is denoted by , where represents the empty interval if .
Let be a finite alphabet, a set of characters. An element of is called a string. The length of a string is denoted by . The empty string is a string of length 0, that is, . The concatenated string of two strings and are denoted as or simply . The -th character of a string is denoted by for , and the substring of a string that begins at position and ends at position is denoted by for , i.e. . For convenience, let if . A substring of the form (resp. ) is called a prefix (resp. suffix) of and denoted as (resp. ) in shorthand. Note that is a substring/prefix/suffix of any string . A substring of is called proper if it is not itself. When needed we use parentheses to indicate positions in a concatenated string, for example, refers to the -th character of the string . Hence, should be distinguished from , which can be interpreted as the concatenated string of and .
Let denote the total order over an alphabet we consider. In particular, we will consider strings over a set consisting of integers and , in which natural total order based on their values is employed. We extend to denote the lexicographic order of strings over the alphabet. For any strings and that do not match, we say that is lexicographically smaller than and denote it by iff for largest integer with , where we assume that or refers to the lexicographically smallest character if it points to out of bounds.
For any string , let denote the reversed string of , that is, . A string is called a palindrome if . The radius of a palindrome is . The center of a palindromic substring of a string is . A palindromic substring is called the maximal palindrome at the center if no other palindromes at the center have a larger radius than , i.e., if , , or .
Two strings and of same length are said to palindrome pattern match (pal-match in short) iff they have the same palindromic structures, i.e., the following condition holds: for any possible , is a palindrome iff is a palindrome. For example, and pal-match since their palindromic structures coincide (see Figure 1). Note that pal-matching induces a substring consistent equivalent relation [27], i.e., if and pal-match then and pal-match for any possible .

The pal-matching problem is to search for, in a text string , the occurrences of the substrings that pal-match with a pattern . In the pal-matching problem, an occurrence of refers to a position such that and pal-match. Throughout this paper we consider indexing a text of length over an alphabet of size .
2.2 Toolbox
As a component of our PalFM-index, we use a data structure for a string over an integer alphabet supporting the following queries.
-
•
: return the number of occurrences of character in .
-
•
: return the -th smallest position of the occurrences of character in .
-
•
: return the number of the occurrences of any character in in .
The Wavelet tree [17] supports these queries in time using bits of space, where is the 0-th order empirical entropy of . The subsequent studies [8, 16] improved the complexities, resulting in the following theorem.
Theorem 1 ([16]).
For a string over an integer alphabet , there is a data structure in bits of space that supports , and in time.
We also use a data structure for the Range Maximum Queries (RMQs) over an integer array . Given an interval over , a query returns a position in that has the maximum value in , that is, . We use the following result.
Theorem 2 ([10]).
For an integer array of length , there is a data structure with bits of space that supports the RMQs in time.
2.3 FM-index
The suffix array of is the integer array of length such that is the starting position of the lexicographically -th suffix of .111Against convention, we include the empty string that starts with the position to . In particular, holds as the empty string is always the smallest suffix. We define the string (a.k.a. the Burrows-Wheeler Transform (BWT) [5] of ) of length as follows:
We define the string of length as . The so-called LF-mapping is the function defined to map a position to such that (with the corner case for ). A crucial point is that LF-mapping can be efficiently implemented by rank queries on and select queries on with . 222In the plain LF-mapping, select queries on can be implemented by a simple table that counts, for each character , the number of occurrences of characters smaller than in , but it is not the case in our generalized LF-mapping for pal-matching. The occurrences of pattern in can be answered by finding the maximal interval in the array such that is prefixed by iff , and computing the -values in the interval. For a string and character , the so-called backward search computes the maximal interval in the prefixed by from that of using a similar mechanism of the LF-mapping (see [7] for more details).
3 Encodings for pal-matching
The pal-matching algorithms in [19] are based on the -encoding of a string , denoted as . is the integer array of length such that, for any position , is the length of the longest suffix-palindrome of . See Table 1 for example.
Lemma 3 (Lemma 2 in [19]).
For any strings and , and pal-match iff .
Although Lemma 3 is sufficient to design suffix-tree type indexes, it seems that the -encoding is not suitable to design FM-index type indexes. For example, more than one position could change when a character is prepended (see Table 1) and this unstable property make messes up lexicographic order of -encoded suffixes, which prevents us to implement LF-mapping space efficiently.
In this paper, we introduce a new encoding suitable to design FM-index type indexes for pal-matching. Our new encoding is based on the shortest suffix-palindrome for each prefix, where the shortest suffix is chosen excluding the trivial palindromes of length . We call the encoding the shortest suffix-palindrome encoding (the -encoding in short). For any string , the -encoding of is the integer array of length such that, for any position , is the length of the non-trivial shortest suffix-palindrome of if such exists, and otherwise . See Table 1 for example.
1 | 1 | 2 | 3 | 5 | 3 | 5 | ||
2 | 2 | 5 | 3 | 2 | ||||
1 | 1 | 3 | 2 | 3 | 5 | 7 | 5 | |
3 | 2 | 2 | 5 | 3 | 2 |
Lemma 4.
Two strings and pal-match iff .
Proof.
Since the -encoding relies only on palindromic structures, the direction from left to right is clear.
In what follows, we focus on the opposite direction; and pal-match if . Assume for contrary that and does not pal-match. Without loss of generality, we can assume that there are positions and such that is a palindrome but is not, with smallest if there are many. Note that the smallest assumption on implies that is a palindrome: If is not a palindrome (clearly in such a case), must be a smaller position that satisfies the above condition because is a palindrome. Let . Since is a palindrome, it holds that . Moreover, as is not a palindrome. Since the palindrome has a suffix-palindrome of length , the prefix of length is a palindrome, too. On the other hand, since is not a palindrome that has a suffix-palindrome of length , the prefix of length cannot be a palindrome. This contradicts the smallest assumption on because is a smaller position such that and disagree on their palindromic structures. ∎
In contrast to the -encoding, the -encoding has a stable property when prepending a character.
Lemma 5.
For any string and character , there is at most one position such that . Moreover, if such a position exists, and .
Proof.
By definition it is obvious that if . In what follows, we assume for contrary that there exist two positions and with such that and . Note that and by definition, and and are palindromes. Since is a prefix-palindrome of , it is also a suffix-palindrome of . It contradicts that is the non-trivial shortest suffix-palindrome of . ∎
We consider yet another encoding based on the shortest suffix of that is extended outwards when appending a character . The concept is closely related to the -encoding because the extended palindrome is the non-trivial shortest suffix-palindrome of . An advantage of this new encoding is that we can reduce the number of distinct integers to be used to , which will be used (in a symmetric way) to define and obtain a space-efficient FM-index specialized for pal-matching.
For any string we partition the suffix-palindromes (including the empty suffix) by the characters they have immediately to their left and call each group a suffix-pal-group for . We utilize the following lemma.
Lemma 6.
For any string , the number of suffix-pal-groups for is .
Proof.
It is obvious that the number of suffix-pal-groups is at most because each character is associated to at most one suffix-pal-group. Also it is known that the lengths of the suffix-palindromes can be represented by arithmetic progressions and each arithmetic progression induces a period in the involved suffix (e.g., see [20]). Then we can see that every suffix-palindrome represented by an arithmetic progression is in the same group. Hence there are groups. ∎
The next lemma shows that pal-matching strings share the same structure of suffix-pal-groups.
Lemma 7.
Let and be strings that pal-match and let and be integers with . If and are palindromes with , then and are palindromes with .
Proof.
Since the palindrome has a suffix-palindrome of length , it also has a prefix-palindrome of length , that is, is a palindrome. Also, holds. Since , is a palindrome.
Since and pal-match, , and are palindromes. By transition of equivalence induced by the palindromes and , we can see that . Thus the claim holds. ∎
Let the shortest palindrome in a suffix-pal-group be the representative of the group. We assign consecutive integer identifiers starting from to the suffix-pal-groups in increasing order of their representative’s lengths. See Figure 2 for example.

For any string , we define the shortest suffix-pal-group encoding of as the integer array of length such that, for any position , is the identifier assigned to the suffix-pal-group of the suffix-palindrome in that is extended outwards by appending , if such exists, and otherwise . See Table 2 and Figure 3 for example. Since the non-trivial shortest suffix of is extended outwards from the representative of the suffix-pal-group for that has immediately to the left, has essentially equivalent information to . Formally the next lemma holds.
Lemma 8.
For any string of length , suppose we have the set of lengths of the representatives of suffix-pal-gropus of . Given we can identify , and vice versa.
Proof.
It is clear that iff . Given we can identify from the representative of the suffix-pal-group with identifier . Given we can identify from the representative that has length . ∎
The next lemma shows that the -encoding is another encoding for pal-matching, and induces the same lexicographic order with the -encoding.
Lemma 9.
Let and be strings of length such that . Then, iff . Also, iff .
Proof.
3 | 2 | 2 | 5 | 3 | 2 | |||
2 | 1 | 1 | 2 | 2 | 2 |

For any string , let . Intuitively, holds the information from which prefix-palindrome of the non-trivial shortest prefix-palindrome of is extended, and the information is encoded with the identifier defined in the completely symmetric way as the case of the suffix-pal-groups. The function will be applied to the suffixes of to define and , and the next lemma is a key to implement LF-mapping for our PalFM-index.
Lemma 10.
Let and be strings of length such that . Then, iff .
Proof.
Let be the largest integer such that and pal-match. Since , using Lemma 9 in a symmetric way, it holds that and pal-match. Recall Lemma 5 that at most one in (resp. ) turns into the largest possible integer at the changed position when prepending (resp. . We analyze the cases focusing on the changed positions:
-
1.
The claim clearly holds if neither nor has the changed position less than or equal to .
-
2.
If both of and have the changed position at , it holds that and , which also indicates that . Since this change does not affect the lexicographic order, the claim holds. See the left part of Figure 4 for an illustration of this case.
-
3.
Assume has the changed position at , but does not. Since and pal-match, cannot be less than , and hence, and . Note that the lexicographic order between and (resp. and ) is determined by that between and (resp. and ). Since the lexicographic order between and is the same as that between and , the claim holds. See the right part of Figure 4 for an illustration of this case.
Thus, we conclude that the lemma holds. ∎

4 Computational results for new encodings
In this section, we show that the - and -encodings can be computed in linear time for a given string.
We use the following known results.
Lemma 11 ([26]).
For any string , we can compute all the maximal palindromes in time.
Lemma 12 (Lemma 3 in [19]).
For any string , we can compute in time.
Lemma 13.
For any string , we can compute in time.
Proof.
Manacher’s algorithm [26] can compute the radius of the maximal palindrome in increasing order of centers in linear time. It can be extended to compute the length of the longest palindrome ending at each position because the maximal palindrome with the smallest center that ends at position gives us the longest suffix-palindrome ending at by truncating the palindrome at (e.g., see Lemma 3 of [19]). In a similar way, we can compute the length of the second longest palindrome ending at .
Using and , we can compute in increasing order as follows:
-
1.
If , then .
-
2.
If and , then .
-
3.
If and , then .
In the third case, we use the fact that the non-trivial shortest suffix-palindrome ending at has length and it ends at , too.
Clearly all can be done in time. ∎
For any string , let denote the array of length such that stores the number of suffix-pal-groups for .
Lemma 14.
For any string , we can compute in time.
Proof.
Let be the array defined in a symmetric way of such that stores the length of the non-trivial shortest prefix-palindrome starting at (or if such a palindrome does not exist). Using Lemma 13 in a symmetric way, we can compute in time.
Let us focus on the palindromes involved in . First, there is a suffix-pal-group for that has immediately to their left iff . Next observe that the palindromes in other suffix-pal-groups for , which do not have immediately to their left, are the maximal palindromes ending at . Also, a maximal palindrome is the representative (i.e., the shortest palindrome) in a suffix-pal-group to which it belongs. if and only if or . See Figure 5 for illustrations of these observations.
Based on the above observations, we compute as follows: First, we compute the maximal palindromes and in time by Lemmas 11 and 12. Next we check every maximal palindrome and assign it to its ending position if it is a representative, which can be done in time in total. We also check if for all positions in time to count a suffix-pal-group that has immediately to their left. To sum up, can be computed in time. ∎

Generalizing the algorithm presented in the proof of Lemma 14, we obtain:
Lemma 15.
For any string , we can compute in time.
Proof.
We modify the algorithm presented in the proof of Lemma 14 slightly. Now the task is to count, for every position , the number of suffix-pal-groups for whose representative is shorter than because the number is exactly by definition. We check every maximal palindrome and assign it to its ending position if and . Finally the number of representatives assigned to plus one is . Similarly to the proof of Lemma 14, all can be done in time. ∎
5 PalFM-index
The PalFM-index of conceptually sort the suffixes of in lexicographic order of their -encodings (or equivalently -encodings). Let be the integer array of length such that is the starting position of the -th suffix of in -encoded order. We define the strings and of length based on function applied to the sorted suffixes. Formally, for any position we define:
See Figure 6 for example.
As in the case of , we define a function so that (with the corner case for ). Thanks to Lemma 10, for any value , the suffixes used to obtain -th in and in are the same, which enables us to implement the function by . See Figure 7 for an illustration.
1 | 10 | 2 | |||||
2 | 9 | 5 | |||||
3 | 2 | 6 | |||||
4 | 5 | 7 | |||||
5 | 8 | 8 | |||||
6 | 1 | 1 | |||||
7 | 4 | 9 | |||||
8 | 7 | 10 | |||||
9 | 3 | 3 | |||||
10 | 6 | 4 |

For any string , let -interval refer to the maximal interval such that is prefixed by , where -interval is empty if there is no substring of that pal-matches with . Notice that the substring of of length starting at pal-matches with iff . A single step of backward search computes -interval from -interval for some character .
The following theorems are the main contributions of this paper.
Theorem 16.
Let be a string of length over an alphabet of size . There is a data structure of bits of space to support the counting queries for the pal-matching problem in time, where is the length of a given pattern .
Proof.
We use the data structures of Theorem 1 for and , and the RMQ data structure of Theorem 2 for the integer array with . Since the number of distinct symbols in and are by Lemma 6, the data structures occupy bits of space in total and all queries (, , and ) can be supported in time.
The number of occurrences of can be answered by computing the width of -interval. Thus we focus on a single step of backward search. In a general setting, for any string and a character , we show how to compute -interval in time from -interval , and the number of prefix-pal-groups of . The procedure differs depending on or not.
-
1.
When . Using Lemma 9 in a symmetric way, is obtained by mapping the positions of in by the function. More specifically, and , which can be computed in time.
-
2.
When . We note that is the maximal interval such that does not have non-trivial prefix-palindrome (i.e. ) or has the non-trivial shortest prefix-palindrome of length longer than (i.e. ). Thus, is equivalent to the number of occurrences of values larger than in , which can be computed in in time. Moreover, it holds that because with is always lexicographically larger than with . Thus, we can compute in time.
Backward search for requires and the number of prefix-pal-groups of for all , which can be computed by and in time using Lemmas 15 and 14.
Putting all together, we get the theorem. ∎
Theorem 17.
Let be a string of length over an alphabet of size and be an integer in . There is a data structure of bits of space to support the locating queries for the pal-matching problem in time, where is the length of a given pattern and is the number of occurrences to report.
Proof.
We use the data structure and the algorithm of Theorem 16 to compute -interval in bits of space and time. The occurrences of (in the sense of pal-matching) can be answered by the -values in -interval. We employ exactly the same sampling technique used in the FM-index to retrieve -values (e.g., see [7]): We make a bit vector of length marking the positions in such that for some integer , and the sparse suffix array holding only the marked -values in the order. is equipped with a data structure to support the rank queries and the additional space to Theorem 16 is bits in total.
If position is marked, is retrieved by in time. If position is not marked, we apply LF-mapping times from until we reach a marked position and retrieve by . Since text positions are marked every positions, the number of LF-mapping steps is at most , and hence, can be retrieved in time. Therefore we can report each occurrence of in time, and the theorem follows. ∎
6 Conclusions and future work
In this paper, we developed new encoding schemes for pal-matching and proposed the PalFM-index, a space-efficient index for pal-matching based on the FM-index. Future work includes to present an efficient construction algorithm of the PalFM-index, and to reduce the space requirement (e.g. by incorporating with the idea of [13]). Another interesting research direction would be to develop a general framework to design FM-index type indexes in generalized pattern matching. We believe that switching encoding from to to design the PalFM-indexes gives a good hint to pursue this direction, and conjecture that any generalized pattern matching under a substring consistent equivalent relation [27] admits such shortest positional encodings to design FM-index type indexes.
Acknowledgements
This work was supported by JSPS KAKENHI (Grant Number 19K20213).
References
- [1] Jean-Paul Allouche, Michael Baake, Julien Cassaigne, and David Damanik. Palindrome complexity. Theor. Comput. Sci., 292(1):9–31, 2003.
- [2] Mira-Cristiana Anisiu, Valeriu Anisiu, and Zoltán Kása. Total palindrome complexity of finite words. Discrete Mathematics, 310(1):109–114, 2010. \hrefhttps://doi.org/http://dx.doi.org/10.1016/j.disc.2009.08.002 doi:http://dx.doi.org/10.1016/j.disc.2009.08.002.
- [3] Kirill Borozdin, Dmitry Kosolobov, Mikhail Rubinchik, and Arseny M. Shur. Palindromic length in linear time. In Proc. 28th Annual Symposium on Combinatorial Pattern Matching (CPM) 2017, pages 23:1–23:12, 2017. \hrefhttps://doi.org/10.4230/LIPIcs.CPM.2017.23 doi:10.4230/LIPIcs.CPM.2017.23.
- [4] Srecko Brlek, Sylvie Hamel, Maurice Nivat, and Christophe Reutenauer. On the palindromic complexity of infinite words. Int. J. Found. Comput. Sci., 15(2):293–306, 2004. \hrefhttps://doi.org/10.1142/S012905410400242X doi:10.1142/S012905410400242X.
- [5] Michael Burrows and David J Wheeler. A block-sorting lossless data compression algorithm. Technical report, HP Labs, 1994.
- [6] Xavier Droubay, Jacques Justin, and Giuseppe Pirillo. Episturmian words and some constructions of de luca and rauzy. Theor. Comput. Sci., 255(1-2):539–553, 2001. \hrefhttps://doi.org/10.1016/S0304-3975(99)00320-5 doi:10.1016/S0304-3975(99)00320-5.
- [7] Paolo Ferragina and Giovanni Manzini. Opportunistic data structures with applications. In FOCS, pages 390–398, 2000.
- [8] Paolo Ferragina, Giovanni Manzini, Veli Mäkinen, and Gonzalo Navarro. Compressed representations of sequences and full-text indexes. ACM Trans. Algorithms, 3(2), 2007.
- [9] Gabriele Fici, Travis Gagie, Juha Kärkkäinen, and Dominik Kempa. A subquadratic algorithm for minimum palindromic factorization. Journal of Discrete Algorithms, 28:41–48, 2014. StringMasters 2012 & 2013 Special Issue (Volume 1). URL: http://www.sciencedirect.com/science/article/pii/S1570866714000525, \hrefhttps://doi.org/https://doi.org/10.1016/j.jda.2014.08.001 doi:https://doi.org/10.1016/j.jda.2014.08.001.
- [10] Johannes Fischer and Volker Heun. Space-efficient preprocessing schemes for range minimum queries on static arrays. SIAM J. Comput., 40(2):465–492, 2011.
- [11] Travis Gagie, Giovanni Manzini, and Rossano Venturini. An encoding for order-preserving matching. In Proc. 25th Annual European Symposium on Algorithms (ESA) 2017, pages 38:1–38:15, 2017. \hrefhttps://doi.org/10.4230/LIPIcs.ESA.2017.38 doi:10.4230/LIPIcs.ESA.2017.38.
- [12] Zvi Galil and Joel I. Seiferas. A linear-time on-line recognition algorithm for “palstar”. J. ACM, 25(1):102–111, 1978. \hrefhttps://doi.org/http://doi.acm.org/10.1145/322047.322056 doi:http://doi.acm.org/10.1145/322047.322056.
- [13] Arnab Ganguly, Rahul Shah, and Sharma V. Thankachan. pBWT: Achieving succinct data structures for parameterized pattern matching and related problems. In Proc. 28th Annual ACM-SIAM Symposium on Discrete Algorithms (SODA) 2017, pages 397–407, 2017. \hrefhttps://doi.org/10.1137/1.9781611974782.25 doi:10.1137/1.9781611974782.25.
- [14] Arnab Ganguly, Rahul Shah, and Sharma V. Thankachan. Structural pattern matching - succinctly. In Proc. 28th International Symposium on Algorithms and Computation (ISAAC) 2017, pages 35:1–35:13, 2017. \hrefhttps://doi.org/10.4230/LIPIcs.ISAAC.2017.35 doi:10.4230/LIPIcs.ISAAC.2017.35.
- [15] Amy Glen, Jacques Justin, Steve Widmer, and Luca Q. Zamboni. Palindromic richness. Eur. J. Comb., 30(2):510–531, 2009. \hrefhttps://doi.org/10.1016/j.ejc.2008.04.006 doi:10.1016/j.ejc.2008.04.006.
- [16] Alexander Golynski, Rajeev Raman, and S. Srinivasa Rao. On the redundancy of succinct data structures. In Joachim Gudmundsson, editor, Proc. 11th Scandinavian Workshop on Algorithm Theory (SWAT) 2008, volume 5124 of Lecture Notes in Computer Science, pages 148–159. Springer, 2008.
- [17] Roberto Grossi, Ankur Gupta, and Jeffrey Scott Vitter. High-order entropy-compressed text indexes. In Proc. 14th Annual ACM-SIAM Symposium on Discrete Algorithms (SODA) 2003, pages 841–850. ACM/SIAM, 2003.
- [18] Tomohiro I, Shunsuke Inenaga, Hideo Bannai, and Masayuki Takeda. Counting and verifying maximal palindromes. In Proc. 17th International Symposium on String Processing and Information Retrieval (SPIRE) 2010, pages 135–146, 2010.
- [19] Tomohiro I, Shunsuke Inenaga, and Masayuki Takeda. Palindrome pattern matching. Theor. Comput. Sci., 483:162–170, 2013. \hrefhttps://doi.org/http://dx.doi.org/10.1016/j.tcs.2012.01.047 doi:http://dx.doi.org/10.1016/j.tcs.2012.01.047.
- [20] Tomohiro I, Shiho Sugimoto, Shunsuke Inenaga, Hideo Bannai, and Masayuki Takeda. Computing palindromic factorizations and palindromic covers on-line. In Proc. 25th Annual Symposium on Combinatorial Pattern Matching (CPM) 2014, volume 8486 of Lecture Notes in Computer Science, pages 150–161. Springer, 2014.
- [21] Ignacio Tinoco Jr., Olke C. Uhlenbeck, and Mark D. Levine. Estimation of secondary structure in ribonucleic acids. Nature, 230:362–367, 1971.
- [22] Sung-Hwan Kim and Hwan-Gue Cho. A compact index for cartesian tree matching. In Pawel Gawrychowski and Tatiana Starikovskaya, editors, Proc. 32nd Annual Symposium on Combinatorial Pattern Matching (CPM) 2021, volume 191 of LIPIcs, pages 18:1–18:19. Schloss Dagstuhl - Leibniz-Zentrum für Informatik, 2021.
- [23] Sung-Hwan Kim and Hwan-Gue Cho. Simpler FM-index for parameterized string matching. Inf. Process. Lett., 165:106026, 2021. \hrefhttps://doi.org/10.1016/j.ipl.2020.106026 doi:10.1016/j.ipl.2020.106026.
- [24] Donald E. Knuth, James H. Morris, and Vaughan R. Pratt. Fast pattern matching in strings. SIAM J. Comput., 6(2):323–350, 1977.
- [25] Dmitry Kosolobov, Mikhail Rubinchik, and Arseny M. Shur. Pal k is linear recognizable online. In Proc. 41st International Conference on Current Trends in Theory and Practice of Computer Science (SOFSEM) 2015, pages 289–301, 2015.
- [26] Glenn K. Manacher. A new linear-time “on-line” algorithm for finding the smallest initial palindrome of a string. J. ACM, 22(3):346–351, 1975. URL: http://doi.acm.org/10.1145/321892.321896, \hrefhttps://doi.org/10.1145/321892.321896 doi:10.1145/321892.321896.
- [27] Yoshiaki Matsuoka, Takahiro Aoki, Shunsuke Inenaga, Hideo Bannai, and Masayuki Takeda. Generalized pattern matching and periodicity under substring consistent equivalence relations. Theor. Comput. Sci., 656:225–233, 2016.
- [28] Antonio Restivo and Giovanna Rosone. Burrows-wheeler transform and palindromic richness. Theor. Comput. Sci., 410(30-32):3018–3026, 2009. \hrefhttps://doi.org/10.1016/j.tcs.2009.03.008 doi:10.1016/j.tcs.2009.03.008.
- [29] Mikhail Rubinchik and Arseny M. Shur. EERTREE: an efficient data structure for processing palindromes in strings. Eur. J. Comb., 68:249–265, 2018. \hrefhttps://doi.org/10.1016/j.ejc.2017.07.021 doi:10.1016/j.ejc.2017.07.021.