volume 99 pages 189-230

The complexity of sparse Hensel lifting and sparse polynomial factorization

Publication typeJournal Article
Publication date2020-07-01
scimago Q2
wos Q2
SJR0.533
CiteScore2.2
Impact factor1.1
ISSN07477171, 1095855X
Computational Mathematics
Algebra and Number Theory
Abstract
The standard approach to factor a multivariate polynomial in Z [ x 1 , x 2 , … , x n ] is to factor a univariate image in Z [ x 1 ] then recover the multivariate factors from their univariate images using a process known as multivariate Hensel lifting. Wang's multivariate Hensel lifting recovers the variables one at a time. It is currently implemented in many computer algebra systems, including Maple, Magma and Singular. When the factors are sparse, Wang's approach can be exponential in the number of variables n . To address this, sparse Hensel lifting was introduced by Zippel and then improved by Kaltofen. Recently, Monagan and Tuncer introduced a new approach which uses sparse polynomial interpolation to solve the multivariate polynomial diophantine equations that arise inside Hensel lifting in random polynomial time. This approach is shown to be practical and faster than Zippel's and Kaltofen's algorithms and faster than Wang's algorithm for non-zero evaluation points. In this work we first present a complete description of the sparse interpolation used by Monagan and Tuncer and show that it runs in random polynomial time. Next we study what happens to the sparsity of multivariate polynomials when the variables are successively evaluated at numbers. We determine the expected number of remaining terms. We use this result to revisit and correct the complexity analysis of Zippel's original sparse interpolation. Next we present an average case complexity analysis of our approach. We have implemented our algorithm in Maple with some sub-algorithms implemented in C. We present some experimental data comparing our approach with Wang's method for both sparse and dense factors. The data shows that our method is always competitive with Wang's method and faster when Wang's method is exponential in n .
Found 
Found 

Top-30

Journals

1
Mathematics in Computer Science
1 publication, 14.29%
IEEE Transactions on Emerging Topics in Computing
1 publication, 14.29%
Concurrency Computation Practice and Experience
1 publication, 14.29%
Lecture Notes in Computer Science
1 publication, 14.29%
Communications in Computer and Information Science
1 publication, 14.29%
Journal of Complexity
1 publication, 14.29%
1

Publishers

1
2
3
Springer Nature
3 publications, 42.86%
Institute of Electrical and Electronics Engineers (IEEE)
1 publication, 14.29%
Wiley
1 publication, 14.29%
Association for Computing Machinery (ACM)
1 publication, 14.29%
Elsevier
1 publication, 14.29%
1
2
3
  • We do not take into account publications without a DOI.
  • Statistics recalculated weekly.

Are you a researcher?

Create a profile to get free access to personal recommendations for colleagues and new articles.
Metrics
7
Share
Cite this
GOST |
Cite this
GOST Copy
Monagan M., Tuncer B. The complexity of sparse Hensel lifting and sparse polynomial factorization // Journal of Symbolic Computation. 2020. Vol. 99. pp. 189-230.
GOST all authors (up to 50) Copy
Monagan M., Tuncer B. The complexity of sparse Hensel lifting and sparse polynomial factorization // Journal of Symbolic Computation. 2020. Vol. 99. pp. 189-230.
RIS |
Cite this
RIS Copy
TY - JOUR
DO - 10.1016/j.jsc.2019.05.001
UR - https://doi.org/10.1016/j.jsc.2019.05.001
TI - The complexity of sparse Hensel lifting and sparse polynomial factorization
T2 - Journal of Symbolic Computation
AU - Monagan, Michael
AU - Tuncer, Baris
PY - 2020
DA - 2020/07/01
PB - Elsevier
SP - 189-230
VL - 99
SN - 0747-7171
SN - 1095-855X
ER -
BibTex
Cite this
BibTex (up to 50 authors) Copy
@article{2020_Monagan,
author = {Michael Monagan and Baris Tuncer},
title = {The complexity of sparse Hensel lifting and sparse polynomial factorization},
journal = {Journal of Symbolic Computation},
year = {2020},
volume = {99},
publisher = {Elsevier},
month = {jul},
url = {https://doi.org/10.1016/j.jsc.2019.05.001},
pages = {189--230},
doi = {10.1016/j.jsc.2019.05.001}
}