缩小邻接矩阵以进行最短的巡视

时间:2017-03-06 02:40:44

标签: java algorithm traveling-salesman adjacency-matrix

我有一个程序读取数据文件并将数据输入为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();
	}
}

0 个答案:

没有答案