protected PolynomialApproximation knnDistanceApproximation ( ) { int p_max = 0 ; double [ ] b = null ; for ( int i = 0 ; i < getNumEntries ( ) ; i ++ ) { MkAppEntry entry = getEntry ( i ) ; PolynomialApproximation approximation = entry . getKnnDistanceApproximation ( ) ; if ( b == null ) { p_max = approximation . getPolynomialOrder ( ) ; b = new double [ p_max ] ; } for ( int p = 0 ; p < p_max ; p ++ ) { b [ p ] += approximation . getB ( p ) ; } } for ( int p = 0 ; p < p_max ; p ++ ) { b [ p ] /= p_max ; } if ( LoggingConfiguration . DEBUG ) { StringBuilder msg = new StringBuilder ( ) ; msg . append ( "b " + FormatUtil . format ( b , FormatUtil . NF4 ) ) ; Logger . getLogger ( this . getClass ( ) . getName ( ) ) . fine ( msg . toString ( ) ) ; } return new PolynomialApproximation ( b ) ; }
Determines and returns the polynomial approximation for the knn distances of this node as the maximum of the polynomial approximations of all entries .