Beispiel #1
0
        private void GenerateCriticalPointChart(Chart chart, int N)
        {
            int    iter        = 100;
            double max         = (double)5 / N;
            double max_portion = max / iter;

            double[] datax = new double[iter];
            double[] datay = new double[iter];
            chart.Series.Clear();
            chart.Legends.Clear();
            chart.Titles.Clear();
            chart.ChartAreas.Clear();
            for (int i = 0; i < iter; i++)
            {
                //RandomGraph g = new RandomGraph(N, (double)i/iter);
                ErdösRenyiModel g = new ErdösRenyiModel(N, (double)max_portion * i);

                if ((double)2 * g.getCount() / N > 5)
                {
                    break;
                }
                datay[i] = (double)g.getGCC() / N;
                datax[i] = (double)2 * g.getCount() / N;
            }
            ChartSeries(chart, datax, datay, "<k> = Ng/N", iter, N);
            ChartAreas(chart, "Ng/N", 5);
            ChartTitle(chart, "");
        }
Beispiel #2
0
        private void GenerateClusteringCoefficientErdosChart(Chart chart, int N)
        {
            int    iter = 20;
            double max  = 0;

            double[] datax = new double[iter];
            double[] datay = new double[iter];
            chart.Series.Clear();
            chart.Legends.Clear();
            chart.Titles.Clear();
            chart.ChartAreas.Clear();
            ErdösRenyiModel g;

            for (int i = 0; i < iter; i++)
            {
                g = new ErdösRenyiModel(N, (double)i / iter);

                datay[i] = g.ClusteringCoefficient();
                datax[i] = (double)i / iter;
                if (datay[i] > max)
                {
                    max = datay[i];
                }
                Console.WriteLine("x : " + datax[i] + ", y : " + datay[i]);
            }
            ChartSeries(chart, datax, datay, "p = Avg Path Len", iter, N);
            ChartAreas(chart, "Graph Avg Path Length", max);
            ChartTitle(chart, "");
        }
Beispiel #3
0
        private void ErdosGenerateButton_Click(object sender, EventArgs e)
        {
            int.TryParse(ErdosNumberOfNodesTextBox.Text, out var numberOfNodes);
            int N = numberOfNodes;

            double.TryParse(ErdosProbabilityTextBox.Text, NumberStyles.Any, CultureInfo.InvariantCulture, out var probability);
            if (radioButton1.Checked)
            {
                var model = new ErdösRenyiModel(numberOfNodes, probability);
                if (visualize)
                {
                    var graphviz = new GraphvizAlgorithm <int, UndirectedEdge <int> >(model.Graph);

                    string output = graphviz.Generate(new FileDotEngine(), "graph");

                    ErdosGraphPictureBox.ImageLocation = @"graph.png";
                }
                double avg_k          = (double)2 * model.getCount() / numberOfNodes;;
                double expected_avg_k = probability * (numberOfNodes - 1);
                label18.Text = string.Format(@"{0}", avg_k);
                label13.Text = string.Format(@"{0}", expected_avg_k);
                label15.Text = string.Format(@"{0}", model.getGCC());
                // label3.Text = string.Format(@"{0}", Metrics.ClusteringCoefficientMetric.Analyze(model, false));


                var degreeDistribuition = model.DegreeDistribuition();

                //foreach (var degree in degreeDistribuition)
                //{
                //  Console.WriteLine($@"{degree.Key} - {degree.Value}");
                //}

                ErdosDistribuitionDegreeChart.Titles.Add(new Title(RandomGraphStrings.DegreeChartTitle));

                GenerateDegreeDistribuitionChart(ErdosDistribuitionDegreeChart, degreeDistribuition);
            }
            if (radioButton2.Checked)
            {
                GenerateCriticalPointChart(chart5, N);
                //GenerateAveragePathLengthErdosChart(chart7, N, N_init, E);
                GenerateClusteringCoefficientErdosChart(ErdosClusteringChart, N);
            }
        }
Beispiel #4
0
        public static void testWattsStrogatzModel()
        {
            int    nodes          = 10000;
            double beta           = 0.7;
            int    degree         = 4;
            bool   allowReflexive = false;
            bool   directed       = false;

            ErdösRenyiModel wsm = new ErdösRenyiModel(nodes, beta);

            DegreeDistributionMetric metric = new DegreeDistributionMetric();
            var dddegree = wsm.DegreeDistribuition();

            /* foreach (var d in dddegree)
             * {
             *   Console.WriteLine(string.Format("{0};{1}",d.Key,d.Value));
             * }*/

            //var graphviz = new GraphvizAlgorithm<int, UndirectedEdge<int>>(random_network.MGraph);
            //string output = graphviz.Generate(new FileDotEngine(), "graph");

            int edges = 2 * degree * nodes;
        }