有没有找到“最大连通集”的有效算法?

时间:2019-04-20 21:49:43

标签: algorithm pseudocode

给出描述节点对之间连接的布尔值二维表,有没有一种有效的方法来找到最大的节点子集,其中所有节点都连接到所有节点?

具有6个节点的示例:

enter image description here

在这种情况下,“最大连接集”是{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 ++中也相当流利。

编辑:这是我要从中复制结果的表: enter image description here

  • 第一列和第二列在这里并不是很重要(仅描述代码的长度)。
  • 第三列是我所说的“节点数”。
  • 如果使用所有节点,则第4列用于衡量错误(无论 是否“连接”)。
  • 如果仅使用“最大连接集”,则第六列是(最小)错误。
  • 第五列 M n 描述最大连接集中的节点数。

1 个答案:

答案 0 :(得分:4)

您的问题等同于-实际上,它甚至可以被视为图论中最大集团问题的重述。图论正好处理了您正在谈论的结构:连接在一起的节点(称为图),而表示它们的一种方法就是您在上方所具有的称为邻接矩阵。

“最大派系”正是您所描述的:图形节点的最大子集,每个子​​节点彼此相连。

此问题是“ NP完全”问题,基本上是一类完整的问题,但尚未被广泛猜想,但无法“有效”解决:特别是,对于最强的问题,这意味着在这些脉络中做出的有合理论据的猜想,这些问题至少指数地耗时。也就是说,至少在一般情况下,除了彻底搜索整个图形之外,您基本上不能做得更好。也就是说,对于这么小的表,即使对于家用计算机,仍要立即对所有节点和连接进行详尽的搜索,但是对于规模较小的计算机,甚至对于超级计算机也将是不可行的。