Skip to content

Commit 346a955

Browse files
committed
Resolved issues regarding ruff testing and merge conflicts
2 parents 8286b58 + 18319a8 commit 346a955

File tree

2 files changed

+24
-23
lines changed

2 files changed

+24
-23
lines changed

DIRECTORY.md

+1
Original file line numberDiff line numberDiff line change
@@ -503,6 +503,7 @@
503503
* [Graphs Floyd Warshall](graphs/graphs_floyd_warshall.py)
504504
* [Greedy Best First](graphs/greedy_best_first.py)
505505
* [Greedy Min Vertex Cover](graphs/greedy_min_vertex_cover.py)
506+
* [Johnson Graph](graphs/johnson_graph.py)
506507
* [Kahns Algorithm Long](graphs/kahns_algorithm_long.py)
507508
* [Kahns Algorithm Topo](graphs/kahns_algorithm_topo.py)
508509
* [Karger](graphs/karger.py)

graphs/johnson_graph.py

+23-23
Original file line numberDiff line numberDiff line change
@@ -8,79 +8,79 @@ class JohnsonGraph:
88
def __init__(self):
99
self.edges = []
1010
self.graph = {}
11-
12-
#add vertices for a graph
11+
12+
# add vertices for a graph
1313
def add_vertices(self, u):
1414
self.graph[u] = []
15-
16-
#assign weights for each edges formed of the directed graph
15+
16+
# assign weights for each edges formed of the directed graph
1717
def add_edge(self, u, v, w):
1818
self.edges.append((u, v, w))
19-
self.graph[u].append((v,w))
19+
self.graph[u].append((v, w))
2020

21-
#perform a dijkstra algorithm on a directed graph
21+
# perform a dijkstra algorithm on a directed graph
2222
def dijkstra(self, s):
2323
distances = {vertex: sys.maxsize-1 for vertex in self.graph}
2424
pq = [(0,s)]
2525

2626
distances[s] = 0
2727
while pq:
2828
weight, v = heapq.heappop(pq)
29-
29+
3030
if weight > distances[v]:
3131
continue
32-
32+
3333
for node, w in self.graph[v]:
34-
if distances[v]+w < distances[node]:
35-
distances[node] = distances[v]+w
36-
heapq.heappush(pq, (distances[node], node))
34+
if distances[v] + w < distances[node]:
35+
distances[node] = distances[v] + w
36+
heapq.heappush(pq, (distances[node], node))
3737
return distances
3838

3939
#carry out the bellman ford algorithm for a node and estimate its distance vector
4040
def bellman_ford(self, s):
4141
distances = {vertex: sys.maxsize-1 for vertex in self.graph}
4242
distances[s] = 0
43-
43+
4444
for u in self.graph:
4545
for u, v, w in self.edges:
46-
if distances[u] != sys.maxsize-1 and distances[u]+w<distances[v]:
47-
distances[v] = distances[u]+w
46+
if distances[u] != sys.maxsize - 1 and distances[u] + w < distances[v]:
47+
distances[v] = distances[u] + w
4848

4949
return distances
5050

5151
#perform the johnson algorithm to handle the negative weights that
5252
# could not be handled by either the dijkstra
5353
#or the bellman ford algorithm efficiently
5454
def johnson_algo(self):
55-
5655
self.add_vertices("#")
5756
for v in self.graph:
5857
if v != "#":
5958
self.add_edge("#", v, 0)
60-
59+
6160
n = self.bellman_ford("#")
62-
61+
6362
for i in range(len(self.edges)):
6463
u, v, weight = self.edges[i]
6564
self.edges[i] = (u, v, weight + n[u] - n[v])
6665

6766
self.graph.pop("#")
6867
self.edges = [(u, v, w) for u, v, w in self.edges if u != "#"]
69-
68+
7069
for u in self.graph:
7170
self.graph[u] = [(v, weight) for x, v, weight in self.edges if x == u]
72-
71+
7372
distances = []
7473
for u in self.graph:
7574
new_dist = self.dijkstra(u)
7675
for v in self.graph:
77-
if new_dist[v] < sys.maxsize-1:
76+
if new_dist[v] < sys.maxsize - 1:
7877
new_dist[v] += n[v] - n[u]
7978
distances.append(new_dist)
8079
return distances
81-
80+
81+
8282
g = JohnsonGraph()
83-
#this a complete connected graph
83+
# this a complete connected graph
8484
g.add_vertices("A")
8585
g.add_vertices("B")
8686
g.add_vertices("C")
@@ -97,4 +97,4 @@ def johnson_algo(self):
9797
optimal_paths = g.johnson_algo()
9898
print("Print all optimal paths of a graph using Johnson Algorithm")
9999
for i, row in enumerate(optimal_paths):
100-
print(f"{i}: {row}")
100+
print(f"{i}: {row}")

0 commit comments

Comments
 (0)