Cara menggunakan Java untuk melaksanakan algoritma kitaran Hamiltonian untuk graf
Kitaran Hamiltonian ialah masalah pengiraan dalam teori graf, iaitu mencari laluan tertutup yang mengandungi semua bucu dalam graf tertentu. Dalam artikel ini, kami akan memperkenalkan secara terperinci cara melaksanakan algoritma kitaran Hamiltonian menggunakan bahasa pengaturcaraan Java dan memberikan contoh kod yang sepadan.
Graf
dengan sifat dan kaedah berikut: class Graph { private int[][] adjacencyMatrix; private int numVertices; public Graph(int numVertices) { this.numVertices = numVertices; adjacencyMatrix = new int[numVertices][numVertices]; } public void addEdge(int start, int end) { adjacencyMatrix[start][end] = 1; adjacencyMatrix[end][start] = 1; } public boolean isConnected(int start, int end) { return adjacencyMatrix[start][end] == 1; } }
Graph
的类,包含以下属性和方法:class HamiltonianCycle { private Graph graph; private int numVertices; private int[] path; public HamiltonianCycle(Graph graph) { this.graph = graph; this.numVertices = graph.getNumVertices(); this.path = new int[numVertices]; // 将路径初始化为-1,表示顶点还未被遍历 for (int i = 0; i < numVertices; i++) { path[i] = -1; } } public void findHamiltonianCycle() { path[0] = 0; // 从顶点0开始 if (findFeasibleSolution(1)) { printSolution(); } else { System.out.println("No solution exists."); } } private boolean findFeasibleSolution(int position) { if (position == numVertices) { int start = path[position - 1]; int end = path[0]; if (graph.isConnected(start, end)) { return true; } else { return false; } } for (int vertex = 1; vertex < numVertices; vertex++) { if (isFeasible(vertex, position)) { path[position] = vertex; if (findFeasibleSolution(position + 1)) { return true; } // 回溯 path[position] = -1; } } return false; } private boolean isFeasible(int vertex, int actualPosition) { // 两个相邻顶点之间必须是连通的 if (!graph.isConnected(path[actualPosition - 1], vertex)) { return false; } // 该顶点是否已经在路径中 for (int i = 0; i < actualPosition; i++) { if (path[i] == vertex) { return false; } } return true; } private void printSolution() { System.out.println("Hamiltonian Cycle exists:"); for (int i = 0; i < numVertices; i++) { System.out.print(path[i] + " "); } System.out.println(path[0]); } }
HamiltonianCycle
的类,包含以下方法:public class Main { public static void main(String[] args) { Graph graph = new Graph(5); graph.addEdge(0, 1); graph.addEdge(0, 3); graph.addEdge(1, 2); graph.addEdge(1, 3); graph.addEdge(1, 4); graph.addEdge(2, 4); graph.addEdge(3, 4); HamiltonianCycle hamiltonianCycle = new HamiltonianCycle(graph); hamiltonianCycle.findHamiltonianCycle(); } }
在这个测试示例中,我们创建了一个具有5个顶点的图,并添加了一些边。然后我们创建了一个HamiltonianCycle
对象并调用findHamiltonianCycle
Algoritma kitaran Hamiltonan
HamiltonianCycle
dengan kaedah berikut: rrreeeUjian
Akhir sekali, kami boleh menggunakan kod berikut untuk menguji Pelaksanaan kami:HamiltonianCycle
dan memanggil kaedah findHamiltonianCycle
untuk mencari dan mengeluarkan kitaran Hamiltonian. 🎜🎜Melalui langkah di atas, kami berjaya melaksanakan algoritma kitaran Hamiltonian graf menggunakan bahasa pengaturcaraan Java. Anda boleh menukar bilangan bucu dan sambungan tepi mengikut keperluan, dan kemudian jalankan kod untuk mengesahkan ketepatan dan kesan algoritma. 🎜Atas ialah kandungan terperinci Cara menggunakan java untuk melaksanakan algoritma kitaran Hamiltonian graf. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!