|
| 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