This predicate complements the all_short_paths_as_edges/6 predicate. The intended usage is that all_short_paths_as_edges/6 is used to precompute shortest path information from a single source node to all possible sink nodes, and possible_path/7 uses this information to enumerate actual paths to a specific sink node. If paths from one source to several sinks are needed, it is more efficient to use one call to all_short_paths_as_edges/6 and several calls to possible_path/7, than to use several calls to single_pair_all_short_paths/7.
Note that the Lengths and Predecessors arrays must have been computed with the same settings for DistanceArg, SourceNode and Tolerance that are given to possible_path/7, otherwise errors or missing paths will occur.
single_pair_shortest_path(Graph, Source, Sink, Path) :- all_short_paths_as_edges(Graph, 0, Source, 0, Lengths, Preds), possible_path(0, Source, Sink, 0, Lengths, Preds, Path).