Finite fields and string matching

Andrew MacFie Math 5900 X

String matching
โ€ข Input
โ€“ Text: ๐‘ก = ๐‘ก0 ๐‘ก1 โ€ฆ ๐‘ก๐‘›โˆ’1 โ€“ Pattern: ๐‘ = ๐‘0 ๐‘1 โ€ฆ ๐‘๐‘šโˆ’1

โ€ข Objective
โ€“ Find all occurrences of ๐‘ in ๐‘ก as substring

Knuth-Morris-Pratt: ฮ˜ ๐‘š + ๐‘›

Approximate string matching
โ€ข What if matches donโ€™t have to be exact?
โ€“ Allow up to ๐‘˜ mismatches

โ€ข โ€ฆand if the alphabet contains wildcards? Clifford et al. approach: use finite field as alphabet

Algorithm
Encode input as finite field elements Set up systems of equations for mismatch positions For ๐‘– = 0 to ๐‘› โˆ’ ๐‘š do Compute ๐‘ƒ ๐‘ง = ๐‘˜
โ€ฒ ๐‘—=1 ๐‘ง๐‘ฅ๐‘—

โˆ’ 1

Find roots of ๐‘ƒ ๐‘ง End for Encode input as integers Verify that all mismatches are found for each position

Preliminary 1: Convolutions
Fourier Transform

โ„ฑ ๐‘‹ โˆ— ๐‘Œ = โ„ฑ ๐‘‹ โ‹… โ„ฑ ๐‘Œ ๐‘‹ โˆ— ๐‘Œ = โ„ฑ โˆ’1 โ„ฑ ๐‘‹ โ‹… โ„ฑ ๐‘Œ

Polynomial multiplication ๐‘š

โˆ’1

Convolutions ๐‘ก

โŠ— ๐‘ ๐‘– โ‰ ๐‘—
=0 ๐‘๐‘—

๐‘ก๐‘–+๐‘—

Preliminary 2: 2๐‘š trick
โ€ข โ„ฑ โˆ’1 โ„ฑ ๐‘ โ‹… โ„ฑ ๐‘ก ๐‘

takes ๐‘‚ ๐‘› log ๐‘› time ๐‘ก ๐‘ก

โŠ— ๐‘

Compute each in ๐‘‚ ๐‘š log ๐‘š time

Equations for the output
For each position ๐‘– : ๐‘Ÿ

1 ๐‘Ÿ1 ๐‘ฅ1 2 ๐‘Ÿ1 ๐‘ฅ1
2๐‘˜ ๐‘Ÿ1 ๐‘ฅ1

+ + + ๐‘Ÿ

2 ๐‘Ÿ2 ๐‘ฅ2 2 ๐‘Ÿ2 ๐‘ฅ2

2๐‘˜ + ๐‘Ÿ2 ๐‘ฅ2 ๐‘š
โˆ’1

+ + + โ‹ฎ +

โ‹ฏ โ‹ฏ โ‹ฏ โ‹ฏ

+ + + ๐‘Ÿ๐‘˜

โ€ฒ ๐‘Ÿ๐‘˜ โ€ฒ ๐‘ฅ๐‘˜ โ€ฒ 2 ๐‘Ÿ๐‘˜ โ€ฒ ๐‘ฅ๐‘˜ โ€ฒ

= = =

2๐‘˜ + ๐‘Ÿ๐‘˜ โ€ฒ ๐‘ฅ๐‘˜ โ€ฒ ๐‘ 

0 ๐‘ 1 ๐‘ 2 โ‹ฎ = ๐‘ 2๐‘˜ ๐‘ ๐‘™

= ๐‘—
=0

โ€ฒ โ€ฒ ๐‘๐‘— โˆ’ ๐‘ก๐‘–+๐‘— ๐‘– + ๐‘— ๐‘™ ๐‘๐‘— ๐‘ก๐‘–+๐‘—

Equations for the output
For each position ๐‘– : ๐‘Ÿ

1 ๐‘Ÿ1 ๐‘ฅ1 2 ๐‘Ÿ1 ๐‘ฅ1
2๐‘˜ ๐‘Ÿ1 ๐‘ฅ1

+ + + ๐‘Ÿ

2 ๐‘Ÿ2 ๐‘ฅ2 2 ๐‘Ÿ2 ๐‘ฅ2

2๐‘˜ + ๐‘Ÿ2 ๐‘ฅ2

+ + + โ‹ฎ +

โ‹ฏ โ‹ฏ โ‹ฏ โ‹ฏ

+ + + ๐‘Ÿ๐‘˜

โ€ฒ ๐‘Ÿ๐‘˜ โ€ฒ ๐‘ฅ๐‘˜ โ€ฒ 2 ๐‘Ÿ๐‘˜ โ€ฒ ๐‘ฅ๐‘˜ โ€ฒ

= = =

2๐‘˜ + ๐‘Ÿ๐‘˜ โ€ฒ ๐‘ฅ๐‘˜ โ€ฒ ๐‘˜
โ€ฒ ๐‘—=1 ๐‘ 

0 ๐‘ 1 ๐‘ 2 โ‹ฎ = ๐‘ 2๐‘˜ ๐‘ง๐‘ฅ๐‘—
โˆ’ 1 ๐‘ 

0 , ๐‘ 1 , โ€ฆ , ๐‘ 2๐‘˜ has minimal polynomial ๐‘ƒ ๐‘ง = Berlekamp-Massey!

Verification step
For each position ๐‘– : ๐‘š

โˆ’1 ๐‘๐‘—

โˆ’ ๐‘—
=0

2 โ€ฒ โ€ฒ ? ๐‘ก๐‘–+๐‘— ๐‘๐‘— ๐‘ก๐‘–+๐‘— = ๐‘˜

โ€ฒ ๐‘๐‘ฅ๐‘—

โˆ’๐‘– โˆ’ ๐‘ก๐‘ฅ๐‘— ๐‘—
=1

2

Analysis
โ€ข Running time: ๐‘‚ ๐‘›๐‘˜ log 2 ๐‘š log 2 ๐‘˜ + log log ๐‘š โ€ข Optimal: ๐‘‚ ๐‘›๐‘˜