最小生成树Prim算法
时间: 2023-11-20 13:54:28 浏览: 119
最小生成树Prim算法是一种用于解决加权无向连通图的最小生成树问题的算法。它基于贪心策略,每次选取一个离生成树距离最小的点加入生成树,最终实现最小生成树。下面是该算法的步骤:
1. 任选一个点作为起点,将其加入生成树中。
2. 找到与生成树相邻的所有边中权值最小的边,将其连接的点加入生成树中。
3. 重复步骤2,直到所有点都被加入生成树中。
下面是Prim算法的Python代码实现:
```python
定义一个函数来实现Prim算法
def prim(graph):
# 初始化生成树和已经加入生成树的点集合
mst = []
visited = set()
# 任选一个点作为起点
start_node = list(graph.keys())[0]
visited.add(start_node)
# 循环直到所有点都被加入生成树中
while len(visited) < len(graph):
# 找到与生成树相邻的所有边中权值最小的边
min_edge = None
for node in visited:
for neighbor, weight in graph[node].items():
if neighbor not in visited:
if min_edge is None or weight < min_edge[2]:
min_edge = (node, neighbor, weight)
# 将连接的点加入生成树中
visited.add(min_edge[1])
# 将边加入生成树中
mst.append(min_edge)
return mst
```
阅读全文