Otimização geral

Uso de smart pointers para resolução de problemas de vazamento de
memória, correções na heurística, documentação e testes. Problemas com a
heurística reativa