从二进制相似度矩阵生成(重叠)相互相似的元素集

给出一个对称的二进制相似度矩阵 M 1 =相似度),我想提取所有(可能重叠的)子集,其中集合中的所有元素都是相互关联的相似。

  A B C D E
A 1 1 0 0 0
B 1 1 1 1 0
C 0 1 1 1 1
D 0 1 1 1 1
E 0 0 1 1 1

另外,包含在其他集合中的集合也应丢弃(例如{D,E}包含在{C,D,E}中)。对于矩阵,结果将是:{A,B}{B,C,D}{C,E}

  1. 我如何轻松实现这一目标?
  2. 我怀疑有一些用于此目的的聚类算法,但是我不知道这些类型问题的名称。该任务属于哪个(数学)类问题?

代码

M <- matrix(c(1,1,1),ncol = 5,byrow = TRUE)
colnames(M) <- rownames(M) <- LETTERS[1:5]

PS。虽然这听起来像是一些家庭作业,但实际上是我在工作中遇到的问题:)

hanpangzi2234 回答:从二进制相似度矩阵生成(重叠)相互相似的元素集

clique 是完全连接的子图。

因此,您正在寻找的是(最大)爬坡检测

https://en.wikipedia.org/wiki/Clique_problem

请注意,结果可能比您预期的要大得多。考虑一个图,其中每个边为1且概率为p。对于接近1的p,几乎任何子集都是集团。寻找最大的集团便变得昂贵。也可以选择P以使最大集团的数量最大化...

本文链接:https://www.f2er.com/3131530.html

大家都在问