def __find_pair_clusters(self, clusters):
maximum_goodness = <NUM_LIT:0.0>;<EOL>cluster_indexes = [-<NUM_LIT:1>, -<NUM_LIT:1>];<EOL>for i in range(<NUM_LIT:0>, len(clusters)):<EOL><INDENT>for j in range(i + <NUM_LIT:1>, len(clusters)):<EOL><INDENT>goodness = self.__calculate_goodness(clusters[i], clusters[j]);<EOL>if (goodness > maximum_goodness):<EOL><INDENT>maximum_goodness = goodness;<EOL>cluster_indexes = [i, j];<EOL><DEDENT><DEDENT><DEDENT>return cluster_indexes<EOL>
!
        @brief Returns pair of clusters that are best candidates for merging in line with goodness measure.
               The pair of clusters for which the above goodness measure is maximum is the best pair of clusters to be merged.

        @param[in] clusters (list): List of clusters that have been allocated during processing, each cluster is represented by list of indexes of points from the input data set.

        @return (list) List that contains two indexes of clusters (from list 'clusters') that should be merged on this step.
                It can be equals to [-1, -1] when no links between clusters.