【问题标题】:Find all *vertices* on all simple paths between two vertices in an undirected graph在无向图中的两个顶点之间的所有简单路径上查找所有 *vertices*
【发布时间】:2012-06-05 05:12:58
【问题描述】:

枚举任意图中两个顶点之间的所有简单路径通常需要指数时间,因为顶点之间可能存在指数数量的简单路径。但是,如果我们只对两个端点之间至少一条简单路径上的顶点感兴趣呢?

也就是说:给定一个无向图和两个不同的顶点,是否有一个多项式时间算法可以找到两个顶点之间至少一条简单路径上的每个顶点?与连接性相同;死胡同和死胡同被排除在外。但是,允许分支和连接路径。

我发现编写一个看起来可以解决这个问题的算法非常容易,但在某些情况下会失败,或者在病态情况下需要指数级的运行时间。

更一般地说:给定图中的两个不相交的顶点集,是否有一个多项式时间算法可以找到位于从一组顶点到另一组顶点的简单路径上的所有顶点?

(如果有一个非常明显的解决方案,请原谅我。感觉当然应该有。)

【问题讨论】:

  • 您可以针对第一个问题修改 Floyd-Warshall。这是n^3。只需在您穿过顶点时跟踪顶点,然后查看哪些其他顶点同时具有到目标和源的路径。
  • 您应该考虑将此类问题发布到新的computer science stackexchange 站点。
  • @JanGorzny- 这种方法的问题在于,它只会告诉您子图中是否有 最短 路径通过这些节点。我可能在某些子图中的非最短路径上有一个节点会被跳过。
  • @templatetypedef 但是你可以循环遍历所有节点(假设你有一个列表,在节点大小的线性时间内)并检查每个节点是否有一些最短路径(并且你可以排除其中至少一条路径使用两个指定节点的情况——尽管这需要存储大量信息)。最终我承认它并不完美,但我认为这可能是一个起点!
  • 当然,任何两端问题的多项式时间解决方案都意味着 N 端问题的多项式时间解决方案,因为您可以将两者中所有顶点对的结果合并套。我的问题只要求多项式时间,而不是渐近最优的。不过,对于 N 端可能会有更快的算法。

标签: algorithm language-agnostic graph depth-first-search breadth-first-search


【解决方案1】:

这是一个线性时间确定性解决方案。 在两端顶点(我们称它们为 a 和 b)之间插入一条边,如果这样的边不存在,则将您的问题变成找到位于通过 a 和 b 的任何简单循环上的最大顶点集 v 的问题。您可以说服自己,这样的集合对应于包含 a 和 b 的最大子图,不能通过删除其任何节点(也称为双连接组件)来断开连接。 This page 描述了 Hopcroft 和 Tarjan 的概念和经典线性时间(基于 DFS)算法,用于识别所有双连通分量(您只需要包含 a 和 b 的那个)。

关于两个集合(我们称它们为 A 和 B)之间的简单路径的第二个问题可以通过创建一个新顶点 a 与 A 中所有顶点的边和一个顶点 b 与 A 中所有顶点的边来简化为第一个问题B,然后为 a 和 b 解决你的第一个问题。

【讨论】:

【解决方案2】:

您介意概率解决方案吗?也就是说,它不能保证找到所有的顶点,但它通常会先尝试,并且极有可能在 2 或 3 次尝试之后?

如果您对此表示满意,请随机为每个边分配一个电阻,并求解每个节点的电压,前提是您将源置于 1 电压,将接收器置于 0 电压。两者的任何边连接它的处于不同电压的节点显然在一条简单的路径上(路径很容易构建,只需从一端通过上升电压,从另一端下降)。连接它的两个节点处于相同电压的边缘极不太可能位于简单路径上,尽管理论上这种情况可能发生。

重复几组随机分配的阻力,您极有可能找到位于简单路径上的所有边。 (您还没有证明这个答案,但错误的可能性微乎其微。)

当然,一旦您知道简单路径上的所有边,获取简单路径上的所有顶点就很简单了。

更新

我相信以下是真实的,但没有证据。假设我们采用一组电阻并计算出电压。对于简单路径中的每个边缘,都有另一个边缘(可能相同),因此仅改变该边缘的电阻将导致第一个边缘上的电压发生变化。如果是这样,则可以在多项式时间内识别简单路径中的每条边。

直觉上这对我来说是有道理的,但我不知道如何证明这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    相关资源
    最近更新 更多