Esempio n. 1
0
        private static void GermanCities()
        {
            Graph1 <string> germanCities = new Graph1 <string>();

            germanCities.AddEdge("Frankfurt", "Mannheim", false);
            germanCities.AddEdge("Frankfurt", "Wurzburg", false);
            germanCities.AddEdge("Frankfurt", "Kassel", false);
            germanCities.AddEdge("Mannheim", "Karlsruhe", false);
            germanCities.AddEdge("Karlsruhe", "Augsburg", false);
            germanCities.AddEdge("Augsburg", "Munchen", false);
            germanCities.AddEdge("Wurzburg", "Erfurt", false);
            germanCities.AddEdge("Wurzburg", "Nurnberg", false);
            germanCities.AddEdge("Nurnberg", "Stuttgart", false);
            germanCities.AddEdge("Nurnberg", "Munchen", false);
            germanCities.AddEdge("Kassel", "Munchen", false);

            Console.WriteLine("\n**** DFS Iterative *****");
            germanCities.DFS("Frankfurt");
            Console.WriteLine("--------------");
            Console.WriteLine("\n**** DFS Recursive ****\n");
            germanCities.DFS("Frankfurt", true);
            Console.WriteLine("**************");
            Console.WriteLine();
            Console.WriteLine("**** BFS *****");
            germanCities.BFS("Frankfurt");
            Console.WriteLine("**************");
            Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~");
            germanCities.FindSpanningTree();
            Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~");
            germanCities.FindPathBetweenTwoVertices("Frankfurt", "Stuttgart");

            Console.ReadLine();
        }
Esempio n. 2
0
        private static void TremauxExecution()
        {
            Graph1 <char> Tremaux = new Graph1 <char>();

            Tremaux.AddEdge('A', 'B', true);
            Tremaux.AddEdge('A', 'C', true);
            Tremaux.AddEdge('A', 'E', true);
            Tremaux.AddEdge('B', 'D', true);
            Tremaux.AddEdge('B', 'F', true);
            Tremaux.AddEdge('C', 'G', true);
            Tremaux.AddEdge('E', 'F', true);

            Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            Console.WriteLine("Printing Whole Graph:\n" + Tremaux.ToString());
            Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~");

            Console.WriteLine("\n**** DFS iterative ****\n");
            Tremaux.DFS('A');
            Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            Console.WriteLine("\n**** DFS recursive ****\n");
            Tremaux.DFS('A', true);
            Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            Console.WriteLine("\n**** BFS ****\n");
            Tremaux.BFS('A');
            Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            Console.WriteLine("\n**** Spanning Tree ****\n");
            Tremaux.FindSpanningTree();
            Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            Console.Write("Is it cyclic? ");
            var i = Tremaux.IsCyclic();

            if (i)
            {
                Console.Write("Yes.");
            }
            else
            {
                Console.Write("No.");
            }
            Console.WriteLine("\nLast Line");
            Console.ReadLine();
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            int[,] matrixAdj =
            {
                //1 2 3 4 5 6 7 8
                { 0, 1, 1, 0, 0, 0, 0, 0 }, //1
                { 1, 0, 0, 0, 0, 1, 1, 0 }, //2
                { 1, 0, 0, 1, 0, 1, 0, 1 }, //3
                { 0, 0, 1, 0, 1, 0, 0, 0 }, //4
                { 0, 0, 0, 1, 0, 1, 0, 0 }, //5
                { 0, 1, 1, 0, 1, 0, 0, 0 }, //6
                { 0, 1, 0, 0, 0, 0, 0, 1 }, //7
                { 0, 0, 1, 0, 0, 0, 1, 0 }  //8
            };

            Graph1 graph = new Graph1(matrixAdj, 8);

            Console.Write("Введите вершину X:");
            int X = int.Parse(Console.ReadLine());

            while (X == 0 || X > 8)
            {
                Console.WriteLine("Значение введено не верно.Введите верное значение от 1 до 8:");
                X = int.Parse(Console.ReadLine());
            }
            Console.Write("Введите вершину Y:");
            int Y = int.Parse(Console.ReadLine());

            while (Y == 0 || Y > 8)
            {
                Console.WriteLine("Значение введено не верно.Введите верное значение от 1 до 8:");
                Y = int.Parse(Console.ReadLine());
            }

            Console.WriteLine("В виде матрицы инцидентности:");

            Console.WriteLine("DFS:");
            Stack <int> DFS = graph.DFS(X - 1, Y - 1);

            PrintPath(DFS);
            Console.WriteLine();

            Console.WriteLine("BFS:");
            Stack <int> BFS = graph.BFS(X - 1, Y - 1);

            PrintPath(BFS);
            Console.WriteLine();


            Console.WriteLine("В виде связного списка:");

            Dictionary <int, List <int> > graph1 = new Dictionary <int, List <int> >();

            graph1[1] = new List <int> {
                2, 3
            };
            graph1[2] = new List <int> {
                1, 6, 7
            };
            graph1[3] = new List <int> {
                1, 4, 6, 8
            };
            graph1[4] = new List <int> {
                3, 5
            };
            graph1[5] = new List <int> {
                4, 6
            };
            graph1[6] = new List <int> {
                2, 3, 5
            };
            graph1[7] = new List <int> {
                2, 8
            };
            graph1[8] = new List <int> {
                3, 7
            };

            Graph2 graphList = new Graph2(graph1, 8);

            Console.WriteLine("DFS:");
            Stack <int> DFSList = graphList.DFS(X - 1, Y - 1);

            PrintPath(DFSList);
            Console.WriteLine();

            Console.WriteLine("BFS:");
            Stack <int> BFSList = graphList.BFS(X - 1, Y - 1);

            PrintPath(BFSList);
        }