public void ConnectedComponentsCount() { SparseMatrix matrix = threecomp; Console.WriteLine("1st______"); Console.WriteLine(matrix.ToStringFull()); Console.WriteLine(""); Console.WriteLine(string.Join("\n|------\n", (GC.ConnectedComponents(matrix).ConvertAll(m => m.ToStringFull())))); Console.WriteLine(""); Assert.AreEqual(3, GC.ConnectedComponents(matrix).Count); matrix[1, 2] = 1; Console.WriteLine("2nd______"); Console.WriteLine(matrix.ToStringFull()); Console.WriteLine(""); Console.WriteLine(string.Join("\n|------\n", (GC.ConnectedComponents(matrix).ConvertAll(m => m.ToStringFull())))); Console.WriteLine(""); Assert.AreEqual(2, GC.ConnectedComponents(matrix).Count); matrix[5, 4] = 1; Console.WriteLine("3rd______"); Console.WriteLine(matrix.ToStringFull()); Console.WriteLine(""); Console.WriteLine(string.Join("\n|------\n", (GC.ConnectedComponents(matrix).ConvertAll(m => m.ToStringFull())))); Console.WriteLine(""); Assert.AreEqual(1, GC.ConnectedComponents(matrix).Count); }
public void ConnectedComponentsEmpty() { SparseMatrix empty = new SparseMatrix(100, 100); Console.WriteLine(empty.ToStringFull()); Console.WriteLine(""); Console.WriteLine(string.Join("\n|------\n", (GC.ConnectedComponents(empty).ConvertAll(m => m.ToStringFull())))); Console.WriteLine(""); Assert.AreEqual(0, GC.ConnectedComponents(empty).Count); }
public void ConnectedComponentsPartition() { Console.WriteLine(threecomp.ToStringFull()); Console.WriteLine(""); Console.WriteLine(string.Join("\n|------\n", (GC.ConnectedComponents(threecomp).ConvertAll(m => m.ToStringFull())))); Console.WriteLine(""); List <SparseMatrix> components = GC.ConnectedComponents(threecomp); Assert.AreEqual(threecomp.Count, components.Sum(m => m.Count)); SparseMatrix union = new SparseMatrix(); SparseMatrix inter = new SparseMatrix(); foreach (SparseMatrix component in components) { foreach (var item in component) { union[item.I, item.K] = item.Value; } } Assert.IsTrue(threecomp.Equals(union)); var enumerator = components.GetEnumerator(); enumerator.MoveNext(); SparseMatrix current, previous; SparseMatrix first = enumerator.Current; previous = first; while (enumerator.MoveNext()) { current = enumerator.Current; inter = new SparseMatrix(current.Height, current.Width); foreach (var item in current) { if (previous.Defines(item.I, item.K)) { inter[item.I, item.K] = item.Value; } } Assert.AreEqual(0, inter.Count); previous = current; } }
public void ConnectedComponentsOne() { SparseMatrix full = new SparseMatrix(10, 10); for (int i = 0; i < 10; i++) { for (int k = 0; k < 10; k++) { full[i, k] = 1; } } Console.WriteLine(full.ToStringFull()); Console.WriteLine(""); Console.WriteLine(string.Join("\n|------\n", (GC.ConnectedComponents(full).ConvertAll(m => m.ToStringFull())))); Console.WriteLine(""); Assert.AreEqual(1, GC.ConnectedComponents(full).Count); }