Let
be a prime. Given
a polynomial in
of
degree
over the finite
field
, one can view
it as a map from
to
,
and examine the image of this map, also known as the
value set of the polynomial. In
this paper, we present the first nontrivial algorithm and the first complexity
result on explicitly computing the cardinality of this value set. We show an
elementary connection between this cardinality and the number of points
on a family of varieties in affine space. We then apply Lauder and Wan’s
-adic
point-counting algorithm to count these points, resulting in a nontrivial algorithm for
calculating the cardinality of the value set. The running time of our algorithm is
.
In particular, this is a polynomial-time algorithm for fixed
if
is reasonably
small. We also show that the problem is #P-hard when the polynomial is given in a sparse
representation,
,
and
is
allowed to vary, or when the polynomial is given as a straight-line program,
and
is
allowed to vary. Additionally, we prove that it is NP-hard to decide whether a
polynomial represented by a straight-line program has a root in a prime-order finite
field, thus resolving an open problem proposed by Kaltofen and Koiran.
Keywords
finite field, polynomial value set cardinality, point
counting, polynomial time, randomized polynomial time,
RP-reduction, NP-hard, \#P-hard, straight-line program,
sparse polynomial, subset sum problem