Computing Abelian String Regularities Based on RLE

Two strings x and y are said to be Abelian equivalent if x is a permutation of y, or vice versa. If a string z satisfies \(z = xy\) with x and y being Abelian equivalent, then z is said to be an Abelian square. If a string w can be factorized into a sequence \(v_1, \ldots , v_s\) of strings such that \(v_1\), ..., \(v_{s-1}\) are all Abelian equivalent and \(v_s\) is a substring of a permutation of \(v_1\), then w is said to have a regular Abelian period (p, t) where \(p = |v_1|\) and \(t = |v_s|\). If a substring \(w_1[i..i+\ell -1]\) of a string \(w_1\) and a substring \(w_2[j..j+\ell -1]\) of another string \(w_2\) are Abelian equivalent, then the substrings are said to be a common Abelian factor of \(w_1\) and \(w_2\) and if the length \(\ell \) is the maximum of such then the substrings are said to be a longest common Abelian factor of \(w_1\) and \(w_2\). We propose efficient algorithms which compute these Abelian regularities using the run length encoding (RLE) of strings. For a given string w of length n whose RLE is of size m, we propose algorithms which compute all Abelian squares occurring in w in O(mn) time, and all regular Abelian periods of w in O(mn) time. For two given strings \(w_1\) and \(w_2\) of total length n and of total RLE size m, we propose an algorithm which computes all longest common Abelian factors in \(O(m^2n)\) time.