Ejemplo n.º 1
0
        static void TestDiGraph()
        {
            Graph graph  = new DiGraph();
            var   random = new Random();

            Stopwatch watch = new Stopwatch();

            watch.Restart();

            graph.AddEdge(0, 1);
            int toAdd;
            int from;

            for (int i = 2; i < 10000; i++)
            {
                toAdd = i;
                from  = random.Next(0, i);
                graph.AddEdge(from, toAdd);
            }

            Console.WriteLine("DiGraph: " + watch.ElapsedMilliseconds);

            Console.WriteLine("DFP in DiGraph");
            watch.Restart();

            DepthFirstSearch dfp = new DepthFirstSearch(graph);

            dfp.DFS(0);
            Console.WriteLine("DFP in: " + watch.ElapsedTicks);
            //dfp.OutputOrder();
            dfp.OutputPath(5000);

            Console.WriteLine("BFP in DiGraph");
            watch.Restart();

            BreadthFirstSearch bfp = new BreadthFirstSearch(graph);

            bfp.Execute(0);
            Console.WriteLine("BFP in: " + watch.ElapsedTicks);
            //bfp.OutputOrder();
            bfp.OutputPath(5000);

            Console.WriteLine("Cycle in DiGraph");
            watch.Restart();

            GraphCycle cycle = new GraphCycle(graph);

            cycle.CS();
            Console.WriteLine("CS in: " + watch.ElapsedTicks);
            cycle.OutputCycle();

            Console.WriteLine("Topo sort in DiGraph");
            watch.Restart();

            DepthFirstOrder order = new DepthFirstOrder(graph);

            order.DFO();
            Console.WriteLine("Topo sort in: " + watch.ElapsedTicks);
            //order.OutputReversePost();
        }
Ejemplo n.º 2
0
        public void Reverse()
        {
            var reverse = new DiGraph();

            for (int i = 0; i < VertexCount; i++)
            {
                for (int j = 0; j < AdjArray[i].Count; j++)
                {
                    reverse.AddEdge(i, AdjArray[i][j].VertexTo, AdjArray[i][j].Weight);
                }
            }

            AdjArray = reverse.AdjArray;
        }
Ejemplo n.º 3
0
        static void TestAdvanced()
        {
            Graph graph  = new DiGraph();
            var   random = new Random();

            Stopwatch watch = new Stopwatch();

            watch.Restart();

            graph.AddEdge(0, 1, random.Next(1, 4));
            int toAdd;
            int from;

            for (int i = 2; i < 1000; i++)
            {
                toAdd = i;
                from  = random.Next(0, i);
                graph.AddEdge(from, toAdd, random.Next(1, 4));
            }

            Console.WriteLine("Weight DiGraph: " + watch.ElapsedMilliseconds);

            Console.WriteLine("MST in Weight DiGraph");
            watch.Restart();

            MinimumSpanningTree mst = new MinimumSpanningTree(graph);

            mst.Execute(0);
            Console.WriteLine("MST in: " + watch.ElapsedTicks);
            mst.OutputTree();

            Console.WriteLine("SP in Weight DiGraph");
            watch.Restart();

            ShortestPath sp = new ShortestPath(graph);

            sp.Execute(0);
            Console.WriteLine("SP in: " + watch.ElapsedTicks);
            sp.OutputPath();

            Console.WriteLine("CP in Weight DiGraph");
            watch.Restart();

            CriticalPath cp = new CriticalPath(graph);

            Console.WriteLine("CP in: " + watch.ElapsedTicks);
            cp.Output();
        }