The extension from finding one shortest path to K shortest paths appears to be natural because the problem may be associated with some constraints that are difficult to define or to optimize simultaneously. Under the circumstances, a common way is to compute several paths, rank the paths according to some criteria, and then determine the paths that meet the criteria. Depending on the types of constraints, the paths are generally classified into two classes: (1) simple paths (paths without repeated nodes and arcs), and (2) looping paths (paths with repeated nodes and arcs). These two classes of paths have long been studied together because they are not only similar (from one path to K paths) in general but also complementary (simple versus looping) in particular.