java实现 聚类算法之MST算法(二)

2014-11-24 08:51:33 · 作者: · 浏览: 1
minJ=j;
55
}
56
}
57
}
58
}
59
}
60
if(minI>-1){
61
edge=new Edge(minI,minJ,minds);
62
}
63
return edge;
64
}
65

66
// 计算空间距离
67
private double getDistance(City city1, City city2) {
68
double distance=Math.pow(city1.getX()-city2.getX(),2)+Math.pow(city1.getY()-city2.getY(),2);
69
return Math.sqrt(distance);
70

71
}
72

73

74
}
第一步肯定是算出临近距离矩阵

3,测试一下

01
public static void main(String[] args) {
02
List citys = new ArrayList();
03

04
City city0 = new City();
05
city0.setName("北 京");
06
city0.setX(116.28);
07
city0.setY(39.54);
08
citys.add(city0);
09

10
City city1 = new City();
11
city1.setName("上 海");
12
city1.setX(121.29);
13
city1.setY(31.14);
14
citys.add(city1);
15

16
City city2 = new City();
17
city2.setName("天 津");
18
city2.setX(117.11);
19
city2.setY(39.09);
20
citys.add(city2);
21

22
City city3 = new City();
23
city3.setName("重 庆");
24
city3.setX(106.32);
25
city3.setY(29.32);
26
citys.add(city3);
27

28

City city4 = new City();
29
city4.setName("哈尔滨");
30
city4.setX(126.41);
31
city4.setY(45.45);
32
citys.add(city4);
33

34
City city5 = new City();
35
city5.setName("长 春");
36
city5.setX(125.19);
37
city5.setY(43.52);
38
citys.add(city5);
39

40
City city6 = new City();
41
city6.setName("南 京");
42
city6.setX(118.50);
43
city6.setY(32.02);
44
citys.add(city6);
45

46
City city7 = new City();
47
city7.setName("武 汉");
48
city7.setX(114.21);
49
city7.setY(30.37);
50
citys.add(city7);
51

52
City city8 = new City();
53
city8.setName("台 北");
54
city8.setX(121.31);
55
city8.setY(25.03);
56
citys.add(city8);
57

58
City city9 = new City();
59
city9.setName("香 港");
60
city9.setX(114.10);
61
city9.setY(22.18);
62
citys.add(city9);
63

64
MST mst=new MST(citys);
65
List edges=mst.compute();
66

67
System.out.println("------------------线路最佳方案如下------------------");
68
for(Edge edge:edges){
69
City from=citys.get(edge.getI());
70
City to=citys.get(edge.getJ());
71
double length=edge.getW();
72
System.out.println(edge.getI()+"========>"+edge.getJ());
73
System.out.println(from.getName()+"到"+to.getName()+",全长"+length);
74
}
75

76
}
作者:AngelAndAngel