Ejemplo n.º 1
0
 public void GetMaxWithPredecessorTest()
 {
     var array = new[] { 10, 1, 2, 3, 9, 4, 5 };
     var result = Tournament.GetMaxWithPredecessor(array);
     result.Item1.Should().Be(9);
     result.Item2.Should().Be(10);
 }
Ejemplo n.º 2
0
 public void GetMaxWithPredecessorTest2()
 {
     var array = new[] { 5, 1, 2, 3, 4 };
     var result = Tournament.GetMaxWithPredecessor(array);
     result.Item1.Should().Be(4);
     result.Item2.Should().Be(5);
 }
Ejemplo n.º 3
0
        public void IsSatisfiableTest()
        {
            // (x1 ∨ x2) ∧ (¬x1 ∨ x3) ∧ (x3 ∨ x4) ∧ (¬x2 ∨ ¬x4)
            var satisfiableClauses = new[]
                {
                    new Clause(new Literal(1), new Literal(2)),
                    new Clause(new Literal(1).Negate(), new Literal(3)),
                    new Clause(new Literal(3), new Literal(4)),
                    new Clause(new Literal(2).Negate(), new Literal(4).Negate()),
                };

            TwoSatSolver.IsSatisfiable(satisfiableClauses).Should().BeTrue();

            // (x1 ∨ x2) ∧ (¬x1 ∨ x3) ^ (¬x3 ∨ x2) ∧ (x1 ∨ x4) ∧ (¬x3 ∨ x4) ∧ (¬x2 ∨ ¬x4)
            var unsatisfiableClauses = new[]
                {
                    new Clause(new Literal(1), new Literal(2)),
                    new Clause(new Literal(1).Negate(), new Literal(3)),
                    new Clause(new Literal(3).Negate(), new Literal(2)),
                    new Clause(new Literal(1), new Literal(4)),
                    new Clause(new Literal(3).Negate(), new Literal(4)),
                    new Clause(new Literal(2).Negate(), new Literal(4).Negate()),
                };

            TwoSatSolver.IsSatisfiable(unsatisfiableClauses).Should().BeFalse();
        }
Ejemplo n.º 4
0
 public void GetBigKnapsackMaxCostTest()
 {
     var items = new[] { new KnapsackItem(3, 4), new KnapsackItem(2, 3), new KnapsackItem(4, 2), new KnapsackItem(4, 3) };
     var knapsack = new Knapsack(items, 6);
     var solver = new BigKnapsackSolver(knapsack);
     solver.GetMaxCost().Should().Be(8);
 }
        public void IsSatisfiableTest()
        {
            // (x0 ∨ x1) ∧ (¬x0 ∨ x2) ∧ (x2 ∨ x3) ∧ (¬x1 ∨ ¬x3)
            var satisfiableClauses = new[]
                {
                    new Clause(new Literal(0), new Literal(1)),
                    new Clause(new Literal(0).Negate(), new Literal(2)),
                    new Clause(new Literal(2), new Literal(3)),
                    new Clause(new Literal(1).Negate(), new Literal(3).Negate()),
                };

            BacktrackingTwoSatSolver.IsSatisfiable(satisfiableClauses).Should().BeTrue();

            // (x0 ∨ x1) ∧ (¬x0 ∨ x2) ^ (¬x2 ∨ x1) ∧ (x0 ∨ x3) ∧ (¬x2 ∨ x3) ∧ (¬x1 ∨ ¬x3)
            var unsatisfiableClauses = new[]
                {
                    new Clause(new Literal(0), new Literal(1)),
                    new Clause(new Literal(0).Negate(), new Literal(2)),
                    new Clause(new Literal(2).Negate(), new Literal(1)),
                    new Clause(new Literal(0), new Literal(3)),
                    new Clause(new Literal(2).Negate(), new Literal(3)),
                    new Clause(new Literal(1).Negate(), new Literal(3).Negate()),
                };

            BacktrackingTwoSatSolver.IsSatisfiable(unsatisfiableClauses).Should().BeFalse();
        }
Ejemplo n.º 6
0
        public void SortAndCountTest()
        {
            var expected = new[] { 1, 2, 3, 4, 6, 7, 8, 9, 10 };

            var array1 = new[] { 2, 4, 6, 8, 1, 3, 7, 9, 10 };

            var count1 = Quicksort.SortAndCount(array1, (arr, l, r) => l);

            array1.Should().Equal(expected);

            count1.Should().Be(19);

            var array2 = new[] { 2, 4, 6, 8, 1, 3, 7, 9, 10 };

            var count2 = Quicksort.SortAndCount(array2, (arr, l, r) => r);

            array2.Should().Equal(expected);

            count2.Should().Be(27);

            var array3 = new[] { 2, 4, 6, 8, 1, 3, 7, 9, 10 };

            var count3 = Quicksort.SortAndCount(array3, Quicksort.GetMedian);

            array3.Should().Equal(expected);

            count3.Should().Be(19);
        }
Ejemplo n.º 7
0
        public void PartitionTest()
        {
            var array1 = new[] { 5, 7, 6, 1, 2 };

            var pivot1 = Quicksort.Partition(array1, 0, array1.Length - 1, (arr, l, r) => l);

            var expected1 = new[] { 2, 1, 5, 7, 6 };

            pivot1.Should().Be(2);

            array1.Should().Equal(expected1);

            var array2 = new[] { 5, 7, 6, 1, 2 };

            var pivot2 = Quicksort.Partition(array2, 0, array2.Length - 1, (arr, l, r) => r);

            var expected2 = new[] { 1, 2, 6, 7, 5 };

            pivot2.Should().Be(1);

            array2.Should().Equal(expected2);

            var array3 = new[] { 5, 7, 6, 1, 2 };

            var pivot3 = Quicksort.Partition(array3, 0, array3.Length - 1, Quicksort.GetMedian);

            var expected3 = new[] { 2, 1, 5, 7, 6 };

            pivot3.Should().Be(2);

            array3.Should().Equal(expected3);
        }
