Kruskal算法是解决最小生成树问题的一种算法。其算法过程是一开始,所有点都是孤立的点。对所有的边从小到大排序每次选取权值最小且其两个顶点还不连通的边连通选取的边的两个顶点重复这个过程,直到所有的顶点连通问题:什么时候停止循环? 答案:选取了n-1条边问题:为什么是n-1条边?选取了n-1条边就保证n个顶点连通了?答案:n个顶点连通,且不构成回路,需要n-1条边。那存在n-1条边,并且不构成回路,那么通过这n-1条边,n个顶点就是连通的。在Kruskal算法中,每次选取一条权值最小边且其两个顶点还不连通,每次选一条边,有三种情况:一是两个顶点自成一派,都是孤立的点,二是一个顶点在已知连通分量里,另一个顶点是孤立的点,三是两个顶点在两个未连通的已知连通分量里,第一种情况的两个顶点连通后,成为单独的连通分量,这种情况增加一条边,增加两个顶点。第二种情况的两个顶点连通后,已知连通分量增加一个顶点,这种情况增加一条边,增加一个顶点。第三种情况的两个顶点连通后,两个未连通的已知连通分量连通了,这种情况增加一条边,顶点的个数不变。问题是选取n-1条这样的边,为什么n个顶点就都连通了?。如果n个顶