Heuristics, which may be thought of as "quick and dirty" methods, are problem-solving approaches that are created based on practical experience about the nature of the problem.

Heuristics are usually not exact algorithms that always produce a correct solution to the problem at hand; however, a heuristic often still produces reasonable approximate solutions. Heuristic methods arise when tackling very difficult computational problems, such as MSA or protein folding, where some a priori assumptions are made about the given data.