É um tipo de algoritmo desenvolvido para solucionar problemas difíceis em menor tempo do que um algoritmo que usa métodos clássicos. Ele abre mão de precisão, exatidão e otimização em troca da velocidade. São utilizados quando soluções aproximadas são o suficiente e as soluções exatas são computacionalmente caras, como por exemplo na solução de problemas NP-completos.