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); }
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); }
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(); }
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(); }
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); }
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); }
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(); }
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); }
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); }
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); }
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); }
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); }