Solving Shortest Path Problems