perl-Algorithm-Pair-Best2

Select Pairings (Designed for Go Tournaments, but Can Be Used for Anything)

This is a re-write of Algorithm::Pair::Best. The interface is simplified and the implementation is significantly streamlined. After creating an Algorithm::Pair::Best2 object (with ->*new*), *add* items to the list of items (i.e: players) to be paired. The final list must contain an even number of items or *pick*ing the pairs will throw an exception. Algorithm::Pair::Best2->*pick* explores all combinations of items and returns the pairing list with the best (lowest) score. This can be an expensive proposition - the number of combinations goes up very fast with respect to the number of items: items combinations 2 1 (1) 4 3 (1 * 3) 6 15 (1 * 3 * 5) 8 105 (1 * 3 * 5 * 7) 10 945 (1 * 3 * 5 * 7 * 9 12 10395 (1 * 3 * 5 * 7 * 9 * 11) 14 135135 (1 * 3 * 5 * 7 * 9 * 11 * 13) It is clearly unreasonable to try to pair a significant number of items. Trying to completely pair even 30 items would take too long. Fortunately, there is a way to get pretty good results for big lists, even if they're not perfect. Instead of trying to pair the whole list at once, Algorithm::Pair::Best2 pairs a series of smaller groups in a sliding window to get good 'local' results. The *->new* method accepts a *window* option to limit the number of pairs in the sliding window. The *window* option can also be overridden by calling *pick* with an explicit window argument: $pair->pick($window); The list should be at least partially sorted so that reasonable pairing candidates are within the 'sliding window' of each other. Otherwise the final results may not be globally 'best', but only locally good. For (e.g.) a tournament, sorting by rank is sufficient. Here's how a window value of 5 works: the best list for items 1 through 10 (5 pairs) is found. Save the pairing for the top two items and then slide the window down to pair items 2 through 12. Save the top pairing from this result and slide down again to items 4 through 14. Keep sliding the window down until we reach the last 10 items (which are completed in one iteration). In this way, a large number of pairings can be completed without taking factorial time.

There is no official package available for openSUSE Leap 15.5

Distributions

openSUSE Tumbleweed

openSUSE Leap 15.5

openSUSE Leap 15.4