Example #1
0
        /// <summary>
        /// Method that find count of hamiltonian graphs
        /// and count of Ore graphs, Posha graphs and Chvatal graphs
        /// </summary>
        public static void GetConditionsStatistics()
        {
            try
            {
                Stopwatch stopWatch = new Stopwatch();
                stopWatch.Start();

                using (StreamWriter sw = new StreamWriter(@"D:\Shared Folder\conditions_statistics.txt"))
                {
                    for (int i = 3; i <= 11; i++)
                    {
                        int ore_true      = 0;
                        int ore_false     = 0;
                        int posha_true    = 0;
                        int posha_false   = 0;
                        int chvatal_true  = 0;
                        int chvatal_false = 0;

                        int hamiltonian_graph = 0;

                        using (StreamReader sr = new StreamReader(@"D:\Shared Folder\Generated G6\graphs" + i + ".g6"))
                        {
                            string s;
                            while ((s = sr.ReadLine()) != null)
                            {
                                int[,] matrix = Helper.DecodeGraph6(s);
                                List <int> vector = GetVector(matrix);

                                if (HamiltonianGraphsHelper.IsHamiltonianGraph(matrix))
                                {
                                    hamiltonian_graph++;
                                }

                                if (HamiltonianGraphsHelper.OreCondition(matrix))
                                {
                                    ore_true++;
                                }
                                else
                                {
                                    ore_false++;
                                }

                                if (HamiltonianGraphsHelper.PoshaCondition(vector))
                                {
                                    posha_true++;
                                }
                                else
                                {
                                    posha_false++;
                                }

                                if (HamiltonianGraphsHelper.ChvatalCondition(vector))
                                {
                                    chvatal_true++;
                                }
                                else
                                {
                                    chvatal_false++;
                                }
                            }
                        }

                        sw.WriteLine("Количество {0}-вершинных гамильтоновых графов равно = {1}.", i, hamiltonian_graph);
                        sw.WriteLine("Количество {0}-вершинных графов, удовлетворяющих условию Оре, равно = {1}.", i, ore_true);
                        sw.WriteLine("Количество {0}-вершинных графов, не удовлетворяющих условию Оре, равно = {1}.\n", i, ore_false);

                        sw.WriteLine("Количество {0}-вершинных графов, удовлетворяющих условию Поша, равно = {1}.", i, posha_true);
                        sw.WriteLine("Количество {0}-вершинных графов, не удовлетворяющих условию Поша, равно = {1}.\n", i, posha_false);

                        sw.WriteLine("Количество {0}-вершинных графов, удовлетворяющих условию Хватала, равно = {1}.", i, chvatal_true);
                        sw.WriteLine("Количество {0}-вершинных графов, не удовлетворяющих условию Хватала, равно = {1}.\n", i, chvatal_false);
                    }

                    stopWatch.Stop();

                    TimeSpan ts          = stopWatch.Elapsed;
                    string   elapsedTime = String.Format("{0:00} дней {1:00} час {2:00} минут {3:00}.{4:00} секунд",
                                                         ts.Days, ts.Hours, ts.Minutes, ts.Seconds,
                                                         ts.Milliseconds / 10);
                    sw.WriteLine("\nЗатраченное время: " + elapsedTime);
                }
            }
            catch (Exception e)
            {
                Console.Write("Файл не может быть открыт: ");
                Console.WriteLine(e.Message);
            }
        }