In This post we are solving Java Program to find all Hamiltonian Cycles in a connected undirected Graph G of n vertices using backtracking principle.
12] Design and implement C++/Java Program to find all Hamiltonian Cycles in a connected undirected Graph G of n vertices using backtracking principle.
PROGRAM :-
import java.util.*; class Hamiltoniancycle { private int adj[][], x[], n; public void Hamiltonian_cycle() { Scanner src = new Scanner(System.in); System.out.println("Enter the number of nodes"); n = src.nextInt(); x = new int[n]; x[0] = 0; for (int i = 1; i < n; i++) x[i] = -1; adj = new int[n][n]; System.out.println("Enter the adjacency matrix"); for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) adj[i][j] = src.nextInt(); } public void nextValue(int k) { int i = 0; while (true) { x[k] = x[k] + 1; if (x[k] == n) x[k] = -1; if (x[k] == -1) return; if (adj[x[k - 1]][x[k]] == 1) for (i = 0; i < k; i++) if (x[i] == x[k]) break; if (i == k) if (k < n - 1 || k == n - 1 && adj[x[n - 1]][0] == 1) return; } } public void getHCycle(int k) { while (true) { nextValue(k); if (x[k] == -1) return; if (k == n - 1) { System.out.println("\nSolution : "); for (int i = 0; i < n; i++) System.out.print((x[i] + 1) + " "); System.out.println(1); } else getHCycle(k + 1); } } } class Tsp { public static void main(String args[]) { Hamiltoniancycle obj = new Hamiltoniancycle(); obj.Hamiltonian_cycle(); obj.getHCycle(1); } }