kruskal的MST算法,过程是先找出图中的最小权边,然后每一步都找剩下的最小权边,找完后判断把这个边加入本方阵营后会不会出现cycle,不出现就加入本方,出现就继续找。根据证明,这个算法是正确的,虽然正确性不是那么直观。可以用heap或者union find的数据结构来implement这个算法,来达到O(m*lg(n))的速度。
clustering就是把一个集合,及某种规则来分片。比如一堆平面上的点,规定距离小于d的分成一个cluster,或者规定分位n个cluster,然后看剩下的最小距离是多少。具体做法是,把每个点都初始化为一个cluster,先找出最小距离的那对点,然后每一步都找处于不同cluster的点对中距离最小的,然后把它们的cluster合并,直到剩下所要求的的cluster为止。这个算法其实过程和上面的kruskal很类似的。同样的,也可以用heap或者union find来加速。