def minimize_matrix(self):
        """
        This method finds and returns the permutations that produce the lowest
        ewald sum calls recursive function to iterate through permutations
        """
        if self._algo == EwaldMinimizer.ALGO_FAST or \
                        self._algo == EwaldMinimizer.ALGO_BEST_FIRST:
            return self._recurse(self._matrix, self._m_list,
                                 set(range(len(self._matrix))))