public void OutputAllMergedActions( EdgePredecessorRecorderVisitor erec, GraphvizAlgorithm gw, string path) { int i=1000; Console.WriteLine("All paths (merged):"); foreach(EdgeCollection ec in erec.AllMergedPaths()) { CurrentEdgePath = ec; gw.Write(String.Format("path-merged{1}",path,i)); foreach(IEdge edge in ec) { Console.WriteLine("{0}->{1}, {2}", ((NamedVertex)edge.Source).Name, ((NamedVertex)edge.Target).Name, ((NamedEdge)edge).Name ); } ++i; Console.WriteLine(); } CurrentEdgePath=null; }
/// <summary> /// Output end of path edges /// </summary> /// <param name="erec"></param> public void OutputEndPathEdges(EdgePredecessorRecorderVisitor erec) { // these are the edges that are terminal. Console.WriteLine("End path edges:"); foreach(IEdge se in erec.EndPathEdges) { Console.WriteLine("\t{0}->{1}, {2}", ((NamedVertex)se.Source).Name, ((NamedVertex)se.Target).Name, ((NamedEdge)se).Name ); } }
/// <summary> /// Add a predecessor recorder to the edge dfs algorithm. /// </summary> /// <param name="edfs"></param> /// <returns>predecessor recorder</returns> public EdgePredecessorRecorderVisitor AddPredecessorRecorder(EdgeDepthFirstSearchAlgorithm edfs) { // The visitor that will record actions path for us EdgePredecessorRecorderVisitor erec = new EdgePredecessorRecorderVisitor(); edfs.DiscoverTreeEdge += new EdgeEdgeEventHandler(erec.DiscoverTreeEdge); edfs.FinishEdge += new EdgeEventHandler(erec.FinishEdge); return erec; }