Skip to content

Commit 760234c

Browse files
committed
Improve dijkstra prints
1 parent 130c753 commit 760234c

File tree

2 files changed

+21
-23
lines changed

2 files changed

+21
-23
lines changed

solutions/dijkstra/dijkstra.py

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
11
from math import inf
22

3+
34
class Dijkstra:
45
def __init__(self, graph):
56
self.graph = graph
67
self.n_vertices = len(graph)
78

8-
def print_distance(self, dist, target=None):
9+
def print_distance(self, dist, target=None, show_print=None):
910
if target:
10-
print("distance:", dist[target])
11+
if show_print:
12+
print("distance:", dist[target])
1113
return dist[target]
12-
13-
print("Vertex \t Distance from Source")
14-
for node in range(self.n_vertices):
15-
print(node, "\t\t", dist[node])
14+
if show_print:
15+
print("Vertex \t Distance from Source")
16+
for node in range(self.n_vertices):
17+
print(node, "\t\t", dist[node])
1618

1719
def print_path(self, path, target):
1820
queue = [target]
1921
build_path = []
2022
while True:
21-
prev=queue.pop(0)
23+
prev = queue.pop(0)
2224
build_path.append(prev)
2325
if path[prev] is None:
2426
break
@@ -27,33 +29,30 @@ def print_path(self, path, target):
2729
print("path:", " -> ".join([str(i) for i in build_path]))
2830

2931
def min_distance(self, dist, visited):
30-
min = inf # Initialize minimum distance for next node
31-
for v in range(self.n_vertices): # get nearest vertex not visited
32-
if dist[v] < min and visited[v] == False:
32+
min = inf # Initialize minimum distance for next node
33+
for v in range(self.n_vertices): # get nearest vertex not visited
34+
if dist[v] < min and visited[v] is False:
3335
min = dist[v]
3436
min_index = v
35-
3637
return min_index
3738

38-
def dijkstra(self, src, target=None): # O(n2)
39+
def dijkstra(self, src, target=None, show_print=None): # O(n2)
3940
visited = [False] * self.n_vertices
4041
dist = [inf] * self.n_vertices
4142
dist[src] = 0
42-
path_prev = {src:None}
43-
43+
path_prev = {src: None}
4444
for _ in range(self.n_vertices):
4545
# Get the minimum distance vertex not visited yet.
4646
# u is always equal to src in first iteration.
4747
u = self.min_distance(dist, visited)
4848
visited[u] = True
49-
5049
# Update distance value of the adjacent vertices
5150
for v in range(self.n_vertices):
52-
if (self.graph[u][v] > 0 and # Check if has edge
53-
visited[v] == False and
51+
if (self.graph[u][v] > 0 and # Check if has edge
52+
visited[v] is False and
5453
dist[v] > dist[u] + self.graph[u][v]):
5554
dist[v] = dist[u] + self.graph[u][v]
5655
path_prev.update({v: u})
57-
58-
self.print_path(path_prev, target)
59-
return self.print_distance(dist, target)
56+
if show_print:
57+
self.print_path(path_prev, target)
58+
return self.print_distance(dist, target, show_print)

solutions/dijkstra/instance.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,5 @@
1111
[0, 0, 2, 0, 0, 0, 6, 7, 0]]
1212

1313
instance = Dijkstra(graph)
14-
15-
assert instance.dijkstra(src=0,target=4) == 21
16-
assert instance.dijkstra(src=1,target=5) == 12
14+
assert instance.dijkstra(src=0, target=4, show_print=True) == 21
15+
assert instance.dijkstra(src=1, target=5, show_print=True) == 12

0 commit comments

Comments
 (0)