コード例 #1
0
ファイル: nGraphTests.cs プロジェクト: sharkvan/ngraph
        private static void AddFilterToEdge <T>(Graph <T> G) where T : IComparable <T>
        {
            DFS <T> dfs = new DFS <T>(G);

            dfs.EdgeTraversed += new EventHandler <EdgeEventArgs <T> >(GraphEventFunctions.AddFilterToEdge <T>);
            dfs.Compute();
        }
コード例 #2
0
ファイル: nGraphTests.cs プロジェクト: sharkvan/ngraph
        private static void DisplayEdgeProperties <T>(Graph <T> graph) where T : IComparable <T>
        {
            DFS <T> dfs = new DFS <T>(graph);

            dfs.EdgeTraversed += new EventHandler <EdgeEventArgs <T> >(GraphEventFunctions.DisplayEdgeProperties);
            dfs.Compute();
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: sharkvan/ngraph
        private void TestDfs(Graph <char> G)
        {
            DFS <char> dfs = new DFS <char>(G);

            dfs.NodeEntered    += new EventHandler <NodeEventArgs <char> >(GraphNodeFuncs.DisplayEnteredNode <char>);
            dfs.NodeDiscovered += new EventHandler <NodeEventArgs <char> >(GraphNodeFuncs.DisplayDiscoveredNode <char>);
            dfs.NodeExited     += new EventHandler <NodeEventArgs <char> >(GraphNodeFuncs.DisplayExitedNode <char>);
            dfs.Compute();
            IList <DFSNodeData <char> > results = dfs.Results;

            foreach (DFSNodeData <char> datum in results)
            {
                Console.WriteLine(datum);
            }
        }
コード例 #4
0
ファイル: nGraphTests.cs プロジェクト: sharkvan/ngraph
        private static void TestDfs <T>(Graph <T> G) where T : IComparable <T>
        {
            TopoSort <T> topoSort = new TopoSort <T>();
            DFS <T>      dfs      = new DFS <T>(G);

            //dfs.NodeEntered += new EventHandler<NodeEventArgs<T>>(GraphEventFunctions.DisplayEnteredNode<T>);
            //dfs.NodeDiscovered += new EventHandler<NodeEventArgs<T>>(GraphEventFunctions.DisplayDiscoveredNode<T>);
            dfs.NodeExited     += new EventHandler <NodeEventArgs <T> >(GraphEventFunctions.DisplayExitedNode <T>);
            dfs.NodeExited     += new EventHandler <NodeEventArgs <T> >(topoSort.AddNode);
            dfs.EdgeDiscovered += new EventHandler <EdgeEventArgs <T> >(GraphEventFunctions.DisplayDiscoveredEdge <T>);
            dfs.EdgeTraversed  += new EventHandler <EdgeEventArgs <T> >(GraphEventFunctions.DisplayTraversedEdge <T>);
            dfs.Compute();
            dfs.Graph.ForEachNode(PrintDFSNodeData <T>);

            Console.WriteLine("TopoSort...");
            foreach (INode <T> node in topoSort.TopoList)
            {
                Console.WriteLine("Node {0}", node);
            }
        }
コード例 #5
0
ファイル: DFSTests.cs プロジェクト: sharkvan/ngraph
        public void StartTraversalAtSpecificNode()
        {
            List <char>          nodeFindOrder = new List <char>();
            List <IEdge <char> > edgeFindOrder = new List <IEdge <char> >();
            DFS <char>           search        = new DFS <char>(graph);

            search.SetStartNode('v');

            search.NodeDiscovered += (sender, e) => nodeFindOrder.Add(e.Node);
            search.EdgeDiscovered += (sender, e) => edgeFindOrder.Add(e.Edge);

            search.Compute();

            Assert.AreEqual('v', nodeFindOrder[0]);
            Assert.AreEqual('r', nodeFindOrder[1]);
            Assert.AreEqual('s', nodeFindOrder[2]);
            Assert.AreEqual('w', nodeFindOrder[3]);
            Assert.AreEqual('t', nodeFindOrder[4]);
            Assert.AreEqual('x', nodeFindOrder[5]);
            Assert.AreEqual('y', nodeFindOrder[6]);
            Assert.AreEqual('u', nodeFindOrder[7]);

            Assert.AreEqual("(v,r)", edgeFindOrder[0].ToString());
            Assert.AreEqual("(r,s)", edgeFindOrder[1].ToString());
            Assert.AreEqual("(s,r)", edgeFindOrder[2].ToString());
            Assert.AreEqual("(s,w)", edgeFindOrder[3].ToString());
            Assert.AreEqual("(w,s)", edgeFindOrder[4].ToString());
            Assert.AreEqual("(w,t)", edgeFindOrder[5].ToString());
            Assert.AreEqual("(t,w)", edgeFindOrder[6].ToString());
            Assert.AreEqual("(t,x)", edgeFindOrder[7].ToString());
            Assert.AreEqual("(x,w)", edgeFindOrder[8].ToString());
            Assert.AreEqual("(x,t)", edgeFindOrder[9].ToString());
            Assert.AreEqual("(x,y)", edgeFindOrder[10].ToString());
            Assert.AreEqual("(y,x)", edgeFindOrder[11].ToString());
            Assert.AreEqual("(y,u)", edgeFindOrder[12].ToString());
            Assert.AreEqual("(u,t)", edgeFindOrder[13].ToString());
            Assert.AreEqual("(u,y)", edgeFindOrder[14].ToString());
            Assert.AreEqual("(t,u)", edgeFindOrder[15].ToString());
            Assert.AreEqual("(w,x)", edgeFindOrder[16].ToString());
            Assert.AreEqual("(r,v)", edgeFindOrder[17].ToString());
        }