protected static < O > void updateMatrices ( int size , MatrixParadigm mat , DBIDArrayMIter prots , PointerHierarchyRepresentationBuilder builder , Int2ObjectOpenHashMap < ModifiableDBIDs > clusters , DistanceQuery < O > dq , int c ) { final DBIDArrayIter ix = mat . ix , iy = mat . iy ; // c is the new cluster. // Update entries (at (x,y) with x > y) in the matrix where x = c or y = c // Update entries at (c,y) with y < c ix . seek ( c ) ; for ( iy . seek ( 0 ) ; iy . getOffset ( ) < c ; iy . advance ( ) ) { // Skip entry if already merged if ( builder . isLinked ( iy ) ) { continue ; } updateEntry ( mat , prots , clusters , dq , c , iy . getOffset ( ) ) ; } // Update entries at (x,c) with x > c iy . seek ( c ) ; for ( ix . seek ( c + 1 ) ; ix . valid ( ) ; ix . advance ( ) ) { // Skip entry if already merged if ( builder . isLinked ( ix ) ) { continue ; } updateEntry ( mat , prots , clusters , dq , ix . getOffset ( ) , c ) ; } }
Update the entries of the matrices that contain a distance to c the newly merged cluster .