1 package baseCode.algorithm.learning.unsupervised.cluster;
2
3 import java.util.Collection;
4 import java.util.Iterator;
5
6 import baseCode.common.Distanceable;
7
8 /***
9 * <hr>
10 * <p>
11 * Copyright (c) 2004 Columbia University
12 *
13 * @author pavlidis
14 * @version $Id: AverageLinkageDistancer.java,v 1.3 2004/08/02 15:03:43 pavlidis Exp $
15 */
16 public class AverageLinkageDistancer implements Distancer {
17
18
19
20
21
22
23 public double distance( Distanceable a, Distanceable b ) {
24
25 double mean = 0.0;
26 int numComparisons = 0;
27
28 Collection ac = a.toCollection();
29 Collection bc = b.toCollection();
30
31 for ( Iterator iter = ac.iterator(); iter.hasNext(); ) {
32 Distanceable elementA = ( Distanceable ) iter.next();
33
34 for ( Iterator iterator = bc.iterator(); iterator
35 .hasNext(); ) {
36 Distanceable elementB = ( Distanceable ) iterator.next();
37 mean += elementA.distanceTo( elementB );
38 numComparisons++;
39 }
40
41 }
42
43 return mean / numComparisons;
44
45 }
46 }