Skip to content

Commit 2acb996

Browse files
authored
Merge pull request DeepNinja07x#126 from ArpitDarklord/patch-2
created Dijkstra's-Algorithm
2 parents 2d2ec4b + f1e1e0d commit 2acb996

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

Algorithms/Dijkstra's-Algorithm.py

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import sys
2+
3+
vertices = [[0, 0, 1, 1, 0, 0, 0],
4+
[0, 0, 1, 0, 0, 1, 0],
5+
[1, 1, 0, 1, 1, 0, 0],
6+
[1, 0, 1, 0, 0, 0, 1],
7+
[0, 0, 1, 0, 0, 1, 0],
8+
[0, 1, 0, 0, 1, 0, 1],
9+
[0, 0, 0, 1, 0, 1, 0]]
10+
11+
edges = [[0, 0, 1, 2, 0, 0, 0],
12+
[0, 0, 2, 0, 0, 3, 0],
13+
[1, 2, 0, 1, 3, 0, 0],
14+
[2, 0, 1, 0, 0, 0, 1],
15+
[0, 0, 3, 0, 0, 2, 0],
16+
[0, 3, 0, 0, 2, 0, 1],
17+
[0, 0, 0, 1, 0, 1, 0]]
18+
19+
20+
def to_be_visited():
21+
global visited_and_distance
22+
v = -10
23+
for index in range(num_of_vertices):
24+
if visited_and_distance[index][0] == 0 \
25+
and (v < 0 or visited_and_distance[index][1] <=
26+
visited_and_distance[v][1]):
27+
v = index
28+
return v
29+
30+
31+
num_of_vertices = len(vertices[0])
32+
33+
visited_and_distance = [[0, 0]]
34+
for i in range(num_of_vertices-1):
35+
visited_and_distance.append([0, sys.maxsize])
36+
37+
for vertex in range(num_of_vertices):
38+
39+
40+
to_visit = to_be_visited()
41+
for neighbor_index in range(num_of_vertices):
42+
43+
44+
if vertices[to_visit][neighbor_index] == 1 and \
45+
visited_and_distance[neighbor_index][0] == 0:
46+
new_distance = visited_and_distance[to_visit][1] \
47+
+ edges[to_visit][neighbor_index]
48+
if visited_and_distance[neighbor_index][1] > new_distance:
49+
visited_and_distance[neighbor_index][1] = new_distance
50+
51+
visited_and_distance[to_visit][0] = 1
52+
53+
i = 0
54+
55+
for distance in visited_and_distance:
56+
print("Distance of ", chr(ord('a') + i),
57+
" from source vertex: ", distance[1])
58+
i = i + 1

0 commit comments

Comments
 (0)