The produced path is a list of edges, not a list of vertices. This makes it
consistent with the shortest_path (Dijkstra's) function.
Instead of producing a list of all shortest paths, produce only the paths
whose source and destination match a provided predicate.
E.g., for policy generation, we typically only care about paths between
hosts, so this avoid needlessly producing paths between switches.
In the implementation, the path is constructed lazily to avoid concatenating
lists needlessly. Tests reveal that this is in fact faster on large
benchmarks (e.g., Kdl from topo-zoo).
Instead of producing a list of all shortest paths, produce only the paths whose source and destination match a provided predicate.
E.g., for policy generation, we typically only care about paths between hosts, so this avoid needlessly producing paths between switches.
In the implementation, the path is constructed lazily to avoid concatenating lists needlessly. Tests reveal that this is in fact faster on large benchmarks (e.g., Kdl from topo-zoo).