Пример #1
0
        public void TestPageRankWithSelfRing()
        {
            double[] state = new double[2] {
                0.5, 0.5
            };

            double[,] transform = new double[2, 2]
            {
                { 0.5, 0.5 },
                { 0, 1.0 }
            };

            var algo = new PageRank();

            algo.DampingFactor = 1;
            PageRankResult result = algo.Perform(state, transform);

            // Check element structure of result matrix.
            Assert.AreEqual(2, result.Matrix.Rank);
            Assert.AreEqual(2, result.Matrix.Length);
            Assert.AreEqual(1, result.Matrix.GetLength(0));
            Assert.AreEqual(2, result.Matrix.GetLength(1));

            // Check element data of result matrix.
            Assert.AreEqual(0, result.Matrix[0, 0], algo.IterationThreshold);
            Assert.AreEqual(1, result.Matrix[0, 1], algo.IterationThreshold);
        }
Пример #2
0
        public void TestPageRankWithDamping()
        {
            double[] state = new double[4] {
                0.25, 0.25, 0.25, 0.25
            };

            double[,] transform = new double[4, 4]
            {
                { 0, 1.0 / 3, 1.0 / 3, 1.0 / 3 },
                { 0, 0, 0, 1 },
                { 0.5, 0, 0, 0.5 },
                { 0, 1, 0, 0 }
            };

            var algo = new PageRank();

            algo.IterationThreshold = 1e-8;
            algo.IterationLimit     = 50;
            algo.DampingFactor      = 0.8;
            PageRankResult result = algo.Perform(state, transform);

            // Check element structure of result matrix.
            Assert.AreEqual(2, result.Matrix.Rank);
            Assert.AreEqual(4, result.Matrix.Length);
            Assert.AreEqual(1, result.Matrix.GetLength(0));
            Assert.AreEqual(4, result.Matrix.GetLength(1));

            // Check element data of result matrix.
            Assert.AreEqual(0.078, result.Matrix[0, 0], 0.001);
            Assert.AreEqual(0.418, result.Matrix[0, 1], 0.001);
            Assert.AreEqual(0.071, result.Matrix[0, 2], 0.001);
            Assert.AreEqual(0.433, result.Matrix[0, 3], 0.001);
        }