@ Override public Assignments < E > split ( AbstractMTree < ? , N , E , ? > tree , N node ) { final int n = node . getNumEntries ( ) ; double [ ] [ ] distanceMatrix = computeDistanceMatrix ( tree , node ) ; double miSumCR = Double . POSITIVE_INFINITY ; boolean leaf = node . isLeaf ( ) ; Assignments < E > bestAssignment = null ; for ( int i = 0 ; i < n ; i ++ ) { for ( int j = i + 1 ; j < n ; j ++ ) { Assignments < E > currentAssignments = distributor . distribute ( node , i , distanceMatrix [ i ] , j , distanceMatrix [ j ] ) ; double maxCR = Math . max ( currentAssignments . computeFirstCover ( leaf ) , currentAssignments . computeSecondCover ( leaf ) ) ; if ( maxCR < miSumCR ) { miSumCR = maxCR ; bestAssignment = currentAssignments ; } } } return bestAssignment ; }
Selects two objects of the specified node to be promoted and stored into the parent node . The mM - RAD strategy considers all possible pairs of objects and after partitioning the set of entries promotes the pair of objects for which the larger of the two covering radiuses is minimum .