总结一下:
如果选 0为起点,low_cost[i]表示以 0这个起点到i 这个终点的权值,我们找最小的权值的终点i,然后以i为起点,去更新low_cost[]这个数组,如果与i相连的数是j,现在有两种情况,j与0相连,j与i相连但不与0相连。如果j也与0相连,我们找0到j和i到j这两者的最小距离,然后用这个最小的距离更新low_cost[j]。如果j不与0相连,那么就直接填上low_cost[j]
代码分析一下:
matrix[i][j]=m意思是以i为起点j为终点的权值为m
path[i]=a,意思是i起点连的是a终点
由此我们可见数组可以表达的意思可以是那几个变量之间的相关性
visit数组存的是目前最小生成树上已经有的结点,我们最小生成树最终是要有所有的结点的
先找一个起点,然后把与起点相连的路径都存到low_cost里
找一个终点,起点到他的权值最小,将这个终点进行标记(证明已经将其加入到最小生成树里面了),并且记录最小路径和的sum要加上他的权值
由于low_cost目前只存了与起点相连的路径,现在最小生成树里面加入了一个新的结点,那么我们就需要更新low_cost数组,把与这个新的结点相连的路径加入到low_cost数组里,路径就要考虑终点,这个终点一定不是在最小生成树里的,所以要用到visit数组,然后如果matrix[min_cost_index][j]就是这个新节点到某一终点的权值比low_cost[j]小的话,就更新low_cost[j]