【发布时间】:2016-08-11 16:47:11
【问题描述】:
我正在用 python 编码。
我有一个集合列表。这些集合包含整数。如果两个集合共享一个整数项,则它是“连接的”。我的目标是确定所有这些集合是否都相互连接到一个组中(而不是没有连接的集合或多组相互连接的集合)。
这有通用的算法吗?这似乎是一个广泛适用的目标。
这是我提出的解决方案:
从第一个集合开始,检查内容是否与任何其他集合共享
删除任何包含共享内容的集合并将其他内容添加到第一个集合
重复直到第一组没有变化
如果所有其他集合都已删除,则它们都已连接
澄清
我想区分一个相互连接的集合链
o--o--o--o--o--o
来自相互连接的不同组
o--o--o o--o--o
因此,仅检查每个集合是否连接到另一个集合是不够的。
【问题讨论】:
-
Python 有 Set 运算符来确定子集。我认为你要求的“算法”是一个“集合覆盖”,它是 NP-Complete
-
@cricket_007 从他的描述来看,我觉得它像是连接的组件,这很容易找到。
标签: algorithm graph set theory