给出描述节点对之间连接的布尔值二维表,有没有一种有效的方法来找到最大的节点子集,其中所有节点都连接到所有节点?
具有6个节点的示例:
在这种情况下,“最大连接集”是{node1,node4,node5}。尽管node0已连接到node2和node3,但node2和node3没有连接,所以不要形成“连接集”。
这是一个小例子,但我对一种原则上可以应用于非常大的表的通用算法感兴趣。
如果有帮助,我的目标是从本文的表I中复制 M n 值:Sarwate,D.V。和M.B。 Pursley,“伪随机和相关序列的交叉相关特性”,Proc.Natl.Acad.Sci.USA,88:3587-8877。 IEEE卷68,第5号,1980年5月,第583-619页。
我将在MATLAB中对此进行编码,但在C / C ++中也相当流利。
答案 0 :(得分:4)
您的问题等同于-实际上,它甚至可以被视为图论中最大集团问题的重述。图论正好处理了您正在谈论的结构:连接在一起的节点(称为图),而表示它们的一种方法就是您在上方所具有的称为邻接矩阵。
“最大派系”正是您所描述的:图形节点的最大子集,每个子节点彼此相连。
此问题是“ NP完全”问题,基本上是一类完整的问题,但尚未被广泛猜想,但无法“有效”解决:特别是,对于最强的问题,这意味着在这些脉络中做出的有合理论据的猜想,这些问题至少指数地耗时。也就是说,至少在一般情况下,除了彻底搜索整个图形之外,您基本上不能做得更好。也就是说,对于这么小的表,即使对于家用计算机,仍要立即对所有节点和连接进行详尽的搜索,但是对于规模较小的计算机,甚至对于超级计算机也将是不可行的。