Пример #1
0
        public void JointProbabilityOfEdgeExcessDegreeFollowsProbabilityRules()
        {
            Graph g = new ErGraph(100, 0.15, new Randomizer());

            TestGraphs.Add(g);

            double total = 0;

            for (int i = 0; i <= 100; i++)
            {
                for (int j = 0; j <= 100; j++)
                {
                    total += g.GetEdgeExcessNodeDegreeProbability(i, j);
                }
            }

            Assert.AreEqual(1.0, total, Tolerance);

            for (int i = 0; i <= 100; i++)
            {
                total = 0;
                for (int j = 0; j <= 100; j++)
                {
                    total += g.GetEdgeExcessNodeDegreeProbability(i, j);
                }
                Assert.AreEqual(total, g.GetEdgeExcessNodeDegreeProbability(i), Tolerance);
            }
            Assert.IsTrue(AllGraphsHaveNoZeroDegreeNodes());
        }
Пример #2
0
        public void ClonedGraphHasSameDegreeVector()
        {
            Randomizer r = new Randomizer();
            Graph      g = new ErGraph(50, .01, r);

            Graph g2 = g.Clone();

            Assert.AreEqual(String.Join(",", g.DegreeVector), string.Join(",", g2.DegreeVector));
            foreach (var edge in g.Edges)
            {
                Assert.IsTrue(g2.Edges.Any(e => e.Item1 == edge.Item1 && e.Item2 == edge.Item2));
            }
        }
Пример #3
0
        public void EdgeTuplesOfErGraphMatchForEdgeNodeProbability()
        {
            Randomizer r     = new Randomizer();
            ErGraph    graph = new ErGraph(100, 0.15, r);

            Dictionary <int, double> erGraphEdgeNodeProbability =
                graph.Edges.SelectMany(t => new List <Node>
            {
                graph.Nodes.First(n => n.Id == t.Item1),
                graph.Nodes.First(n => n.Id == t.Item2)
            }).GroupBy(n => n.Degree).ToDictionary(g => g.Key, g => (double)g.Count() / (graph.Edges.Count() * 2));

            Assert.IsTrue(
                erGraphEdgeNodeProbability.All(
                    kvp => Math.Abs(kvp.Value - graph.GetEdgeNodeDegreeProbability(kvp.Key)) < Tolerance));
        }
Пример #4
0
        public void GraphAssortativityOfRandomGraphsIsInRange()
        {
            Randomizer rand = new Randomizer();

            for (int i = 0; i < 10; i++)
            {
                ErGraph erg = new ErGraph((int)(rand.NextDouble() * 300 + 20), rand.NextDouble() * 0.4, new Randomizer(new Random(rand.Next())));
                TestGraphs.Add(erg);
                Assert.IsTrue(-1 <= erg.GraphAssortativity && erg.GraphAssortativity <= 1);
                Assert.IsTrue(-1 <= erg.GraphAssortativity2() && erg.GraphAssortativity2() <= 1);
                Assert.IsTrue(Math.Abs(erg.GraphAssortativity - erg.GraphAssortativity2()) < Tolerance);

                BaGraph bag = new BaGraph((int)(rand.NextDouble() * 20 + 2), new Randomizer(new Random(rand.Next())), (int)(rand.NextDouble() * 800 + 100));
                TestGraphs.Add(bag);
                Assert.IsTrue(-1 <= bag.GraphAssortativity && bag.GraphAssortativity <= 1);
                Assert.IsTrue(-1 <= bag.GraphAssortativity2() && bag.GraphAssortativity2() <= 1);
                Assert.IsTrue(Math.Abs(bag.GraphAssortativity - bag.GraphAssortativity2()) < Tolerance);
            }
            Assert.IsTrue(AllGraphsHaveNoZeroDegreeNodes());
        }
Пример #5
0
        public void IterativeSwappingMaintainsDegreeVector()
        {
            Randomizer rand = new Randomizer();

            // Random graphs
            for (int i = 0; i < 10; i++)
            {
                ErGraph erg = new ErGraph((int)(rand.NextDouble() * 300 + 20), rand.NextDouble() * 0.4, new Randomizer(new Random(rand.Next())));
                TestGraphs.Add(erg);
                string prevVector = String.Join(",", erg.DegreeVector);
                erg.IterativelySwapEdgesToIncreaseAssortativity();
                Assert.AreEqual(prevVector, String.Join(",", erg.DegreeVector));

                BaGraph bag = new BaGraph((int)(rand.NextDouble() * 20 + 2), new Randomizer(new Random(rand.Next())), (int)(rand.NextDouble() * 800 + 100));
                TestGraphs.Add(bag);
                prevVector = String.Join(",", erg.DegreeVector);
                erg.IterativelySwapEdgesToIncreaseAssortativity();
                Assert.AreEqual(prevVector, String.Join(",", erg.DegreeVector));
            }
            Assert.IsTrue(AllGraphsHaveNoZeroDegreeNodes());
        }
Пример #6
0
        public void ErGraphHasCorrectVectorSizeAfterBeingCreated()
        {
            ErGraph g = new ErGraph(100, 0.15, new Randomizer());

            Assert.AreEqual(100, g.DegreeVector.Count());
        }