Efficiently Testing Simon's Congruence

Abstract

Simon's congruence k is defined as follows: two words are k-equivalent if they have the same set of subsequences of length at most k. We propose an algorithm which computes, given two words s and t, the largest k for which sk t. Our algorithm runs in linear time O(|s|+|t|) when the input words are over the integer alphabet \1,…,|s|+|t|\ (or other alphabets which can be sorted in linear time). This approach leads to an optimal algorithm in the case of general alphabets as well. Our results are based on a novel combinatorial approach and a series of efficient data structures.

0

Discussion (0)

Sign in to join the discussion.

Loading comments…