add A* algorithm
add A* algorithm (finally... )