Добавить 'графы/прима-минимальное-оставное-дерево.md'
This commit is contained in:
30
графы/прима-минимальное-оставное-дерево.md
Normal file
30
графы/прима-минимальное-оставное-дерево.md
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
К примеру надо найти минимальную длину всех дорог межу городами
|
||||||
|
|
||||||
|
```
|
||||||
|
matr = [
|
||||||
|
[0, -1, 15, 20, 15],
|
||||||
|
[-1, 0, 60, 50, 80],
|
||||||
|
[15, 60, 0, 50, 10],
|
||||||
|
[20, 50, 50, 0, 30],
|
||||||
|
[15, 80, 10, 30, 0]
|
||||||
|
]
|
||||||
|
|
||||||
|
def search_min(tr, vizited):#1 место для оптимизации
|
||||||
|
min=max(tr)
|
||||||
|
for ind in vizited:
|
||||||
|
for index, elem in enumerate(tr[ind]):
|
||||||
|
if elem>0 and elem<min and index not in vizited:
|
||||||
|
min=elem#веса путей
|
||||||
|
index2=index# индекс города
|
||||||
|
return [min, index2]
|
||||||
|
|
||||||
|
def prim(matr):
|
||||||
|
toVisit=[i for i in range(1,len(matr))]# города кроме начального(0)
|
||||||
|
vizited=[0]
|
||||||
|
result=[0]# началос 1 города
|
||||||
|
for index in toVisit:
|
||||||
|
weight, ind=search_min(matr, vizited)
|
||||||
|
result.append(weight)#в результат будут заноситься веса
|
||||||
|
vizited.append(ind)# содержит карту пути
|
||||||
|
return result
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user