Bimonotone enumeration
Abstract
Solutions of a diophantine equation , with in some finite range, can be efficiently enumerated by sorting the values of and in ascending order and searching for collisions. This article considers functions that are bimonotone in the sense that whenever and . A two-variable polynomial with non-negative coefficients is a typical example. The problem is to efficiently enumerate all pairs such that the values appear in increasing order. We present an algorithm that is memory-efficient and highly parallelizable. In order to enumerate the first values of , the algorithm only builds up a priority queue of length at most . In terms of bit-complexity this ensures that the algorithm takes time and requires memory , which considerably improves on the memory bound provided by a naive approach, and extends the semimonotone enumeration algorithm previously considered by R.L. Ekl and D.J. Bernstein.
Cite
@article{arxiv.0803.3273,
title = {Bimonotone enumeration},
author = {Michael Eisermann},
journal= {arXiv preprint arXiv:0803.3273},
year = {2015}
}
Comments
22 pages, 7 figures. The algorithms presented here have been implemented as class templates in C++ and are available on the author's homepage