English

Finding and counting permutations via CSPs

Data Structures and Algorithms 2019-08-14 v1 Combinatorics

Abstract

Permutation patterns and pattern avoidance have been intensively studied in combinatorics and computer science, going back at least to the seminal work of Knuth on stack-sorting (1968). Perhaps the most natural algorithmic question in this area is deciding whether a given permutation of length nn contains a given pattern of length kk. In this work we give two new algorithms for this well-studied problem, one whose running time is nk/4+o(k)n^{k/4 + o(k)}, and a polynomial-space algorithm whose running time is the better of O(1.6181n)O(1.6181^n) and O(nk/2+1)O(n^{k/2 + 1}). These results improve the earlier best bounds of n0.47k+o(k)n^{0.47k + o(k)} and O(1.79n)O(1.79^n) due to Ahal and Rabinovich (2000) resp. Bruner and Lackner (2012) and are the fastest algorithms for the problem when kΩ(logn)k \in \Omega(\log{n}). We show that both our new algorithms and the previous exponential-time algorithms in the literature can be viewed through the unifying lens of constraint-satisfaction. Our algorithms can also count, within the same running time, the number of occurrences of a pattern. We show that this result is close to optimal: solving the counting problem in time f(k)no(k/logk)f(k) \cdot n^{o(k/\log{k})} would contradict the exponential-time hypothesis (ETH). For some special classes of patterns we obtain improved running times. We further prove that 33-increasing and 33-decreasing permutations can, in some sense, embed arbitrary permutations of almost linear length, which indicates that an algorithm with sub-exponential running time is unlikely, even for patterns from these restricted classes.

Keywords

Cite

@article{arxiv.1908.04673,
  title  = {Finding and counting permutations via CSPs},
  author = {Benjamin Aram Berendsohn and László Kozma and Dániel Marx},
  journal= {arXiv preprint arXiv:1908.04673},
  year   = {2019}
}

Comments

supersedes arXiv:1902.08809, with possible text overlap