Как составить алгоритм для поиска комбинаций в массивах?
Здравствуйте, помогите пожалуйста придумать алгоритм для поиска всех возможных групп из комбинаций.
Исходные данные:
Массив комбинаций
$combinations => [
a => [11, 38],
b => [38, 64, 71],
c => [11, 24, 38, 65]
d => [128, 38, 57, 40]
...
]
каждая комбинация в этом массиве может состоять из 2, 3 или 4 чисел
Нужно найти все возможные группы из 4х чисел, в которых будут участвовать от 2-х до 4-х комбинаций из массива комбинаций и определить сколько комбинаций входит в группу и каких. В группе должно быть 4 числа, ни больше, ни меньше. Например можно составить группу в которой будут участвовать 2 комбинации (a и b):
$group => [11, 38, 64, 71]
В эту группу входит первая и вторая комбинация. Третья комбинация (с) уже содержит в себе первую комбинацию (a), т.е. она тоже состоит из двух комбинаций.
Как найти группы, в которых будет от 2х до 4х комбинаций? Я нагородил много вложенных циклов и то, работает криво и ищет только среди комбинаций которые состоят из 2х чисел. Код получился огромный и страшный, что даже боюсь показывать его кому-то. А страшный он из-за того, что не могу придумать оптимальный алгоритм поиска групп.