Exemplo n.º 1
0
        public void MaxCliqueDetectionG1G3()
        {
            var expectedResult = new List <int> {
                0, 2, 3
            };
            var expectedResult2 = new List <int> {
                2, 1, 4
            };

            var gPath1 = Environment.CurrentDirectory + "\\..\\..\\..\\Graphs\\a1.csv";
            var gPath2 = Environment.CurrentDirectory + "\\..\\..\\..\\Graphs\\a2.csv";

            var alg = new ModularGraphMaxCliqueAlgorithm();

            int[] g1Mapping;
            int[] g2Mapping;
            (g1Mapping, g2Mapping) = alg.GetMaximalCommonSubgraphMapping(gPath1, gPath2);

            #region Then
            Assert.Equal(expectedResult.Count, g1Mapping.Length);
            Assert.Equal(expectedResult2.Count, g2Mapping.Length);

            for (int i = 0; i < expectedResult.Count; i++)
            {
                Assert.Equal(expectedResult[i], g1Mapping[i]);
                Assert.Equal(expectedResult2[i], g2Mapping[i]);
            }
            #endregion
        }
Exemplo n.º 2
0
        public void MaxCliqueDetectionTwiceSameGraph()
        {
            var expectedResult = new List <int> {
                1, 2, 4
            };

            var gPath = Environment.CurrentDirectory + "\\..\\..\\..\\Graphs\\a2.csv";


            var g = new Graph();

            g.FillEdgesFromCsv(gPath);

            var alg = new ModularGraphMaxCliqueAlgorithm();

            alg.MaxCliquePolynomial(g);

            #region Then
            Assert.Equal(expectedResult.Count, alg._maxCP.Count);
            for (int i = 0; i < expectedResult.Count; i++)
            {
                Assert.Equal(expectedResult[i], alg._maxCP[i]);
            }
            #endregion
        }
Exemplo n.º 3
0
        public void MaxCliqueDetectionSingleVertexNormalGraph()
        {
            var expectedResult = new List <int> {
                0
            };

            var gPath1 = Environment.CurrentDirectory + "\\..\\..\\..\\Graphs\\a3_single_vertex.csv";
            var gPath2 = Environment.CurrentDirectory + "\\..\\..\\..\\Graphs\\a2.csv";

            var g1 = new Graph();
            var g2 = new Graph();

            g1.FillEdgesFromCsv(gPath1);
            g2.FillEdgesFromCsv(gPath2);

            var alg = new ModularGraphMaxCliqueAlgorithm();

            int[] g1Mapping;
            int[] g2Mapping;
            (g1Mapping, g2Mapping) = alg.GetMaximalCommonSubgraphMapping(gPath1, gPath2);

            #region Then
            Assert.Equal(expectedResult.Count, g1Mapping.Length);
            Assert.Equal(expectedResult.Count, g2Mapping.Length);
            Assert.Equal(g1Mapping[0], g2Mapping[0]);
            #endregion
        }
Exemplo n.º 4
0
        public void ProperModularGraphConstruction(string g1Name, string g2Name)
        {
            #region Give
            var g1Path = System.Environment.CurrentDirectory + g1Name;
            var g2Path = System.Environment.CurrentDirectory + g2Name;

            var g1 = new Graph();
            var g2 = new Graph();
            g1.FillEdgesFromCsv(g1Path);
            g2.FillEdgesFromCsv(g2Path);

            var expectedGraphPath = Environment.CurrentDirectory + "\\..\\..\\..\\Graphs\\half_of_a1_x_a2.csv";
            var expectedResult    = new Graph();
            expectedResult.FillEdgesFromCsv(expectedGraphPath, true);

            var alg = new ModularGraphMaxCliqueAlgorithm(g1, g2);
            #endregion

            #region When
            alg.CreateModularGraph();
            var result = alg._modularGraph;
            #endregion

            expectedResult.PrintGraph();

            #region Then
            Assert.Equal(expectedResult.Size, result.Size);

            List <KeyValuePair <int, int> > x = new List <KeyValuePair <int, int> >();
            for (int i = 0; i < expectedResult.Size; i++)
            {
                for (int j = 0; j < expectedResult.Size; j++)
                {
                    Assert.Equal(expectedResult.GraphData[i, j] > 0, result.GraphData[i, j] > 0);
                }
            }

            #endregion
        }