TSP问题贪心算法java代码
时间: 2023-06-11 07:09:12 浏览: 111
以下是使用贪心算法解决TSP问题的Java代码示例:
```java
import java.util.*;
public class TSPGreedy {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int[][] graph = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
graph[i][j] = input.nextInt();
}
}
List<Integer> result = tspGreedy(graph);
System.out.println(result);
}
private static List<Integer> tspGreedy(int[][] graph) {
int n = graph.length;
boolean[] visited = new boolean[n];
List<Integer> path = new ArrayList<>();
path.add(0);
visited[0] = true;
while (path.size() < n) {
int last = path.get(path.size() - 1);
int next = -1;
int minDist = Integer.MAX_VALUE;
for (int i = 0; i < n; i++) {
if (!visited[i] && graph[last][i] < minDist) {
next = i;
minDist = graph[last][i];
}
}
path.add(next);
visited[next] = true;
}
path.add(0);
return path;
}
}
```
该代码实现了输入一个n个城市的完全图,并通过贪心算法求解TSP问题,返回一个最短路径。其中,`graph`表示邻接矩阵,`path`表示当前已经访问的节点的路径,`visited`表示当前已经访问的节点。
阅读全文