Ranking and Unranking k-subsequence universal words
A subsequence of a word w is a word u such that u = w[i_1] w[i_2] , … w[i_|u|], for some set of indices 1 ≤ i_1 < i_2 < … < i_k ≤ |w|. A word w is k-subsequence universal over an alphabet Σ if every word in Σ^k appears in w as a subsequence. In this paper, we provide new algorithms for k-subsequence universal words of fixed length n over the alphabet Σ = {1,2,…, σ}. Letting 𝒰(n,k,σ) denote the set of n-length k-subsequence universal words over Σ, we provide: * an O(n k σ) time algorithm for counting the size of 𝒰(n,k,σ); * an O(n k σ) time algorithm for ranking words in the set 𝒰(n,k,σ); * an O(n k σ) time algorithm for unranking words from the set 𝒰(n,k,σ); * an algorithm for enumerating the set 𝒰(n,k,σ) with O(n σ) delay after O(n k σ) preprocessing.
READ FULL TEXT