Создание комбинаций, которые не имеют больше одного пересекающегося элемента
Я ищу создание особого типа комбинации, в которой нет двух наборов, имеющих более одного пересекающегося элемента. Позвольте мне объяснить на примере:
Допустим, у нас есть набор из 9 букв, который содержит A, B, C, D, E, F, G, H и I
Если вы создадите стандартные неповторяющиеся комбинации из трех букв, у вас будет наборы 9C3. Они будут содержать наборы, такие как ABC, ABD, BCD и т. Д. Я ищу для создания наборов, которые имеют не более 1 общей буквы. Итак, в этом примере мы получим следующие наборы:
ABC, ADG, AEI, AFH, BEH, BFG, BDI, CFI, CDH, CEG, DEF и GHI - обратите внимание, что если вы берете любые два набора, то не более 1 повторяющейся буквы.
Что было бы хорошим способом генерировать такие наборы? Это должно быть масштабируемое решение, чтобы я мог сделать это для набора из 1000 букв с размером поднабора 4.
Любая помощь высоко ценится.
Спасибо