algo a* fonctionnel