Shortest Path Problem Algorithm