Example #1
0
        static void Main(string[] args)
        {
            var lines = File.ReadAllLines(@"Resources\tinyG.txt");
            Graph g = new Graph(Convert.ToInt32(lines[0]));
            foreach (var str in lines.Skip(2))
            {
                int fromEdge = Convert.ToInt32(str.Split(' ')[0]);
                int toEdge = Convert.ToInt32(str.Split(' ')[1]);
                g.AddEdge(fromEdge, toEdge);
            }

            //DFS(g);
            //BFS(g);
            SymbolGraphTest();

            Console.WriteLine();
        }
Example #2
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Graph g = new Graph(5);

            g.AddVertex(1.ToString());
            g.AddVertex(2.ToString());
            g.AddVertex(3.ToString());
            g.AddVertex(4.ToString());
            g.AddVertex(5.ToString());
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("Added Vertex : " + g.GetVertexAtIndex(i).label);
            }
            Vertex v1 = g.GetVertexAtIndex(0);
            Vertex v2 = g.GetVertexAtIndex(1);
            Vertex v4 = g.GetVertexAtIndex(4);

            Console.WriteLine("Adding Edge Between ");
            Console.Write(" " + v1.label + " and " + v2.label);
            g.AddEdge(v1, v2);
            Console.Write(", " + v1.label + " and " + v4.label);
            g.AddEdge(v1, v4);
            Console.WriteLine();
            Console.WriteLine("Vertex Edges Connected to");
            g.ShowEdgesOfVertex(v1);


            Graph gr = new Graph(10);

            gr.AddVertex("A");
            gr.AddVertex("B");
            gr.AddVertex("C");
            gr.AddVertex("D");
            gr.AddVertex("E");
            gr.AddVertex("F");
            gr.AddVertex("G");
            gr.AddVertex("H");
            gr.AddVertex("I");
            gr.AddVertex("J");

            Vertex m1  = gr.GetVertexAtIndex(0);
            Vertex m2  = gr.GetVertexAtIndex(1);
            Vertex m3  = gr.GetVertexAtIndex(2);
            Vertex m4  = gr.GetVertexAtIndex(3);
            Vertex m5  = gr.GetVertexAtIndex(4);
            Vertex m6  = gr.GetVertexAtIndex(5);
            Vertex m7  = gr.GetVertexAtIndex(6);
            Vertex m8  = gr.GetVertexAtIndex(7);
            Vertex m9  = gr.GetVertexAtIndex(8);
            Vertex m10 = gr.GetVertexAtIndex(9);

            gr.AddEdge(m1, m2);
            gr.AddEdge(m2, m3);
            gr.AddEdge(m3, m4);
            gr.AddEdge(m1, m5);
            gr.AddEdge(m5, m6);
            gr.AddEdge(m6, m7);
            gr.AddEdge(m1, m8);
            gr.AddEdge(m8, m9);
            gr.AddEdge(m9, m10);
            gr.DepthFirstSearch();
            gr.BredthFirstSearch();

            Console.ReadLine();
        }
