创建几个具有特定要求的最小生成树

Creating several minimum spanning trees with specific requirements

我有一个无向图,其中包含多个 A 型节点和一些 B 型节点。我需要创建一个图(不一定全局连接),以便每个 A 型节点连接(通过任意数量的边) 到至少一个 B 类节点。所有边都有权重。我想创建一个满足此条件的 MST,但我想不出最好的算法来做到这一点。

让我澄清一下。如果我有一个B型节点,那么我需要做的就是正常创建一个MST。但由于我有多个 B 型节点,可能有一种更有效的方法来创建 MST,不需要我连接图中的所有顶点。例如,如果 B 类节点不是到 any 类型 A 节点的最便宜连接,我可能会选择忽略它。最后,我很可能得到一个包含多个断开连接的 MST 的图形,而不仅仅是一个。

执行此操作的最佳算法是什么?

迭代此过程:

  1. 找到将 A 类节点连接到 B 类节点的成本最低的连接。
  2. 将 A-node 的标签更改为类型 B。
  3. 重复直到没有更多的A节点。

请注意您问题的一个重要 属性:任何最小解决方案都必须让每个 A 节点恰好 连接到一个 B 节点。