输入一个图,用普里姆算法求最小生成树代码全部代码
时间: 2024-02-18 15:00:08 浏览: 74
普里姆算法(Prim算法)是用来求解加权无向连通图的最小生成树的算法。以下是使用邻接矩阵表示图的Prim算法的全部代码:
```python
INF = float("inf") # 定义正无穷
def prim(graph):
n = len(graph)
# 初始化
lowcost = [INF] * n
closest = [0] * n
visited = [False] * n
# 选取起始点
lowcost[0] = 0
# 依次加入n-1个点
for i in range(n-1):
# 找到距离当前生成树最近的点
mincost = INF
for j in range(n):
if not visited[j] and lowcost[j] < mincost:
mincost = lowcost[j]
k = j
# 将该点加入生成树
visited[k] = True
# 更新lowcost和closest
for j in range(n):
if not visited[j] and graph[k][j] < lowcost[j]:
lowcost[j] = graph[k][j]
closest[j] = k
# 输出最小生成树
for i in range(1, n):
print(closest[i], "-", i, ":", graph[i][closest[i]])
```
其中,`graph`是一个n*n的邻接矩阵,表示图的连通情况和边的权值。例如,`graph[i][j]`表示节点i和节点j之间的边的权值。
阅读全文