From a35eaa7832db16547739924c6743332cb0a47e5f Mon Sep 17 00:00:00 2001
From: Sayani Roy <52422374+sayaniroy579@users.noreply.github.com>
Date: Thu, 20 Oct 2022 20:08:55 +0530
Subject: [PATCH] =?UTF-8?q?Create=20Dijkstra=E2=80=99s=20Shortest=20Path?=
=?UTF-8?q?=20Algorithm.js?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...a\342\200\231s Shortest Path Algorithm.js" | 110 ++++++++++++++++++
1 file changed, 110 insertions(+)
create mode 100644 "Dijkstra\342\200\231s Shortest Path Algorithm.js"
diff --git "a/Dijkstra\342\200\231s Shortest Path Algorithm.js" "b/Dijkstra\342\200\231s Shortest Path Algorithm.js"
new file mode 100644
index 0000000..909d5ca
--- /dev/null
+++ "b/Dijkstra\342\200\231s Shortest Path Algorithm.js"
@@ -0,0 +1,110 @@
+// A Javascript program for Dijkstra's single
+// source shortest path algorithm.
+// The program is for adjacency matrix
+// representation of the graph
+let V = 9;
+
+// A utility function to find the
+// vertex with minimum distance
+// value, from the set of vertices
+// not yet included in shortest
+// path tree
+function minDistance(dist,sptSet)
+{
+
+ // Initialize min value
+ let min = Number.MAX_VALUE;
+ let min_index = -1;
+
+ for(let v = 0; v < V; v++)
+ {
+ if (sptSet[v] == false && dist[v] <= min)
+ {
+ min = dist[v];
+ min_index = v;
+ }
+ }
+ return min_index;
+}
+
+// A utility function to print
+// the constructed distance array
+function printSolution(dist)
+{
+ document.write("Vertex \t\t Distance from Source
");
+ for(let i = 0; i < V; i++)
+ {
+ document.write(i + " \t\t " +
+ dist[i] + "
");
+ }
+}
+
+// Function that implements Dijkstra's
+// single source shortest path algorithm
+// for a graph represented using adjacency
+// matrix representation
+function dijkstra(graph, src)
+{
+ let dist = new Array(V);
+ let sptSet = new Array(V);
+
+ // Initialize all distances as
+ // INFINITE and stpSet[] as false
+ for(let i = 0; i < V; i++)
+ {
+ dist[i] = Number.MAX_VALUE;
+ sptSet[i] = false;
+ }
+
+ // Distance of source vertex
+ // from itself is always 0
+ dist[src] = 0;
+
+ // Find shortest path for all vertices
+ for(let count = 0; count < V - 1; count++)
+ {
+
+ // Pick the minimum distance vertex
+ // from the set of vertices not yet
+ // processed. u is always equal to
+ // src in first iteration.
+ let u = minDistance(dist, sptSet);
+
+ // Mark the picked vertex as processed
+ sptSet[u] = true;
+
+ // Update dist value of the adjacent
+ // vertices of the picked vertex.
+ for(let v = 0; v < V; v++)
+ {
+
+ // Update dist[v] only if is not in
+ // sptSet, there is an edge from u
+ // to v, and total weight of path
+ // from src to v through u is smaller
+ // than current value of dist[v]
+ if (!sptSet[v] && graph[u][v] != 0 &&
+ dist[u] != Number.MAX_VALUE &&
+ dist[u] + graph[u][v] < dist[v])
+ {
+ dist[v] = dist[u] + graph[u][v];
+ }
+ }
+ }
+
+ // Print the constructed distance array
+ printSolution(dist);
+}
+
+// Driver code
+let graph = [ [ 0, 4, 0, 0, 0, 0, 0, 8, 0 ],
+ [ 4, 0, 8, 0, 0, 0, 0, 11, 0 ],
+ [ 0, 8, 0, 7, 0, 4, 0, 0, 2 ],
+ [ 0, 0, 7, 0, 9, 14, 0, 0, 0],
+ [ 0, 0, 0, 9, 0, 10, 0, 0, 0 ],
+ [ 0, 0, 4, 14, 10, 0, 2, 0, 0],
+ [ 0, 0, 0, 0, 0, 2, 0, 1, 6 ],
+ [ 8, 11, 0, 0, 0, 0, 1, 0, 7 ],
+ [ 0, 0, 2, 0, 0, 0, 6, 7, 0 ] ]
+dijkstra(graph, 0);
+