diff --git a/Prims Algorithm/Prims Algorithm.py b/Prims Algorithm/Prims Algorithm.py new file mode 100644 index 0000000..eaebf71 --- /dev/null +++ b/Prims Algorithm/Prims Algorithm.py @@ -0,0 +1,45 @@ +#prims algorithm +import sys + +class Graph: + def __init__(self,vertices): + self.vert=vertices + self.AM=[[0 for i in range(self.vert)]for j in range(self.vert)] + def addEdge(self,v1,v2,wt): + self.AM[v1][v2]=wt + self.AM[v2][v1]=wt + + def getMinVertex(self,visited,weight): + minVertex=-1 + for i in range(self.vert): + if visited[i]==False and (minVertex==-1 or weight[minVertex]>weight[i]): + minVertex=i + return minVertex + + def prims(self): + visited=[False for i in range(self.vert)] + parent=[-1 for i in range(self.vert)] + weight=[sys.maxsize for i in range(self.vert)] + weight[0]=0 + for i in range(self.vert-1): + minVertex=self.getMinVertex(visited,weight) + visited[minVertex]=True + for j in range(self.vert): + if visited[j]==False and self.AM[minVertex][j]>0: + if weight[j]>self.AM[minVertex][j]: + weight[j]=self.AM[minVertex][j] + parent[j]=minVertex + for i in range(1,self.vert): + if i