【问题标题】:Determine the graph with the least amount of nodes that contains the given set of nodes with an extra condition确定包含具有额外条件的给定节点集的节点数量最少的图
【发布时间】:2012-06-09 18:50:17
【问题描述】:

我有一个未加权的有向图,其中可能有也可能没有环。现在给定一组节点,我需要返回一个图,其中包含给定节点和最小数量的节点,以便它们连接起来。我无法创建新的边缘,所以我需要使用现有的。

希望这些图片能说明问题。从图表开始,

假设我们想要具有节点 c、f 和 g 的图,函数将返回此图

但是,还有一个条件。每条边都有一个名为 required 的布尔变量。如果设置为 true,则该边和相应的节点也需要包含在图中。

这是另一张图片来说明 黑边不是必须的,红边是必须的 假设我们有 a 和 c 作为要包含的节点。

所以不是返回一个 A->C 的图, 它会返回这个

为了更清楚地说明这一点,如果我们想要一个包含 b 和 c 的图,它也会返回该图,因为需要该边。

如何返回此图表?我不希望返回带有循环的图,但我意识到这并不总是可能的,因为循环的边缘可能都被标记为必需的。

我最初的想法是制作一个保留在所需边上的图副本,然后尝试将不相交的图拼凑在一起。但在我尝试将这些图表重新拼凑在一起的过程中,我找到了一个反例,表明它不是最小的图表。

【问题讨论】:

    标签: graph-theory graph-algorithm


    【解决方案1】:

    您在第一个示例中的预期输出是否包括节点 e,从该节点可以访问所有其他节点?还是您的意思是弱连通性(意味着边缘的方向无关紧要)?我猜是第二种情况(从你的A,B,C例子来看),然后你可以

    1. 忽略边是有向的(线性时间),
    2. contract“必需的”边(线性时间),
    3. 在所需点的子集上计算pairwise shortest paths(O(|V|³),但我想你可以将其推低到 O(r|V|²),其中 r 是所需点的数量),并且那么
    4. 在所需的点上找到minimum spanning tree (O(r²))

    这是你想要的吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 2015-05-08
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      相关资源
      最近更新 更多