예제 #1
0
        public static void SprawdzCzyGrafTypuKolo(Graph graph)
        {
            bool grafTypuKolo = false;
            // pobieram wszystkie wierzcholki i sprawdzam cz jest wierzcholek ktory
            // jest polaczony z wszystkimi innymi wierzcholkami
            List <int> wierzcholkiPobranegoGrafu = GetVerticies(graph);

            int         sprawdzanyWierzcholek  = 0;
            Stack <int> sasiadujaceWierzcholki = new Stack <int>();

            foreach (int wierzcholek in wierzcholkiPobranegoGrafu)
            {
                foreach (Edge edge in graph.Edges)
                {
                    if (wierzcholek == edge.From)
                    {
                        sasiadujaceWierzcholki.Push(edge.To);
                    }

                    if (wierzcholek == edge.To)
                    {
                        sasiadujaceWierzcholki.Push(edge.From);
                    }
                }

                if (sasiadujaceWierzcholki.Count == wierzcholkiPobranegoGrafu.Count - 1)
                {
                    Console.WriteLine("Wierzcholek grafu typu kolo do usuniecia: " + wierzcholek);
                    grafTypuKolo          = true;
                    sprawdzanyWierzcholek = wierzcholek;
                }
                sasiadujaceWierzcholki.Clear();
            }

            List <Edge> tworzonyGrafCykliczny = new List <Edge>();

            // jesli jest taki wierzcholek to usuwam go i sprawdzam czy powstanie graf regularny drugiego stopnia i spojny
            if (grafTypuKolo)
            {
                Console.WriteLine("Graf jest grafem typu kolo, tworze graf cykliczny.");
                Graph grafCykliczny = UtworzGrafCykliczny(graph, sprawdzanyWierzcholek);
                GraphReader.Save(grafCykliczny, @"c.txt");
                Console.WriteLine("Zapisano utworzony graf cykliczny do pliku c.txt");
            }
        }
예제 #2
0
        static void Main(string[] args)
        {
            /*
             * Console.WriteLine("Zadanie 1, Lista 2");
             * Console.WriteLine("Sprawdzenie czy graf jest grafem regularnym.");
             * Graph pobranyGrafDoSPrawdzeniaCzyRegularny = GraphReader.Read(@"C:\Users\msawicki\Desktop\UZ-Informatyka\Grafy-i-sieci\Lista2\Lista2Grafy\Lista2Grafy\g1.txt");
             * GraphService.SprawdzCzyGrafJestRegularny(pobranyGrafDoSPrawdzeniaCzyRegularny);
             * Console.WriteLine("<ENTER>");
             * Console.ReadKey();
             *
             * Graph pobranyGrafRegularny = GraphReader.Read(@"C:\Users\msawicki\Desktop\UZ-Informatyka\Grafy-i-sieci\Lista2\Lista2Grafy\Lista2Grafy\g1a.txt");
             * Console.WriteLine("Pobralem kolejny graf..");
             * GraphService.SprawdzCzyGrafJestRegularny(pobranyGrafRegularny);
             * Console.WriteLine("<ENTER>");
             * Console.ReadKey();
             *
             *
             * Console.WriteLine("Zadanie 2, Lista 2");
             * Console.WriteLine("Sprawdzenie czy graf jest grafem cyklicznym.");
             *
             * Graph pobranyGraf = GraphReader.Read(@"C:\Users\msawicki\Desktop\UZ-Informatyka\Grafy-i-sieci\Lista2\Lista2Grafy\Lista2Grafy\g1-2.txt");
             * Console.WriteLine("Pobrano graf.");
             * bool czySpojny = GraphService.SprawdzCzyGrafSpojny(pobranyGraf);
             * bool czyRegularny = GraphService.SprawdzCzyGrafJestRegularny(pobranyGraf);
             *
             * if (czyRegularny && czySpojny)
             * {
             *  Console.WriteLine("Graf jest regularny i spojny. Tworze z niego graf typu kolo.");
             *  Graph grafTypuKoloDoZapisania = GraphService.UtworzGrafKolo(pobranyGraf);
             *  GraphReader.Save(grafTypuKoloDoZapisania);
             * }
             * Console.WriteLine("<ENTER>");
             * Console.ReadKey();
             *
             * Console.WriteLine("Zadanie 3, Lista 2");
             * Console.WriteLine("Sprawdzenie czy graf jest grafem typu koło.");
             *
             * Graph pobranyGrafKolo = GraphReader.Read(@"C:\Users\msawicki\Desktop\UZ-Informatyka\Grafy-i-sieci\Lista2\Lista2Grafy\Lista2Grafy\g1-3.txt");
             * Console.WriteLine("Pobrano graf.");
             * GraphService.SprawdzCzyGrafTypuKolo(pobranyGrafKolo);
             * Console.WriteLine("<ENTER>");
             * Console.ReadKey();
             */
            /*
             * Console.WriteLine("Zadanie 5, Lista 2");
             * Console.WriteLine("Sprawdzenie czy graf jest grafem eulerowskim, półeulerowskim lub nieeulerowskim.");
             * Graph pobranyGrafNieEulerowski = GraphReader.Read(@"C:\Users\msawicki\Desktop\UZ-Informatyka\Grafy-i-sieci\Lista2\Lista2Grafy\Lista2Grafy\g1c.txt");
             * Console.WriteLine("Pobrano graf.");
             * GraphService.SprawdzCzyGrafEulerowski(pobranyGrafNieEulerowski);
             * Console.WriteLine("<ENTER>");
             * Console.ReadKey();
             * Graph pobranyGrafEulerowski = GraphReader.Read(@"C:\Users\msawicki\Desktop\UZ-Informatyka\Grafy-i-sieci\Lista2\Lista2Grafy\Lista2Grafy\g1d.txt");
             * Console.WriteLine("Pobrano graf.");
             * bool eulerowski = GraphService.SprawdzCzyGrafEulerowski(pobranyGrafEulerowski);
             * bool poleulerowski = GraphService.SprawdzCzyGrafPolEulerowski(pobranyGrafEulerowski);
             * Console.WriteLine("<ENTER>");
             * Console.ReadKey();
             */

            Graph pobranyGrafPolEulerowski = GraphReader.Read(@"C:\Users\msawicki\Desktop\UZ-Informatyka\Grafy-i-sieci\Lista2\Lista2Grafy\Lista2Grafy\g1e.txt");

            Console.WriteLine("Pobrano graf.");
            // eulerowski = GraphService.SprawdzCzyGrafEulerowski(pobranyGrafPolEulerowski);
            bool poleulerowski = GraphService.SprawdzCzyGrafPolEulerowski(pobranyGrafPolEulerowski);

            Console.WriteLine("<ENTER>");
            Console.ReadKey();
        }