The sort package contains classes implementing different sort
strategies, for instance to sort the rows of the initial kernel matrix. Sorting
has a large impact on the number of intermediary modes, and hence on
performance and memory usage of the double description method.
Among the most efficient strategies in practice are the following:
- MostZerosOrAbsLexMin, default strategy, uses
{@link ch.javasoft.metabolic.efm.sort.MostZerosSorter MostZeros} as primary
strategy, and
{@link ch.javasoft.metabolic.efm.sort.AbsLexMinSorter AbsLexMin}
if the primary strategy yields equality between two sort rows.
- MostZerosOrFewestNegPos, uses
{@link ch.javasoft.metabolic.efm.sort.MostZerosSorter MostZeros} as primary
strategy, and
{@link ch.javasoft.metabolic.efm.sort.FewestNegPosSorter FewestNegPos}
if the primary strategy yields equality between two sort rows.
- FewestNegPosOrMostZeros, uses
{@link ch.javasoft.metabolic.efm.sort.FewestNegPosSorter FewestNegPos} as
primary strategy, and
{@link ch.javasoft.metabolic.efm.sort.MostZerosSorter MostZeros}
if the primary strategy yields equality between two sort rows.
- {@link ch.javasoft.metabolic.efm.sort.MostZerosSorter MostZeros},
maximizes the number of zero entries in a row.
- {@link ch.javasoft.metabolic.efm.sort.FewestNegPosSorter FewestNegPos},
tries to minimize the number of adjacency candidates by minimizing the
product of positive and negative entries in a row.
- {@link ch.javasoft.metabolic.efm.sort.LexMinSorter LexMinSorter},
sorts the rows lexicographically.
- {@link ch.javasoft.metabolic.efm.sort.AbsLexMinSorter AbsLexMinSorter},
sorts the rows lexicographically, considering absolute values.