实现描述
如图:
Prim算法的基本思想是从一个顶点开始,逐步构建最小生成树。具体步骤如下:
- 随机选取一个顶点作为起始点,并将其加入最小生成树的集合中。
- 从该顶点出发,选择一条边连接到其他未被访问的顶点中的最小权值边。
- 将该顶点加入到最小生成树的集合中,并标记为已访问。
- 重复步骤2和步骤3,直到最小生成树包含所有顶点。
与Kruskal算法相比,Kruskal是选择最小边,通过判断连通性加入最小生成树;
Prim算法是选择点,构成最小生成树,然后选择未加入的点,通过权重判断是否能加入最小生成树;
下面是详细的构建过程:
首先加入index=0的点,此时最小生成树包含了只有0;
最小生成树此时节点[0],其他各个节点到最小生成树距离表:
索引 | minDistance(所有节点到最小生成树的最小距离) | nodeInTheTree(记录节点是否在最小生成树里面) |
---|---|---|
0 | true | |
1 | 5 | <