Verifying and enumerating parameterized border arrays

Tomohiro I, Shunsuke Inenaga, Hideo Bannai, Masayuki Takeda

Research output: Contribution to journalArticlepeer-review

15 Citations (Scopus)


The parameterized pattern matching problem is to check if there exists a renaming bijection on the alphabet with which a given pattern can be transformed into a substring of a given text. A parameterized border array (p-border array) is a parameterized version of a standard border array, and we can efficiently solve the parameterized pattern matching problem using p-border arrays. In this paper, we present a linear time algorithm to verify if a given integer array is a valid p-border array for a binary alphabet. We also show a linear time algorithm to compute all binary parameterized strings sharing a given p-border array. In addition, we give an algorithm which computes all p-border arrays of length at most n, where n is a given threshold. This algorithm runs in O(B 2 n) time, where B2 n is the number of all p-border arrays of length n for a binary parameter alphabet. The problems with a larger alphabet are much more difficult. Still, we present an O(n 1.5)time O(n)space algorithm to verify if a given integer array of length n is a valid p-border array for an unbounded alphabet. The best previously known solution to this task takes time proportional to the n-th Bell number 1/e∑k=0∞kn/k!, and hence our algorithm is much more efficient. Also, we show that it is possible to enumerate all p-border arrays of length at most n for an unbounded alphabet in O(B nn2.5) time, where Bn denotes the number of p-border arrays of length n.

Original languageEnglish
Pages (from-to)6959-6981
Number of pages23
JournalTheoretical Computer Science
Issue number50
Publication statusPublished - Nov 25 2011

All Science Journal Classification (ASJC) codes

  • Theoretical Computer Science
  • General Computer Science


Dive into the research topics of 'Verifying and enumerating parameterized border arrays'. Together they form a unique fingerprint.

Cite this