1.带权图:要引入带权图,首先要引入最小生成树,当所有的边拥有相同的权值时。问题变得简单了,算法可以选择任意一条边加入最小生成树。但是当边有不同的权值时,需要用一些算法决策来选择正确的边。
2.带权图构建最小生成树算法:
2.1.从一个顶点开始,把它放入树的集合中,然后重复做下面的事情:
2.1.1.找到从最新的顶点到其他顶点的所有边,这些顶点不能在树的集合中,把这些边放入优先级队列,
2.1.2.找出权值最小的边,把它和它所到达的顶点放入树的集合中。重复直到所有顶点都在树的集合中。
3.实现代码:
3.1.Edge.java
1 package com.cn.powergraph; 2 /** 3 * 带权图的边类 4 * @author Administrator 5 * 6 */ 7 public class Edge { 8 public int srcVert; 9 public int destVert; 10 public int distance; 11 public Edge(int sv,int dv,int d){ 12 srcVert = sv; 13 destVert = dv; 14 distance = d; 15 } 16 }