An algorithm that finds the shortest path between two points given a set of constraints