Example #3
0
        static void Main(string[] args)
        {
            Graph graph = new Graph();
            bool  flag  = true;

            Menu();
            while (flag)
            {
                Console.WriteLine("Ваш выбор: ");
                int n = int.Parse(Console.ReadLine());
                switch (n)
                {
                case 1:
                    Console.WriteLine("Введите название вершины: ");
                    string name = Console.ReadLine();
                    Console.WriteLine("Вершина добавлена с номером {0}", graph.AddVertex(name));
                    break;

                case 2:
                    Console.WriteLine("Введите первую вершину: ");
                    string v1 = Console.ReadLine();
                    Console.WriteLine("Введите вторую вершину: ");
                    string v2 = Console.ReadLine();
                    Console.WriteLine("Введите расстояние: ");
                    int d = int.Parse(Console.ReadLine());
                    graph.AddEdge(v1, v2, d);
                    break;

                case 3:
                    Console.WriteLine("Введите название вершины: ");
                    string vert = Console.ReadLine();
                    graph.DeleteVertex(vert);
                    break;

                case 4:
                    Console.WriteLine("Введите первую вершину: ");
                    string v1_ = Console.ReadLine();
                    Console.WriteLine("Введите вторую вершину: ");
                    string v2_ = Console.ReadLine();
                    graph.DeleteEdge(v1_, v2_);
                    break;

                case 5:
                    graph.WriteMatrix("input.txt");
                    break;

                case 6:
                    graph.Print();
                    break;

                case 7:
                    Console.WriteLine("Введите вершину: ");
                    string vertex = Console.ReadLine();
                    foreach (var v in graph.FindАdjacentVertexs(vertex))
                    {
                        Console.Write(v.Name + " ");
                    }
                    Console.WriteLine();
                    break;

                case 8:
                    Console.WriteLine("Введите вершину: ");
                    vertex = Console.ReadLine();
                    foreach (var v in graph.FindNonАdjacentVertexs(vertex))
                    {
                        Console.Write(v.Name + " ");
                    }
                    Console.WriteLine();
                    break;

                case 9:
                    Graph graph1 = graph.GetdisorientedGraph();
                    graph1.Print();
                    break;

                case 10:
                    Console.WriteLine("Введите вершину:");
                    var ve = Console.ReadLine();
                    foreach (var ver in graph.DFS(ve))
                    {
                        Console.WriteLine(ver.Name);
                    }
                    break;

                case 11:
                    int cnt = 0;
                    if (graph.IsDisorientedGraph())
                    {
                        foreach (var comp in graph.FindRelatedComponents())
                        {
                            cnt++;
                            Console.Write("{0} компонента связанности: ", cnt);
                            foreach (var _vertex in comp)
                            {
                                Console.Write(_vertex.Name + " ");
                            }
                            Console.WriteLine();
                        }
                    }
                    else
                    {
                        foreach (var comp in graph.FindStrongRelatedComponents())
                        {
                            cnt++;
                            Console.Write("{0} компонента сильной связанности: ", cnt);
                            foreach (var _vertex in comp)
                            {
                                Console.Write(_vertex + " ");
                            }
                            Console.WriteLine();
                        }
                    }
                    break;

                case 12:
                    cnt = 0;
                    foreach (var comp in graph.FindStrongRelatedComponents())
                    {
                        cnt++;
                        Console.Write("{0} компонента сильной связанности: ", cnt);
                        foreach (var _vertex in comp)
                        {
                            Console.Write(_vertex + " ");
                        }
                        Console.WriteLine();
                    }
                    break;

                case 13:
                    Graph copy = new Graph(graph);
                    graph = graph.GetdisorientedGraph();
                    Graph minGraph = graph.AlgBoruvka();
                    graph = copy;
                    minGraph.Print();
                    break;

                case 14:
                    Console.WriteLine(graph.FindVertexWithMinDistancees().Name);
                    break;

                case 15:
                    Console.Write("Центр графа: ");
                    foreach (var verte in graph.FindCenter())
                    {
                        Console.Write(verte.Name + " ");
                    }
                    Console.WriteLine();
                    break;

                case 16:
                    Console.WriteLine("Минимальные расстояния: ");
                    foreach (var edge in graph.GetMinDistancesForEachPair())
                    {
                        Console.WriteLine(edge.V1.Name + " " + edge.V2.Name + " " + edge.Distance);
                    }
                    break;

                case 17:
                    Console.WriteLine("Введите первую вершину: ");
                    v1 = Console.ReadLine();
                    Console.WriteLine("Введите вторую вершину: ");
                    v2 = Console.ReadLine();
                    Console.Write("Максимальный поток: {0} ", graph.maxFlow(v1, v2));
                    Console.WriteLine();
                    break;

                case 18:
                    flag = false;
                    break;
                }
            }
        }
