Я знаком с различными алгоритмами кластеризации (k-средних и т.д.), но для моего конкретного случая использования (социальные сети) мне нужен алгоритм, который обнаруживает перекрывающиеся группы. Этот алгоритм аккуратно разделяет моих друзей из Facebook на моих школьных друзей, моих друзей по колледжу, мою семью и моих друзей по работе.
Алгоритм, который я использовал выше (VoltageClusterer от JUNG), разделяет узлы на отдельные кластеры. Но мне нужен алгоритм, который может назначать узлы нескольким кластерам (например, мой друг может быть и моим школьным другом, и другом по колледжу).
Как мне это сделать? Было бы неплохо, если бы этот алгоритм работал и для взвешенных графов, а не только для невзвешенных.