private IEnumerable <IPath <V, E> > EnumeratePaths(ShortestPathEnumerator enumerator) { while (enumerator.MoveNext()) { yield return(enumerator.Current); } }
/// <summary> /// Searches the given graph for paths between the given vertices. /// </summary> /// <param name="graph"></param> /// <param name="src"></param> /// <param name="dst"></param> /// <param name="weigher"></param> /// <returns></returns> public IEnumerable <IPath <V, E> > LazyPathSearch(IGraph <V, E> graph, V src, V dst, IEdgeWeigher <V, E> weigher) { var enumerator = new ShortestPathEnumerator(graph, src, dst, weigher); var paths = new SortedSet <IPath <V, E> >(EnumeratePaths(enumerator), new PathComparer()); foreach (IPath <V, E> path in paths) { yield return(path); } }