A computational method that uses trial and error methods to approximate a solution for computationally difficult problems.