Ejemplo n.º 1
0
        public static Kruskal MakeGraph()
        {
            int     V     = 15; // Number of vertices in graph
            int     E     = 19; // Number of edges in graph
            Kruskal graph = new Kruskal(V, E);

            // add edge 0-1
            graph.edge[0].src    = 0;
            graph.edge[0].dest   = 1;
            graph.edge[0].weight = 6;

            // add edge 0-3
            graph.edge[1].src    = 0;
            graph.edge[1].dest   = 3;
            graph.edge[1].weight = 2;

            // add edge 1-2
            graph.edge[2].src    = 1;
            graph.edge[2].dest   = 2;
            graph.edge[2].weight = 4;

            // add edge 1-5
            graph.edge[3].src    = 1;
            graph.edge[3].dest   = 5;
            graph.edge[3].weight = 3;

            // add edge 2-8
            graph.edge[4].src    = 2;
            graph.edge[4].dest   = 8;
            graph.edge[4].weight = 4;

            // add edge 3-4
            graph.edge[5].src    = 3;
            graph.edge[5].dest   = 4;
            graph.edge[5].weight = 23;

            // add edge 4-11
            graph.edge[6].src    = 4;
            graph.edge[6].dest   = 11;
            graph.edge[6].weight = 6;

            // add edge 6-7
            graph.edge[7].src    = 6;
            graph.edge[7].dest   = 7;
            graph.edge[7].weight = 20;

            // add edge 7-13
            graph.edge[8].src    = 7;
            graph.edge[8].dest   = 13;
            graph.edge[8].weight = 18;

            // add edge 8-11
            graph.edge[9].src    = 8;
            graph.edge[9].dest   = 11;
            graph.edge[9].weight = 5;

            // add edge 8-6
            graph.edge[10].src    = 8;
            graph.edge[10].dest   = 6;
            graph.edge[10].weight = 2;

            // add edge 8-9
            graph.edge[11].src    = 8;
            graph.edge[11].dest   = 9;
            graph.edge[11].weight = 2;

            // add edge 8-10
            graph.edge[12].src    = 8;
            graph.edge[12].dest   = 10;
            graph.edge[12].weight = 1;

            // add edge 9-10
            graph.edge[13].src    = 9;
            graph.edge[13].dest   = 10;
            graph.edge[13].weight = 9;

            // add edge 9-13
            graph.edge[14].src    = 9;
            graph.edge[14].dest   = 13;
            graph.edge[14].weight = 3;

            // add edge 10-11
            graph.edge[15].src    = 10;
            graph.edge[15].dest   = 11;
            graph.edge[15].weight = 4;

            // add edge 10-12
            graph.edge[16].src    = 10;
            graph.edge[16].dest   = 12;
            graph.edge[16].weight = 1;

            // add edge 11-12
            graph.edge[17].src    = 11;
            graph.edge[17].dest   = 12;
            graph.edge[17].weight = 6;

            // add edge 13-14
            graph.edge[18].src    = 13;
            graph.edge[18].dest   = 14;
            graph.edge[18].weight = 7;

            return(graph);
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Graph g = makeGraph();

            g.BFS();
            Console.WriteLine();
            g.DFSRec();
            Console.WriteLine();
            g.DFSStack();
            Console.WriteLine();

            Graph g2 = makeWeightedGraph();
            Prim  p  = new Prim();

            p.primMST(g2);
            Console.WriteLine();

            Kruskal.MakeGraph().KruskalMST();
            Console.WriteLine();

            Djikstra d = new Djikstra();

            d.dijkstra(g2, 0);
            Console.WriteLine();

            GraphCycle gc = new GraphCycle();

            if (gc.isCyclicDirected(g))
            {
                Console.WriteLine("The graph is cyclic");
            }
            else
            {
                Console.WriteLine("The graph is not cyclic");
            }
            Console.WriteLine();

            TopSort ts = new TopSort();

            ts.TopologicalSort(g);
            ts.allTopologicalSorts(g);
            Console.WriteLine();

            FloydWarshal fw = new FloydWarshal();

            fw.floydWarshall(g);
            Console.WriteLine();

            Connectivity c = new Connectivity();

            for (int i = 0; i < g.getSize(); i++)
            {
                if (c.isReachable(g, 5, i))
                {
                    Console.WriteLine("The path from 1 to " + i + " is reachable");
                }
                else
                {
                    Console.WriteLine("The path from 1 to " + i + " is not reachable");
                }
            }
            c.ArticulationPoint(g2);
            Console.WriteLine();

            Euler e = new Euler();

            if (e.isEulerianCycleUndirected(g))
            {
                Console.WriteLine("It is Eulerian cycle");
            }
            else
            {
                Console.WriteLine("It is not eyulerian cycle");
            }
            Console.WriteLine();

            CloneGraph cg     = new CloneGraph();
            var        node   = cg.MakeExampleGraph();
            var        result = cg.Clone(node);

            cg.Print(node);
            Console.WriteLine();
            cg.Print(result);
            Console.ReadLine();
        }