Example #4
0
        static Graph InitIndirectedGraph2()
        {
            Graph g = new Graph(7);

            for (int i = 0; i < g.MaxVertexNumber; i++)
            {
                g.AddVertex(new Vertex(((char)('A' + i)).ToString()));
            }

            g.AddEdge(0, 1, 2);
            g.AddEdge(0, 3, 1);
            g.AddEdge(1, 3, 3);
            g.AddEdge(1, 4, 10);
            g.AddEdge(2, 5, 5);
            g.AddEdge(2, 0, 4);
            g.AddEdge(3, 2, 2);
            g.AddEdge(3, 5, 8);
            g.AddEdge(3, 4, 2);
            g.AddEdge(3, 6, 4);
            g.AddEdge(4, 6, 6);
            g.AddEdge(6, 5, 1);


            return(g);
        }
Example #5
0
        static Graph InitIndirectedGraph()
        {
            Graph g = new Graph(20);

            for (int i = 0; i < g.MaxVertexNumber; i++)
            {
                g.AddVertex(new Vertex(((char)('A' + i)).ToString()));
            }

            g.AddEdge(0, 1);
            g.AddEdge(1, 2);
            g.AddEdge(2, 3);
            g.AddEdge(0, 4);
            g.AddEdge(4, 5);
            g.AddEdge(5, 6);
            g.AddEdge(0, 7);
            g.AddEdge(7, 8);
            g.AddEdge(8, 9);
            g.AddEdge(0, 10);
            g.AddEdge(10, 11);
            g.AddEdge(11, 12);


            return(g);
        }
		public static void Main (string[] args)
		{
			Console.WriteLine ("Hello World!");
			Graph g = new Graph (5);
			g.AddVertex (1.ToString());
			g.AddVertex (2.ToString());
			g.AddVertex (3.ToString());
			g.AddVertex (4.ToString());
			g.AddVertex (5.ToString());
			for (int i = 0; i < 5; i++) {
				Console.WriteLine ("Added Vertex : " + g.GetVertexAtIndex (i).label);
			}
			Vertex v1 = g.GetVertexAtIndex (0);
			Vertex v2 = g.GetVertexAtIndex (1);
			Vertex v4 = g.GetVertexAtIndex (4);
			Console.WriteLine ("Adding Edge Between ");
			Console.Write (" " + v1.label + " and " + v2.label);
			g.AddEdge (v1, v2);
			Console.Write (", " + v1.label + " and " + v4.label);
			g.AddEdge (v1, v4);
			Console.WriteLine ();
			Console.WriteLine ("Vertex Edges Connected to");
			g.ShowEdgesOfVertex (v1);


			Graph gr = new Graph (10);

			gr.AddVertex ("A");
			gr.AddVertex ("B");
			gr.AddVertex ("C");
			gr.AddVertex ("D");
			gr.AddVertex ("E");
			gr.AddVertex ("F");
			gr.AddVertex ("G");
			gr.AddVertex ("H");
			gr.AddVertex ("I");
			gr.AddVertex ("J");

			Vertex m1 = gr.GetVertexAtIndex (0);
			Vertex m2 = gr.GetVertexAtIndex (1);
			Vertex m3 = gr.GetVertexAtIndex (2);
			Vertex m4 = gr.GetVertexAtIndex (3);
			Vertex m5 = gr.GetVertexAtIndex (4);
			Vertex m6 = gr.GetVertexAtIndex (5);
			Vertex m7 = gr.GetVertexAtIndex (6);
			Vertex m8 = gr.GetVertexAtIndex (7);
			Vertex m9 = gr.GetVertexAtIndex (8);
			Vertex m10 = gr.GetVertexAtIndex (9);

			gr.AddEdge (m1, m2);
			gr.AddEdge (m2, m3);
			gr.AddEdge (m3, m4);
			gr.AddEdge (m1, m5);
			gr.AddEdge (m5, m6);
			gr.AddEdge (m6, m7);
			gr.AddEdge (m1, m8);
			gr.AddEdge (m8, m9);
			gr.AddEdge (m9, m10);
			gr.DepthFirstSearch ();
			gr.BredthFirstSearch ();

			Console.ReadLine ();
		}