public ClusterPair getMin() { ClusterPair min = null; PriorityQueue<ClusterPair> minpq = null; for (PriorityQueue<ClusterPair> pq : distancesIndex.values()) { ClusterPair cp = pq.peek(); if (cp != null && (min == null || cp.getLinkageDistance() < min.getLinkageDistance())) { min = cp; minpq = pq; } } minpq.poll(); distancesIndex.get(min.getlCluster()).remove(min); distancesIndex.get(min.getrCluster()).remove(min); return min; }
/** * Compute some kind of unique ID for a given cluster pair. * @return The ID */ String hashCodePair(ClusterPair link) { return hashCodePair(link.getlCluster(), link.getrCluster()); }
/** * Compute some kind of unique ID for a given cluster pair. * @return The ID */ String hashCodePair(ClusterPair link) { return hashCodePair(link.getlCluster(), link.getrCluster()); }
Cluster<T> left = link.getlCluster(); Cluster<T> right = link.getrCluster();
/** * @return a new ClusterPair with the two left/right inverted */ public ClusterPair reverse() { return new ClusterPair(getrCluster(), getlCluster(), getLinkageDistance()); }
/** * @return a new ClusterPair with the two left/right inverted */ public ClusterPair reverse() { return new ClusterPair(getrCluster(), getlCluster(), getLinkageDistance()); }
clusters.remove(minDistLink.getlCluster()); Cluster oldClusterL = minDistLink.getlCluster(); Cluster oldClusterR = minDistLink.getrCluster(); Cluster newCluster = minDistLink.agglomerate(null);
if (minDistLink != null) { clusters.remove(minDistLink.getrCluster()); clusters.remove(minDistLink.getlCluster()); Cluster oldClusterL = minDistLink.getlCluster(); Cluster oldClusterR = minDistLink.getrCluster(); Cluster newCluster = minDistLink.agglomerate(null);
if (minDistLink != null) { clusters.remove(minDistLink.getrCluster()); clusters.remove(minDistLink.getlCluster()); Cluster oldClusterL = minDistLink.getlCluster(); Cluster oldClusterR = minDistLink.getrCluster(); Cluster newCluster = minDistLink.agglomerate(null);