From 24c519479f9ebae41862c55313ced0627e119273 Mon Sep 17 00:00:00 2001 From: Siddhi Bodake <117656009+Siddhi-Bodake@users.noreply.github.com> Date: Wed, 25 Oct 2023 17:48:37 +0530 Subject: [PATCH] =?UTF-8?q?Create=20Kruskal=E2=80=99s=5FAlgorithm.js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I want to contribute Kruskal’s Algorithm Simple Implementation for Adjacency Matrix --- "Kruskal\342\200\231s_Algorithm.js" | 76 +++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 "Kruskal\342\200\231s_Algorithm.js" diff --git "a/Kruskal\342\200\231s_Algorithm.js" "b/Kruskal\342\200\231s_Algorithm.js" new file mode 100644 index 0000000000..0aa31eaac1 --- /dev/null +++ "b/Kruskal\342\200\231s_Algorithm.js" @@ -0,0 +1,76 @@ +var V = 5; +var parent = Array(V).fill(0); +var INF = 1000000000; + +// Find set of vertex i +function find(i) +{ + while (parent[i] != i) + i = parent[i]; + return i; +} + +// Does union of i and j. It returns +// false if i and j are already in same +// set. +function union1(i, j) +{ + var a = find(i); + var b = find(j); + parent[a] = b; +} + +// Finds MST using Kruskal's algorithm +function kruskalMST(cost) +{ + var mincost = 0; // Cost of min MST. + + // Initialize sets of disjoint sets. + for (var i = 0; i < V; i++) + parent[i] = i; + + // Include minimum weight edges one by one + var edge_count = 0; + while (edge_count < V - 1) + { + var min = INF, a = -1, b = -1; + for (var i = 0; i < V; i++) + { + for (var j = 0; j < V; j++) + { + if (find(i) != find(j) && cost[i][j] < min) + { + min = cost[i][j]; + a = i; + b = j; + } + } + } + + union1(a, b); + document.write(`Edge ${edge_count++}:(${a}, + ${b}) cost:${min}
`); + mincost += min; + } + document.write(`
Minimum cost= ${mincost}
`); +} + +// Driver code + +/* Let us create the following graph + 2 3 + (0)--(1)--(2) + | / \ | + 6| 8/ \5 |7 + | / \ | + (3)-------(4) + 9 */ +var cost = [ + [INF, 2, INF, 6, INF], + [2, INF, 3, 8, 5], + [INF, 3, INF, INF, 7], + [6, 8, INF, INF, 9], + [INF, 5, 7, 9, INF]]; +// Print the solution +kruskalMST(cost); +