摘要:
这个算法是我自己想的最笨最原始的算法,原理跟Prim类似,但不同的是这里不用处理最小优先级队列,当然算法的时间复杂度要高些(该算法针对的是无向连通图,对于有向连通图,算法原理一样,但算法代码需要做一些处理),下面看代码:1、类和树的定义可参考前面的博文。2、算法类:public class PrimAlg { public Tree MST_SimpleAlg(Graphic g,Node root) { Tree theMST = new Tree(); //最小生成树节点 Dictionar... 阅读全文
随笔档案-2012年6月24日
最小生成树算法(Kruskal算法)
2012-06-24 16:38 by java线程例子, 355 阅读, 收藏,
摘要:
算法导论看到一半,觉得还是有必要继续看,边看边试试,下面是最小生成树的Kruskal算法,这个算法原理看起来很复杂,但实现起来很简单:开始的时候是每个顶点一棵树,并将边按权重升序排列。然后从前到后按循序选边,如果当前选择的边的两个顶点分在两棵不同的树中,则将该边加入到最小生成树中,并合当前边连接的两棵树,如果边得两个顶点在相同的树中,则不做任何处理,需要注意的是这个算法是针对无向连通图的,如果是有限图,则需要在算法中做些处理,但算法原理是一样的。看代码:1、树和图相关类 /// <summary> /// 图类,由节点和边构成. /// </summary> publi 阅读全文