Handled type annotation

This commit is contained in:
Joelkurien 2024-10-28 13:17:56 +11:00
parent 1fca8c6fc4
commit 9a4e1d333f

View File

@ -8,19 +8,19 @@ import sys
class JohnsonGraph: class JohnsonGraph:
def __init__(self) -> None: def __init__(self) -> None:
self.edges: list[str] = [] self.edges: list[str] = []
self.graph: dict[str, int] = {} self.graph: dict[str, list] = {}
# add vertices for a graph # add vertices for a graph
def add_vertices(self, u) -> None: def add_vertices(self, u:int) -> None:
self.graph[u] = [] self.graph[u] = []
# assign weights for each edges formed of the directed graph # assign weights for each edges formed of the directed graph
def add_edge(self, u, v, w) -> None: def add_edge(self, u:str, v:str, w:int) -> None:
self.edges.append((u, v, w)) self.edges.append((u, v, w))
self.graph[u].append((v, w)) self.graph[u].append((v, w))
# perform a dijkstra algorithm on a directed graph # perform a dijkstra algorithm on a directed graph
def dijkstra(self, s) -> dict: def dijkstra(self, s:str) -> dict:
distances = {vertex: sys.maxsize - 1 for vertex in self.graph} distances = {vertex: sys.maxsize - 1 for vertex in self.graph}
pq = [(0, s)] pq = [(0, s)]
distances[s] = 0 distances[s] = 0
@ -37,7 +37,7 @@ class JohnsonGraph:
return distances return distances
# carry out the bellman ford algorithm for a node and estimate its distance vector # carry out the bellman ford algorithm for a node and estimate its distance vector
def bellman_ford(self, s) -> dict: def bellman_ford(self, s:str) -> dict:
distances = {vertex: sys.maxsize - 1 for vertex in self.graph} distances = {vertex: sys.maxsize - 1 for vertex in self.graph}
distances[s] = 0 distances[s] = 0
@ -51,7 +51,7 @@ class JohnsonGraph:
# perform the johnson algorithm to handle the negative weights that # perform the johnson algorithm to handle the negative weights that
# could not be handled by either the dijkstra # could not be handled by either the dijkstra
# or the bellman ford algorithm efficiently # or the bellman ford algorithm efficiently
def johnson_algo(self) -> dict: def johnson_algo(self) -> list[dict]:
self.add_vertices("#") self.add_vertices("#")
for v in self.graph: for v in self.graph:
if v != "#": if v != "#":