假如有多台计算机组成的局域网,不同计算机之间是使用光纤来连接的,如果把计算机看成是一个简单的节点,连接计算机的光纤看成是一条边,那这个局域网就可以抽象成为一个无向图:
添加图片注释,不超过 140 字(可选)
而对于这个图中的每个圆圈代表的是一个计算机,直线代表的是计算机之间的光纤连接,直线上的数字表示维护该条光纤所需要付出的成本,那现在需要降低维护成本,希望在不同计算机能够相互通信的基础上,去掉不必要的光纤连接,使得最终维护成本最少,而当把边去掉之后:
添加图片注释,不超过 140 字(可选)
而如何删除不必要的边,使得最终剩下的边在连接所有节点的情况下,维护成本最小,我们可以假设在所有节点都不连接的情况下,如何将所有边加上,这里是可以采用kruskal算法,其基本思路是每次选择一条成本最低且不形成环的边,这里的环也就是指从一个节点出发能够返回原节点的路径。
python实现kruskal算法的代码如下:
class Verte