示例#1
0
        private void изобразитьГрафКликToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Program.FORM.listBoxMatrix.Items.Clear();
            //Program.FORM.listBoxMatrix.Items.Add("...Операция может занять несколько секунд... или не несколько...");

            AMatrix = new int[V.Count, V.Count];
            G.fillAdjacencyMatrix(V.Count, E, AMatrix);
            selectButton.Enabled     = true;
            drawVertexButton.Enabled = true;
            drawEdgeButton.Enabled   = true;
            deleteButton.Enabled     = true;
            V.Clear();
            E.Clear();
            G.clearSheet();
            sheet.Image = G.GetBitmap();

            this.E = new List <Edge>(Etmp);
            this.V = new List <Vertex>(Vtmp); for (int i = 0; i < V.Count; i++)
            {
                V[i].color = 0;
            }

            SqMatrix M = new SqMatrix(AMatrix);

            g = new Graphs(M);

            FileStream   fs  = new FileStream("Информация о графе.txt", FileMode.Create);
            TextWriter   tmp = Console.Out;
            StreamWriter sw  = new StreamWriter(fs);

            Console.SetOut(sw);
            Program.FORM.listBoxMatrix.Items.Add("...Операция может занять несколько секунд... или не несколько..."); Program.FORM.listBoxMatrix.Refresh();
            g.CliquesSub();
            Graphs o = g.CliquesGraph;

            G.drawThisGraph(o);
            Console.WriteLine("Клики графа (вершины, дающие полные подграфы; записан каждый второй):"); Graphs.ShowVectorsList(g.CliquesSubsets, 2);
            Console.WriteLine("Макcимальные (не содержащиеся в других) клики:"); Graphs.ShowVectorsList(g.MaximalCliquesSubsets);
            Console.WriteLine("Наибольшие (по мощности) клики:"); Graphs.ShowVectorsList(g.GreatestCliquesSubsets);
            Console.WriteLine("-----------> Число кликового покрытия равно {0}", g.CliquesNumber);
            //Console.WriteLine("-----------> Рёберная плотность графа равна 2q/(p(p-1) = 2*{0}/({1}*{2}) = {3}", g.Edges, g.p, g.p - 1, g.Density);
            Console.WriteLine("Матрица кликов графа:"); g.CliquesMatrix.PrintMatrix();
            //Console.WriteLine("Матрица смежности графа клик:"); g.CliquesGraph.A.PrintMatrix();
            Vectors v = new Vectors(g.GreatestCliquesSubsets[0]);

            for (int i = 0; i < v.Deg; i++)
            {
                V[(int)v[i] - 1].color = 1;
            }
            //G.drawALLGraph(V, E);

            sw.Close();
            Console.SetOut(tmp);
            Console.WriteLine("Запись завершена!");

            Program.FORM.listBoxMatrix.Items.Clear();
            StreamReader sr = new StreamReader("Информация о графе.txt");
            string       s  = "";

            while (s != null)
            {
                listBoxMatrix.Items.Add(s);
                s = sr.ReadLine();
            }
            sr.Close();
        }