Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- import random
- # adj = [
- # #список смежности
- # [1,3], # 0
- # [0,3,4,5], # 1
- # [4,5], # 2
- # [0,1,5], # 3
- # [1,2], # 4
- # [1,2,3] # 5
- # ]
- # level = [-1] * len(adj)
- # #список уровней вершин
- # def bfs(s):
- # global level
- # level[s] = 0
- # # уровень начальной вершины
- # queue = [s]
- # # добавляем начальную вершину в очередь
- # while queue:
- # # пока там что-то есть
- # # print("Before pop %s",queue)
- # v = queue.pop(0)
- # # извлекаем вершину
- # # print("After pop %s",queue)
- # for w in adj[v]:
- # # запускаем обход из вершины v
- # # print("Mi poseshali %s", level[w])
- # if level[w] is -1:
- # # проверка на посещенность
- # queue.append(w)
- # # добавление вершины в очередь
- # level[w] = level[v] + 1
- # # подсчитываем уровень вершины
- # for i in range(len(adj)):
- # if level[i] is -1:
- # bfs(i)
- # # на случай, если имеется несколько компонент связности
- # print(level[2])
- # # уровень вершины 2
- matrix = []
- my_list = []
- for y in range(4):
- v = random.randint(0,1)
- print(v)
- my_list.append(v)
- matrix.append(my_list)
- print(my_list)
- print(matrix)
- def Dijkstra(N, S, matrix):
- valid = [True]*N
- weight = [1000000]*N
- weight[S] = 0
- for i in range(N):
- min_weight = 1000001
- ID_min_weight = -1
- for i in range(N):
- if valid[i] and weight[i] < min_weight:
- min_weight = weight[i]
- ID_min_weight = i
- for i in range(N):
- if weight[ID_min_weight] + matrix[ID_min_weight][i] < weight[i]:
- weight[i] = weight[ID_min_weight] + matrix[ID_min_weight][i]
- valid[ID_min_weight] = False
- return weight
- # print(Dijkstra(4,1,matrix))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement