我有一个程序读取数据文件并将数据输入为16 x 16邻接矩阵。我需要在16个节点中找到10个节点,其中有一个最小的游览。有人可以告诉我如何实现一个完成此任务的旅行销售员算法?我知道如何为所有16个节点执行此操作,但我不知道如何将其压缩为仅10个节点。
public class Tour
{
public static final int N = 16;
public static final int INF = Integer.MAX_VALUE;
public static void printGrid(int[][] adjMat)
{
for(int i = 0; i < 16; i++)
{
for(int j = 0; j < 16; j++)
{
if(adjMat[i][j] == INF)
System.out.printf("%5s", 0);
else
System.out.printf("%5d", adjMat[i][j]);
}
System.out.println();
}
}
public static void TSP(int[][] adjMat)
{
adjMat = new int[N][N];
}
public static void main(String[] args) throws FileNotFoundException
{
File file = new File("american_tour.dat");
Scanner scanner = new Scanner(file);
scanner.useDelimiter("[\\s,]+");
int N = scanner.nextInt();
int[][] adjMat = new int[N][N];
for(int i=0; i < N; i++)
for (int j=0; j < N; j++)
adjMat[i][j] = scanner.nextInt();
printGrid(adjMat);
scanner.close();
}
}