package DataStructures.Graphs;/*** A Java program for Prim's Minimum Spanning Tree (MST) algorithm.* adjacency matrix representation of the graph*/class PrimMST {// Number of vertices in the graphprivate static final int V = 5;// A utility function to find the vertex with minimum key// value, from the set of vertices not yet included in MSTint minKey(int key[], Boolean mstSet[]) {// Initialize min valueint min = Integer.MAX_VALUE, min_index = -1;for (int v = 0; v < V; v++)if (mstSet[v] == false && key[v] < min) {min = key[v];min_index = v;}return min_index;}// A utility function to print the constructed MST stored in// parent[]void printMST(int parent[], int n, int graph[][]) {System.out.println("Edge Weight");for (int i = 1; i < V; i++)System.out.println(parent[i] + " - " + i + " " +graph[i][parent[i]]);}// Function to construct and print MST for a graph represented// using adjacency matrix representationvoid primMST(int graph[][]) {// Array to store constructed MSTint parent[] = new int[V];// Key values used to pick minimum weight edge in cutint key[] = new int[V];// To represent set of vertices not yet included in MSTBoolean mstSet[] = new Boolean[V];// Initialize all keys as INFINITEfor (int i = 0; i < V; i++) {key[i] = Integer.MAX_VALUE;mstSet[i] = false;}// Always include first 1st vertex in MST.key[0] = 0; // Make key 0 so that this vertex is// picked as first vertexparent[0] = -1; // First node is always root of MST// The MST will have V verticesfor (int count = 0; count < V - 1; count++) {// Pick thd minimum key vertex from the set of vertices// not yet included in MSTint u = minKey(key, mstSet);// Add the picked vertex to the MST SetmstSet[u] = true;// Update key value and parent index of the adjacent// vertices of the picked vertex. Consider only those// vertices which are not yet included in MSTfor (int v = 0; v < V; v++)// graph[u][v] is non zero only for adjacent vertices of m// mstSet[v] is false for vertices not yet included in MST// Update the key only if graph[u][v] is smaller than key[v]if (graph[u][v] != 0 && mstSet[v] == false &&graph[u][v] < key[v]) {parent[v] = u;key[v] = graph[u][v];}}// print the constructed MSTprintMST(parent, V, graph);}public static void main(String[] args) {/* Let us create the following graph2 3(0)--(1)--(2)| / \ |6| 8/ 5円 |7| / \ |(3)-------(4)9 */PrimMST t = new PrimMST();int graph[][] = new int[][]{{0, 2, 0, 6, 0},{2, 0, 3, 8, 5},{0, 3, 0, 0, 7},{6, 8, 0, 0, 9},{0, 5, 7, 9, 0},};// Print the solutiont.primMST(graph);}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。