forked from TheAlgorithms/Java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTravelingSalesmanTest.java
More file actions
127 lines (110 loc) · 4.84 KB
/
TravelingSalesmanTest.java
File metadata and controls
127 lines (110 loc) · 4.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package com.thealgorithms.graph;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
public class TravelingSalesmanTest {
// Test Case 1: A simple distance matrix with 4 cities
@Test
public void testBruteForceSimple() {
int[][] distanceMatrix = {{0, 10, 15, 20}, {10, 0, 35, 25}, {15, 35, 0, 30}, {20, 25, 30, 0}};
int expectedMinDistance = 80;
int result = TravelingSalesman.bruteForce(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
@Test
public void testDynamicProgrammingSimple() {
int[][] distanceMatrix = {{0, 10, 15, 20}, {10, 0, 35, 25}, {15, 35, 0, 30}, {20, 25, 30, 0}};
int expectedMinDistance = 80;
int result = TravelingSalesman.dynamicProgramming(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
// Test Case 2: A distance matrix with 3 cities
@Test
public void testBruteForceThreeCities() {
int[][] distanceMatrix = {{0, 10, 15}, {10, 0, 35}, {15, 35, 0}};
int expectedMinDistance = 60;
int result = TravelingSalesman.bruteForce(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
@Test
public void testDynamicProgrammingThreeCities() {
int[][] distanceMatrix = {{0, 10, 15}, {10, 0, 35}, {15, 35, 0}};
int expectedMinDistance = 60;
int result = TravelingSalesman.dynamicProgramming(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
// Test Case 3: A distance matrix with 5 cities (larger input)
@Test
public void testBruteForceFiveCities() {
int[][] distanceMatrix = {{0, 2, 9, 10, 1}, {2, 0, 6, 5, 8}, {9, 6, 0, 4, 3}, {10, 5, 4, 0, 7}, {1, 8, 3, 7, 0}};
int expectedMinDistance = 15;
int result = TravelingSalesman.bruteForce(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
@Test
public void testDynamicProgrammingFiveCities() {
int[][] distanceMatrix = {{0, 2, 9, 10, 1}, {2, 0, 6, 5, 8}, {9, 6, 0, 4, 3}, {10, 5, 4, 0, 7}, {1, 8, 3, 7, 0}};
int expectedMinDistance = 15;
int result = TravelingSalesman.dynamicProgramming(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
// Test Case 4: A distance matrix with 2 cities (simple case)
@Test
public void testBruteForceTwoCities() {
int[][] distanceMatrix = {{0, 1}, {1, 0}};
int expectedMinDistance = 2;
int result = TravelingSalesman.bruteForce(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
@Test
public void testDynamicProgrammingTwoCities() {
int[][] distanceMatrix = {{0, 1}, {1, 0}};
int expectedMinDistance = 2;
int result = TravelingSalesman.dynamicProgramming(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
// Test Case 5: A distance matrix with identical distances
@Test
public void testBruteForceEqualDistances() {
int[][] distanceMatrix = {{0, 10, 10, 10}, {10, 0, 10, 10}, {10, 10, 0, 10}, {10, 10, 10, 0}};
int expectedMinDistance = 40;
int result = TravelingSalesman.bruteForce(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
@Test
public void testDynamicProgrammingEqualDistances() {
int[][] distanceMatrix = {{0, 10, 10, 10}, {10, 0, 10, 10}, {10, 10, 0, 10}, {10, 10, 10, 0}};
int expectedMinDistance = 40;
int result = TravelingSalesman.dynamicProgramming(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
// Test Case 6: A distance matrix with only one city
@Test
public void testBruteForceOneCity() {
int[][] distanceMatrix = {{0}};
int expectedMinDistance = 0;
int result = TravelingSalesman.bruteForce(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
@Test
public void testDynamicProgrammingOneCity() {
int[][] distanceMatrix = {{0}};
int expectedMinDistance = 0;
int result = TravelingSalesman.dynamicProgramming(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
// Test Case 7: Distance matrix with large numbers
@Test
public void testBruteForceLargeNumbers() {
int[][] distanceMatrix = {{0, 1000000, 2000000}, {1000000, 0, 1500000}, {2000000, 1500000, 0}};
int expectedMinDistance = 4500000;
int result = TravelingSalesman.bruteForce(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
@Test
public void testDynamicProgrammingLargeNumbers() {
int[][] distanceMatrix = {{0, 1000000, 2000000}, {1000000, 0, 1500000}, {2000000, 1500000, 0}};
int expectedMinDistance = 4500000;
int result = TravelingSalesman.dynamicProgramming(distanceMatrix);
assertEquals(expectedMinDistance, result);
}
}