Skip to main content
7 events
when toggle format what by license comment
Oct 9, 2017 at 11:32 comment added Emil Jeřábek The original reference for polynomial-time algorithm for SNF (and HNF) is doi.org/10.1137/0208040 .
Oct 9, 2017 at 9:22 comment added Derek Holt To get a polynomial time algorithm, you can calculate the Hadamard bound $d$ on the determinants of square submatrices of $B$, and then do your computations modulo $d$. For your application, you do not need the associated basis change matrices, but the Kannan-Bachem algorithm is a polynomial tiem method for doing this.
Oct 9, 2017 at 8:21 comment added Derek Holt There is a lot of literature on this problem. There are certainly polynomial time versions of SNF but I believe that the LLL based methods are the fastest in practice.
Oct 9, 2017 at 1:25 comment added Noam D. Elkies Curiously LLL (or some other algorithm for lattice basis reduction) is often the most efficient way to deal with this issue. Also, SNF is implemented in several computer-algebra systems; e.g. in gp it's matsnf.
Oct 9, 2017 at 0:51 comment added Mikhail Tikhomirov Thanks Richard! At a glance it seems that the intermediate coefficients can be exponentially long, which makes it hard to use this method for large matrices. Can we "cheat" computing $B$ explicitly if we only want to check that diagonal elements of $B$ are $\pm 1$?
Oct 9, 2017 at 0:49 history edited Richard Stanley CC BY-SA 3.0
slight inaccuracy corrected
Oct 9, 2017 at 0:20 history answered Richard Stanley CC BY-SA 3.0