Esempio n. 1
0
        public void MurtyPairingUnique()
        {
            SparseMatrix profit = new SparseMatrix(5, 5);

            for (int i = 0; i < 5; i++)
            {
                profit[i, i] = 1;
            }

            var          pairing  = GC.MurtyPairing(profit);
            List <int[]> expected = new List <int[]>();

            expected.Add(new int[5] {
                0, 1, 2, 3, 4
            });

            Assert.AreEqual(expected.Count, pairing.Count());

            int h = 0;

            foreach (Tuple <int[], double> assignment in pairing)
            {
                Assert.IsTrue(expected[h++].SequenceEqual(assignment.Item1));
            }
        }
Esempio n. 2
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);
        }
Esempio n. 3
0
        public void AssignmentValue1()
        {
            int[] matches = new int[6];
            AE.Fill(matches, i => i);

            Assert.AreEqual(6, GC.AssignmentValue(threecomp, matches));
        }
Esempio n. 4
0
        public void LexicographicalPairingNoDuplicates()
        {
            SparseMatrix profit = new SparseMatrix(3, 3);

            profit[0, 0] = 6; profit[0, 1] = 8; profit[0, 2] = 5;
            profit[1, 0] = 7; profit[1, 1] = 3; profit[1, 2] = 4;
            profit[2, 0] = 9; profit[2, 1] = 8; profit[2, 2] = 7;

            var          pairing  = GC.LexicographicalPairing(profit, 1);
            List <int[]> expected = new List <int[]>();

            expected.Add(new int[3] {
                0, 2, 1
            });
            expected.Add(new int[3] {
                1, 2, 0
            });
            expected.Add(new int[3] {
                2, 1, 0
            });

            Assert.AreEqual(expected.Count, pairing.Count());

            int h = 0;

            foreach (Tuple <int[], double> assignment in pairing)
            {
                Assert.IsTrue(expected[h++].SequenceEqual(assignment.Item1));
            }
        }
Esempio n. 5
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);
        }
Esempio n. 6
0
        public void LinearAssignment3()
        {
            threecomp[4, 2] = 3;
            threecomp.RemoveAt(2, 2);
            int[] best     = GC.LinearAssignment(threecomp);
            int[] expected = new int[6] {
                0, 1, 4, 3, 2, 5
            };

            Assert.IsTrue(expected.SequenceEqual(best));
        }
Esempio n. 7
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;
            }
        }
Esempio n. 8
0
        public void LinearAssignment2()
        {
            SparseMatrix profit = new SparseMatrix(3, 3);

            profit[0, 1] = 2; profit[0, 2] = 5;
            profit[1, 0] = 3;                   profit[1, 2] = 6;
            profit[2, 0] = 1; profit[2, 1] = 2;

            int[] best     = GC.LinearAssignment(profit);
            int[] expected = new int[3] {
                2, 0, 1
            };

            Assert.IsTrue(expected.SequenceEqual(best));
        }
Esempio n. 9
0
        public void LinearAssignmentUnique()
        {
            SparseMatrix profit = new SparseMatrix(4, 4);

            for (int i = 0; i < 10; i++)
            {
                profit[i, i] = (i + 1) / 2.0;
            }

            int[] best     = GC.LinearAssignment(profit);
            int[] expected = new int[10];
            AE.Fill(expected, i => i);

            Assert.IsTrue(expected.SequenceEqual(best));
        }
Esempio n. 10
0
        public void AssignmentValue2()
        {
            int[] matches = new int[6];

            matches[0] = 1;
            matches[1] = 0;
            matches[2] = 4;
            matches[3] = 0;
            matches[4] = 4;
            matches[5] = 5;

            threecomp[1, 0] = 100;

            Assert.AreEqual(103, GC.AssignmentValue(threecomp, matches));
        }
Esempio n. 11
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);
        }