private static void GraphPathSearchTest(IGraphPathSearch search, int start) { Console.WriteLine(search.Name); // 打印图中所有顶点到start的路径 for (int i = 0; i < vertexCount; i++) { Console.Write(start + " to " + i + " : "); if (search.HasPathTo(i)) { foreach (var v in search.PathTo(i)) { if (start == v) { Console.Write(v); } else { Console.Write(" -> " + v); } } } else { Console.Write("No path"); } Console.WriteLine(); } }
protected void ExecuteSinglePathSearch(IGraphPathSearch <TestVertex, TestEdge> search, IGraph <TestVertex, TestEdge> graph, TestVertex src, TestVertex dst, IEdgeWeigher <TestVertex, TestEdge> weigher, int pathCount, IWeight pathCost) { IResult <TestVertex, TestEdge> result = search.Search(graph, src, dst, weigher, 1); ISet <IPath <TestVertex, TestEdge> > paths = result.Paths; PrintPaths(paths); Assert.Equal(Math.Min(pathCount, 1), paths.Count); if (pathCount > 0) { IPath <TestVertex, TestEdge> path = paths.First(); Assert.Equal(pathCost, path.Cost); } }
protected void ExecuteDefaultTest(int pathCount, int pathLength, IWeight pathCost) { Graph = new TestAdjacencyListsGraph(Vertices, Edges); IGraphPathSearch <TestVertex, TestEdge> search = GraphSearch; ISet <IPath <TestVertex, TestEdge> > paths = search.Search(Graph, A, H, Weigher).Paths; Assert.Equal(1, paths.Count); IPath <TestVertex, TestEdge> p = paths.First(); Assert.Equal(A, p.Src); Assert.Equal(H, p.Dst); Assert.Equal(pathLength, p.Edges.Count); Assert.Equal(pathCost, p.Cost); paths = search.Search(Graph, A, null, Weigher).Paths; PrintPaths(paths); Assert.Equal(pathCount, paths.Count); }