Комбинации из 3 с указанием c перекрытий - PullRequest
2 голосов
/ 19 июня 2020

У меня есть двенадцать элементов, пронумерованных от 1 до 12.

Я хочу создать двенадцать различных комбинаций, каждая из которых содержит три элемента, с тремя правилами:

  1. каждый элемент появляется точно в три разные комбинации
  2. никакие две комбинации не имеют более одного общего элемента
  3. (это правило более сложное; см. ниже)

Например, этот набор комбинации удовлетворяют правилам №1 и №2: [1,2,3], [1,4,9], [2,6,7], [3,8,9], [8,10,12], [ 1,11,12], [2,5,12], [3,5,7], [4,7,11], [6,8,11], [4,6,10], [5, 9,10].

Как видите, правила №1 и №2 гарантируют, что для каждой комбинации A существует шесть других комбинаций, которые разделяются A предмет с. Продолжая пример, если A равно [1,4,9], то он разделяет элемент с каждым из [1,2,3], [3,8,9], [4,7, 11], [4,6,10], [5,9,10] и [1,11,12].

Теперь что касается правила №3. . . для каждой комбинации A , я хочу разделить шесть «перекрывающихся» комбинаций на три пары ( B , C) так, чтобы A и B совместно используют один элемент, B и C совместно используют другой элемент, а A и C поделитесь третьим предметом. Продолжая пример, если A равно [1,4,9], то одна действительная тройка ( A , B , C) равно ([1,4,9], [1,2,3], [3,8,9]), где A и B оба содержат 1, B и C оба содержат 3, а A и C оба содержат 9. Общее разделение для [1,4 , 9] может быть ([1,4,9], [1,2,3], [3,8,9]), ([1,4,9], [4,7,11], [1 , 11,12]), ({[1,4,9], [4,6,10], [5,9,10]).

Как видите, это отлично работает для [ 1,4,9]. Но это работает не для всех комбинаций; например, если A равно [4,7,11], тогда возможны только две тройки ( A , B , C ). (И в другом направлении: если A равно [1,2,3], то есть четыре возможных тройки ( A , B , C).)

Итак, приведенный выше пример не удовлетворяет правилу № 3.

Возможно ли сгенерировать набор комбинаций, который выполняет удовлетворить всем трем правилам? Если да, то как?

...