Prim算法的python实现
Posted joker-yan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prim算法的python实现相关的知识,希望对你有一定的参考价值。
#Prim算法的python实现
介绍:首先prim算法我使用的是与Dijkstra实现一致的方式方法,代码部分甚至不需要过多地修改就可以直接拿函数去使用.
def prim(matrix,non_matrix,n,Maxline):
comp=0
uncomp=i+1 for i in range(n-1)
while((not uncomp)!=True):
list_uncomp=list(uncomp)
list_comp=list(comp)#将集合comp转换成列表进行索引操作
Min=Maxline
for i in range(len(list_uncomp)):
v_point=list_uncomp[i] #假设要取的在集合uncomp的点
for j in range(len(list_comp)):
uv_point=list_comp[j] #取出已知集合comp的一个点
if(matrix[v_point][uv_point]<Min or matrix[uv_point][v_point]<Min):
Min=matrix[v_point][uv_point]
get_point=v_point #拟定要从uncomp取出的点
ready_point=uv_point #拟定要从comp取出的点
print("(,)".format(ready_point,get_point))
non_matrix[ready_point][get_point]=1
uncomp=set(list_uncomp) #将列表list_uncomp转换成集合uncomp
uncomp.remove(get_point)
comp.add(get_point)
print(matrix)
return non_matrix
matrix=[[999,6,1,5,999,999],
[6,999,5,999,3,999],
[1,5,999,5,6,4],
[5,999,5,999,999,2],
[999,3,6,999,999,6],
[999,999,4,2,6,999]]
non_matrix=[[0,0,0,0,0,0],
[0,0,0,0,0,0],
[0,0,0,0,0,0],
[0,0,0,0,0,0],
[0,0,0,0,0,0],
[0,0,0,0,0,0]]
find=prim(matrix,non_matrix,6,999)
print(find)
前提需要我们把列表放入函数参数。
总结
Prim算法与Dijkstra算法十分地相识,都是基于最短加权边来进行路径的搜索,从而将搜索的边加入集合汇总输出。
以上是关于Prim算法的python实现的主要内容,如果未能解决你的问题,请参考以下文章