Polynomial-time algorithm for an NP-Complete (or NP-hard) problem which do not guarantee the optimal solution, but would generally give one that is close to optimal