  Let G be an affine algebraic group acting on an affine variety
  X. We present an algorithm for computing generators of the invariant ring
K[X]^G in the case where G is reductive. Furthermore, we address the case where
G is connected and unipotent, so the invariant ring need not be finitely
generated. For this case, we develop an algorithm which computes K[X]^G in
terms of a so-called colon-operation. From this, generators of K[X]^G can be
obtained in finite time if it is finitely generated. Under the additional
hypothesis that K[X] is factorial, we present an algorithm that finds a
quasi-affine variety whose coordinate ring is K[X]^G. Along the way, we develop
some techniques for dealing with non-finitely generated algebras. In
particular, we introduce the finite generation locus ideal.
