Fast pattern-matching on indeterminate strings ?
In a string x on an alphabet ?, a position i is said to be indeterminate  iff x[i] x [ i ] may be any one of a specified subset {?1,?2,,?j} { ? 1 , ? 2 ,  , ? j } of ? , 2?j?|?| 2 ? j ? | ? | . A string x containing indeterminate positions is therefore also said to be indeterminate . Indeterminate strings can arise in DNA and amino acid sequences as well as in cryptological applications and the analysis of musical texts. In this paper we describe fast algorithms for finding all occurrences of a pattern p=p[1..m] p = p [ 1 . . m ] in a given text x=x[1..n] x = x [ 1 . . n ] , where either or both of p and x can be indeterminate. Our algorithms are based on the Sunday variant of the BoyerMoore pattern-matching algorithm, one of the fastest exact pattern-matching algorithms known. The methodology we describe applies more generally to all variants of BoyerMoore (such as Horspool's, for example) that depend only on calculation of the ? (rightmost shift) array: our method therefore assumes that ? is indexed (essentially, an integer alphabet), a requirement normally satisfied in practice.
pattern-matching indeterminate string algorithm sunday boyermoore word approximate