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 }
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 }
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 }
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 }