From 5de1d7cb41b2baffabbf87afc0313c0a84013dfd Mon Sep 17 00:00:00 2001 From: shubagr Date: Tue, 31 Oct 2017 15:16:42 +0530 Subject: [PATCH] adding tsp code in java --- tsp.java.txt | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 tsp.java.txt diff --git a/tsp.java.txt b/tsp.java.txt new file mode 100644 index 0000000..24877bb --- /dev/null +++ b/tsp.java.txt @@ -0,0 +1,93 @@ +import java.util.InputMismatchException; +import java.util.Scanner; +import java.util.Stack; + +public class TSPNearestNeighbour +{ + private int numberOfNodes; + private Stack stack; + + public TSPNearestNeighbour() + { + stack = new Stack(); + } + + public void tsp(int adjacencyMatrix[][]) + { + numberOfNodes = adjacencyMatrix[1].length - 1; + int[] visited = new int[numberOfNodes + 1]; + visited[1] = 1; + stack.push(1); + int element, dst = 0, i; + int min = Integer.MAX_VALUE; + boolean minFlag = false; + System.out.print(1 + "\t"); + + while (!stack.isEmpty()) + { + element = stack.peek(); + i = 1; + min = Integer.MAX_VALUE; + while (i <= numberOfNodes) + { + if (adjacencyMatrix[element][i] > 1 && visited[i] == 0) + { + if (min > adjacencyMatrix[element][i]) + { + min = adjacencyMatrix[element][i]; + dst = i; + minFlag = true; + } + } + i++; + } + if (minFlag) + { + visited[dst] = 1; + stack.push(dst); + System.out.print(dst + "\t"); + minFlag = false; + continue; + } + stack.pop(); + } + } + + public static void main(String... arg) + { + int number_of_nodes; + Scanner scanner = null; + try + { + System.out.println("Enter the number of nodes in the graph"); + scanner = new Scanner(System.in); + number_of_nodes = scanner.nextInt(); + int adjacency_matrix[][] = new int[number_of_nodes + 1][number_of_nodes + 1]; + System.out.println("Enter the adjacency matrix"); + for (int i = 1; i <= number_of_nodes; i++) + { + for (int j = 1; j <= number_of_nodes; j++) + { + adjacency_matrix[i][j] = scanner.nextInt(); + } + } + for (int i = 1; i <= number_of_nodes; i++) + { + for (int j = 1; j <= number_of_nodes; j++) + { + if (adjacency_matrix[i][j] == 1 && adjacency_matrix[j][i] == 0) + { + adjacency_matrix[j][i] = 1; + } + } + } + System.out.println("the citys are visited as follows"); + TSPNearestNeighbour tspNearestNeighbour = new TSPNearestNeighbour(); + tspNearestNeighbour.tsp(adjacency_matrix); + } catch (InputMismatchException inputMismatch) + { + System.out.println("Wrong Input format"); + } + scanner.close(); + } +} \ No newline at end of file