Я думаю, что вы можете использовать максимальное совпадение в алгоритме двудольного графа для этого (см., Например, здесь ), который выполняется за полиномиальное время.
Мы представим вашу проблему, назначивкаждая команда, T, 8 вершин (Th1, ..., Th8) в «домашнем» подмножестве вершин и 8 вершин (Ta1, ..., Ta8) в «выездном» подмножестве вершин.
Теперь мы ищем максимальное совпадение между «домашним» и «отсутствующим» подмножествами так, чтобы каждое ребро (H, A) в сопоставлении удовлетворяло свойству того, что H находится в «домашнем» подмножестве, «A"находится в подмножестве" вдали ", а H и A принадлежат разным командам.