-
什么是普里姆算法?
权重:不一定是距离,有可能是成本或者价钱…
例子:我要修A村庄到B,C村庄怎么修是最低成本呢?BC之间距离近但是可能有山川修起来很难,这时候就考虑权重,不是距离。 -
图解
矩阵图 :这里代码是用pandas处理A B C D E F G A 0 5 ~ ~ 3 ~ 5 B 5 0 2 5 4 ~ ~ C ~ 2 0 ~ ~ ~ ~ D ~ 5 ~ 0 4 3 ~ E 3 4 ~ 4 0 2 3 F ~ ~ ~ 3 2 0 3 G 5 ~ ~ ~ 3 3 0
import pandas as pd
df = pd.read_excel( '14.普里姆算法-.xlsx' , index_col=0 )
print(df)
print('第0行第1列的数据为:',df.iloc[0,1])
print('第three行第二列的数据为:',df.loc['B','C'])
values = ['A'] # 求得最近的点
target = ['B', 'E','D', 'C', 'F', 'G'] # 目标点
# 算出A到所有点最近的距离
result = []
def func():
r = None # 最短的距离值
ts =None
pos = [] # 最短的距离坐标
for v in values:
for t in target:
data = df.loc[ v, t ]
if data == '~' or data == 0 or r == '~':
continue
if r == None:
r = data
if data <= r :
r = data
ts = t
pos = [ v, t ]
if pos and pos[1] not in values:
values.append(pos[1])
target.remove(ts)
result.append(pos)
print(values)
print(result)
while target:
func()
xlxs格式