示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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;
            }
        }
示例#4
0
        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);
        }