Research efforts of the past fifty years have led to a development of linear
integer programming as a mature discipline of mathematical optimization. Such a level of
maturity has not been reached when one considers nonlinear systems subject to integrality
requirements for the variables. This chapter is dedicated to this topic. The primary goal
is a study of a simple version of general nonlinear integer problems, where all constraints
are still linear. Our focus is on the computational complexity of the problem, which varies
significantly with the type of nonlinear objective function in combination with the
underlying combinatorial structure. Numerous boundary cases of complexity emerge, which
sometimes surprisingly lead even to polynomial time algorithms. We also cover recent
successful approaches for more general classes of problems. Though no positive theoretical
efficiency results are available, nor are they likely to ever be available, these seem to
be the currently most successful and interesting approaches for solving practical problems.
It is our belief that the study of algorithms motivated by theoretical considerations and
those motivated by our desire to solve practical instances should and do inform one
another. So it is with this viewpoint that we present the subject, and it is in this
direction that we hope to spark further research.