Ejemplo n.º 8
0
        public void IsSatisfiableTest()
        {
            // (x0 ∨ x1) ∧ (¬x0 ∨ x2) ∧ (x2 ∨ x3) ∧ (¬x1 ∨ ¬x3)
            var satisfiableClauses = new[]
                {
                    new Clause(new Literal(0), new Literal(1)),
                    new Clause(new Literal(0).Negate(), new Literal(2)),
                    new Clause(new Literal(2), new Literal(3)),
                    new Clause(new Literal(1).Negate(), new Literal(3).Negate()),
                };

            //Papadimitriou.IsSatisfiable(4, satisfiableClauses).Should().BeTrue();

            // (x0 ∨ x1) ∧ (¬x0 ∨ x2) ^ (¬x2 ∨ x1) ∧ (x0 ∨ x3) ∧ (¬x2 ∨ x3) ∧ (¬x1 ∨ ¬x3)
            var unsatisfiableClauses = new[]
                {
                    new Clause(new Literal(0), new Literal(1)),
                    new Clause(new Literal(0).Negate(), new Literal(2)),
                    new Clause(new Literal(2).Negate(), new Literal(1)),
                    new Clause(new Literal(0), new Literal(3)),
                    new Clause(new Literal(2).Negate(), new Literal(3)),
                    new Clause(new Literal(1).Negate(), new Literal(3).Negate()),
                };

            Papadimitriou.IsSatisfiable(4, unsatisfiableClauses).Should().BeFalse();
        }
Ejemplo n.º 9
0
        public void GetMedianTest()
        {
            var array1 = new[] { 5, 6, 7, 1, 2 };
            var median1 = Quicksort.GetMedian(array1, 0, array1.Length - 1);
            median1.Should().Be(0);

            var array2 = new[] { 5, 6, 7, 1, 2, 10 };
            var median2 = Quicksort.GetMedian(array2, 0, array2.Length - 1);
            median2.Should().Be(2);

            Quicksort.GetMedian(new[] { 2, 7, 5 }, 0, 2).Should().Be(2);
            Quicksort.GetMedian(new[] { 5, 7, 10 }, 0, 2).Should().Be(1);
            Quicksort.GetMedian(new[] { 8, 4, 1 }, 0, 2).Should().Be(1);
            Quicksort.GetMedian(new[] { 8, 4, 10 }, 0, 2).Should().Be(0);
            Quicksort.GetMedian(new[] { 8, 4, 5 }, 0, 2).Should().Be(2);
        }
Ejemplo n.º 10
0
        public void SortTest()
        {
            var array1 = new[] { 5, 6, 7, 1, 2 };

            var actual1 = BubbleSort.Sort(array1);

            var expected1 = new[] { 1, 2, 5, 6, 7 };

            actual1.Should().Equal(expected1);

            var array2 = new[] { 2, 4, 6, 8, 1, 3, 7, 9, 10 };

            var actual2 = BubbleSort.Sort(array2);

            var expected2 = new[] { 1, 2, 3, 4, 6, 7, 8, 9, 10 };

            actual2.Should().Equal(expected2);
        }
Ejemplo n.º 11
0
        public void CountInversionsTest()
        {
            var array1 = new[] { 5, 6, 7, 1, 2 };

            var actual1 = MergeSort.CountInversions(array1);

            actual1.Should().Be(6);

            var array2 = new[] { 2, 4, 6, 8, 1, 3, 7, 9, 10 };

            var actual2 = MergeSort.CountInversions(array2);

            actual2.Should().Be(8);

            var array3 = new[] { 1, 3, 5, 2, 4, 6 };

            var actual3 = MergeSort.CountInversions(array3);

            actual3.Should().Be(3);
        }
Ejemplo n.º 12
0
 public void CompareByRatioTest()
 {
     var jobs = new[] { new Job(3, 5), new Job(1, 2), new Job(4, 5) };
     var weightedTime = JobScheduler.GetWeightedSumOfCompletionTimes(jobs, JobScheduler.CompareByRatio);
     weightedTime.Should().Be(62);
 }
Ejemplo n.º 13
0
        public void SortTest()
        {
            var array1 = new[] { 5, 6, 7, 1, 2 };

            Quicksort.Sort(array1, (arr, l, r) => l);

            var expected1 = new[] { 1, 2, 5, 6, 7 };

            array1.Should().Equal(expected1);

            var array2 = new[] { 2, 4, 6, 8, 1, 3, 7, 9, 10 };

            Quicksort.Sort(array2, (arr, l, r) => l);

            var expected2 = new[] { 1, 2, 3, 4, 6, 7, 8, 9, 10 };

            array2.Should().Equal(expected2);

            var array3 = new[] { 2, 4, 6, 8, 1, 3, 7, 9, 10 };

            Quicksort.Sort(array3, Quicksort.GetMedian);

            var expected3 = new[] { 1, 2, 3, 4, 6, 7, 8, 9, 10 };

            array3.Should().Equal(expected3);
        }