From 6f4ad46e12ada8b09864b25f2fe67584aff1b212 Mon Sep 17 00:00:00 2001 From: NeoxN3il <57082943+X3NOSIZ@users.noreply.github.com> Date: Wed, 30 Oct 2019 20:47:45 +0530 Subject: [PATCH] Create Dijkstra.py --- Graph/Dijkstra.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Graph/Dijkstra.py diff --git a/Graph/Dijkstra.py b/Graph/Dijkstra.py new file mode 100644 index 0000000..fe5772e --- /dev/null +++ b/Graph/Dijkstra.py @@ -0,0 +1,36 @@ +#Dijkstra's single source shortest path algorithm + +class Graph(): + + def __init__(self, vertices): + self.vertices = vertices + self.graph = [[0 for column in range(vertices)] for row in range(vertices)] + + def min_distance(self, dist, min_dist_set): + min_dist = float("inf") + for v in range(self.vertices): + if dist[v] < min_dist and min_dist_set[v] == False: + min_dist = dist[v] + min_index = v + return min_index + + def dijkstra(self, src): + + dist = [float("inf")] * self.vertices + dist[src] = 0 + min_dist_set = [False] * self.vertices + + for count in range(self.vertices): + + #minimum distance vertex that is not processed + u = self.min_distance(dist, min_dist_set) + + #put minimum distance vertex in shortest tree + min_dist_set[u] = True + + #Update dist value of the adjacent vertices + for v in range(self.vertices): + if self.graph[u][v] > 0 and min_dist_set[v] == False and dist[v] > dist[u] + self.graph[u][v]: + dist[v] = dist[u] + self.graph[u][v] + + return dist