A side-sharing tandem is a rectangular array that is composed of two adjacent non-overlapping occurrences of the same rectangular block. Furthering our understanding of side-sharing tandems can facilitate the development of more efficient 2d pattern matching techniques and may lead to improvements in multi-dimensional compression schemes. Existing algorithms for finding side-sharing tandems are far from optimal on 2d arrays that contain relatively few side-sharing tandems. In this paper, we introduce the idea of a run of side-sharing tandems, as a maximally extended chain of 2d tandems. We demonstrate tight upper bounds on the number of runs of side-sharing tandems that can occur in a rectangular array. We develop an algorithm that locates all τ runs of side-sharing tandems in an n×n input array in O((n2+τ)logn/loglogn) time. We also introduce several versions of approximate side-sharing tandems with k mismatches along with efficient algorithms for locating them in a rectangular array.
Read full abstract