Как оптимально найти подмножества в наборе данных многие-ко-многим?
Храните сами "ядра" в классической реляционной базе "многие ко многим". Три таблицы - пользователи, группы, связи.
строки в таблице связи: ид пользователя, ид группы.
Есть простое решение за (число сообществ)*(число связей "пользователь-сообщество").
Для каждого сообщества Y:
- заводим массив R[C], где C - число сообществ
- для каждого пользователя X из сообщества Y:
- - для каждого сообщества M, в которое входит пользователь X: R[M]=R[M]+1
- для каждого сообщества M: если M!=Y и R[M] > 1, то пара (Y,M) - ядро.
Быстрее пока не получается.