implementação de algoritmo (ainda incompleto)