Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.34 KB | None | 0 0
  1. def search_min(tr, vizited):#1 место для оптимизации
  2.     max=-1
  3.     for i in range(len(tr)):
  4.         for j in range(len(tr[i])):
  5.             if tr[i][j]>max:
  6.                 max=tr[i][j]
  7.     min=max
  8.     for ind in vizited:
  9.         for index, elem in enumerate(tr[ind]):
  10.             if elem>0 and elem<min and index not in vizited:
  11.                 min=elem#веса путей
  12.                 index2=index# индекс города
  13.     return [min, index2]
  14.  
  15. def prim(matr):
  16.     toVisit=[i for i in range(1,len(matr))]# города кроме начального(0)
  17.     vizited=[0]
  18.     result=[0]# начнем с минска
  19.     for index in toVisit:
  20.         weight, ind=search_min(matr, vizited)
  21.         result.append(weight)#в результат будут заноситься веса
  22.         vizited.append(ind)# содержит карту пути
  23.     return result
  24.  
  25. matr = [
  26.          [1,2,1],
  27.          [2,3,2],
  28.          [3,1,3],
  29.        ]
  30. nm=[]
  31. m=[]
  32. for i in range(len(matr)):
  33.     for j in range(len(matr)):
  34.         m.append(-1)
  35.     nm.append(m)
  36.     m=[]
  37. for i in range(len(nm)):
  38.     for j in range(len(nm[i])):
  39.         if i==j:
  40.             nm[i][j]=0
  41.  
  42. for st in range(len(matr)):
  43.     i=matr[st][0]-1
  44.     j=matr[st][1]-1
  45.     nm[i][j]=matr[st][2]
  46.     nm[j][i] = matr[st][2]
  47.  
  48. print(sum(prim(nm)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement