public double ClusterDistanceAverage(Cluster oper, IDissimilarity diss) { double sum = 0; int cant = 0; foreach (Element element in oper.Elements) { foreach (Element operElement in this.Elements) { sum += diss.CalculateDissimilarity(element, operElement); cant++; } } return((double)sum / (double)cant); }
public double ClusterDistanceComplete(Cluster oper, IDissimilarity diss) { double max = double.MinValue; for (int i = 0; i < Elements.Count; i++) { for (int j = 0; j < oper.Elements.Count; j++) { double dissValue = diss.CalculateDissimilarity(Elements[i], oper.Elements[j]); if (dissValue > max) { max = dissValue; } } } return(max); }
public double ClusterDistanceSingle(Cluster oper, IDissimilarity diss) { double min = double.MaxValue; for (int i = 0; i < Elements.Count; i++) { for (int j = 0; j < oper.Elements.Count; j++) { double dissValue = diss.CalculateDissimilarity(Elements[i], oper.Elements[j]); if (dissValue < min) { min = dissValue; } } } return(min); }