Algorithm 限制仙人掌图上的有向路径

Algorithm 限制仙人掌图上的有向路径,algorithm,graph,graph-algorithm,path-finding,Algorithm,Graph,Graph Algorithm,Path Finding,我想找到具有特定限制定向路径的路径上的最长路径距离 例如,如果我们有以下4个节点, 这意味着 如果我们访问1,我们将无法再访问2 就是1,→ 2和1→ 3.→ 不允许使用2个。 然而,2→ 1个是允许的 同样地 无法从2移动到3 无法从3移动到1 无法从1移动到0 你能去别的地方吗 我们有可能的路径(1,3,2),(0,2,1),等等。因此,最长的距离是3,而我们从来没有得到4 在这种情况下,答案是9。(4、5、6、7、8、0、9、2、3)等等 我被这个问题困扰了一个星期。不

我想找到具有特定限制定向路径的路径上的最长路径距离

例如,如果我们有以下4个节点,

这意味着

  • 如果我们访问1,我们将无法再访问2
就是1,→ 2和1→ 3.→ 不允许使用2个。 然而,2→ 1个是允许的

同样地

  • 无法从2移动到3

  • 无法从3移动到1

  • 无法从1移动到0

  • 你能去别的地方吗

我们有可能的路径(1,3,2),(0,2,1),等等。因此,最长的距离是3,而我们从来没有得到4

在这种情况下,答案是9。(4、5、6、7、8、0、9、2、3)等等


我被这个问题困扰了一个星期。不过,我不知道如何接近。谢谢。

观察1:在一组节点上存在一条路径*,当且仅当该集合产生一个没有圈的子图。证明:如果有一个循环,那么我们就不能访问该循环的所有节点,因为最后一个被访问的节点被循环中它前面的节点禁止。如果没有循环,则反转子图中的所有圆弧并找到拓扑顺序

观察2:这个问题相当于经典的NP难问题,该问题要求最小的节点集,其删除消除了所有循环

在仙人掌图中有一些有效的反馈顶点集算法,例如


*对于这个问题,路径似乎是以一种非标准的方式定义的,它是一个没有重复的节点序列,因此对于图中的每个弧,弧的头部不会出现在尾部之后。这是与示例图(4、5、6、7、8、0、9、2、3)的解决方案一致的定义,该示例图具有多个连续顶点,这些顶点不是由圆弧连接的。

您能否详细说明一下限制条件?此问题与示例图完全相同。与其重复一个封闭式问题,不如改进原始问题,以便重新打开并回答。你能详细说明你的观察结果吗#2?我可以看出你可以把第一个问题简化成第二个问题。反面呢?@ciamej嗯,基本上是按定义的?我稍微编辑了观察值1,使其更为明显。嗯,最小反馈顶点集要求最小的节点集,其删除消除了所有循环,然后在这样一个非循环图中,我们可以找到最长的路径,但该路径可能不会覆盖该图的所有顶点。另一方面,我们可以删除一组不同的顶点(不是最小的一个),以获得一个不同的非循环图,其顶点较少,但路径较长。还是我们不能?若否,原因为何?这对我来说并不明显…@ciamej啊,根据示例答案,“路径”的概念是不标准的。我不确定“路径”有什么问题。您的解决方案是如何使用经典路径概念的?考虑一个有数字8形状的有向图的例子(中心节点连接两个循环)。通过最小反馈顶点集,我们必须移除中心节点以消除所有循环。我们最终得到两个不相交的割环。最长的路径将位于其中一个环路的剩余部分。但我们可以做得更好!相反,我们移除中心节点的两个邻居,每个邻居来自不同的循环,以得到一个S形图。现在,路径可能跨越整个图形。