Пример #1
0
        public void ExecuteTestCase4()
        {
            // arrange
            int[][] listOfSet = new int[][] { new int[] { 0, 1 }, new int[] { 2, 3 }, new int[] { 4 }, new int[] { 1, 3 } };
            RepresentativesBranchAndBound bruteForce = new RepresentativesBranchAndBound(5, listOfSet);
            List <int> expectedResult = new List <int>()
            {
                1, 3, 4
            };
            string expectedResult2 = "1,2,4";

            // act
            bruteForce.Execute();

            // assert
            Assert.AreEqual(expectedResult.Count, bruteForce.Result.Count, "Wrong number rows in result");
            for (int i = 0; i < expectedResult.Count; i++)
            {
                Assert.AreEqual(expectedResult[i], bruteForce.Result[i], $"Wrong string in position {i} - {bruteForce.Result[i]}. Expected - {expectedResult[i]}");
            }

            Assert.IsTrue(bruteForce.OptimalSets.Contains(expectedResult2));
        }
Пример #2
0
        //--------------------------------------------------------------------------------------
        protected override bool MakeAction()
        {
            if (_fCurrentPosition == _fSize - 1)
            {
                // arrange
                int[][] listOfSet = _fCurrentSet.Select(t => BruteForceRepresentatives.GetAsElementNumbers(t, _fCardinality).ToArray()).ToArray();
                BruteForceRepresentatives     bruteForce     = new BruteForceRepresentatives();
                RepresentativesBranchAndBound branchAndBound = new RepresentativesBranchAndBound(_fCardinality, listOfSet);

                // act
                List <int> result = bruteForce.ExecuteByBinary(listOfSet);
                branchAndBound.Execute();
                bruteForce.OptimalSets     = bruteForce.OptimalSets.OrderBy(s => s).ToList();
                branchAndBound.OptimalSets = branchAndBound.OptimalSets.OrderBy(s => s).ToList();

                // assert
                Assert.AreEqual(branchAndBound.OptimalSets.Count, bruteForce.OptimalSets.Count, "Wrong number rows in result");
                for (int i = 0; i < branchAndBound.OptimalSets.Count; i++)
                {
                    Assert.AreEqual(branchAndBound.OptimalSets[i], bruteForce.OptimalSets[i], $"Wrong string in position {i} - {branchAndBound.OptimalSets[i]}. Expected - {bruteForce.OptimalSets[i]}");
                }
            }
            return(false);
        }