//------------------------------------------------------------------------------------------------------- private void EnumerateGraphBySize(int pSize) { СonnectedСomponent connectedСomponent = new СonnectedСomponent(); ArticulationPointsSearch <CVertex> articulationPointsSearch = new ArticulationPointsSearch <CVertex>(); ArticulationPointsBruteForce <CVertex> articulationPointsBruteForce = new ArticulationPointsBruteForce <CVertex>(); int length = pSize * (pSize - 1) / 2; int maxValue = 1 << (length - 1); int maxI = pSize - 1; for (int k = 0; k < maxValue; k++) { Graph <CVertex> graph = new Graph <CVertex>(pSize); Graph <CVertex> graph1 = new Graph <CVertex>(pSize); Graph <CVertex> graph2 = new Graph <CVertex>(pSize); int val = k; StringBuilder iAsString = new StringBuilder(); for (int i = 0; i < pSize; i++) { for (int j = i + 1; j < pSize; j++) { int bin = val & 1; if (bin != 0) { graph.AddEdge(i, j); graph1.AddEdge(i, j); graph2.AddEdge(i, j); } val >>= 1; string sbin = (bin == 0 ? "0" : "1"); iAsString.Append(sbin); } } if (connectedСomponent.IsConnected(graph)) { List <int> points1 = articulationPointsSearch.FindArticulationPoints(graph1); List <int> points2 = articulationPointsBruteForce.FindArticulationPoints(graph2); string points1AsString = string.Join(",", points1); string points2AsString = string.Join(",", points2); Assert.AreEqual(points2AsString, points1AsString, "Different result - articulationPointsSearch and articulationPointsBruteForce."); } } }
public void ArticulationPointsBruteForceTest4() { // arrange ArticulationPointsBruteForce <CVertex> articulationPointsBruteForce = new ArticulationPointsBruteForce <CVertex>(); Graph <CVertex> graph = new Graph <CVertex>(6); graph.AddEdge(0, 1); graph.AddEdge(1, 2); graph.AddEdge(0, 2); graph.AddEdge(2, 3); graph.AddEdge(3, 4); graph.AddEdge(3, 5); string expectedResult = "2,3"; // act List <int> points = articulationPointsBruteForce.FindArticulationPoints(graph); string actualResult = string.Join(",", points.OrderBy(p => p)); // assert Assert.AreEqual(expectedResult, actualResult, ""); }