Algorithm 求从有向图的初始层到达最后一层的方法总数的算法

Algorithm 求从有向图的初始层到达最后一层的方法总数的算法,algorithm,graph,graph-theory,graph-algorithm,directed-graph,Algorithm,Graph,Graph Theory,Graph Algorithm,Directed Graph,我想要一个算法来找到从有向图的初始层到达最后一层的方法总数,该图的最后一层和第一层只包含一个节点。请建议我应该使用哪种算法 如果从第一个节点到最后一个节点的路径上存在循环,则路径的数量将无限大 否则,没有循环,因此我们感兴趣的图的一部分是非循环的(图中的某个地方可能有一个循环,但如果不在第一个节点和最后一个节点之间的路径上,则无所谓)。这就是为什么我们可以使用动态规划来计算路径数: 基本情况:f(开始节点)=1 转换:f(节点)=节点的所有邻居的f(邻居)之和。我们可以正确计算这个值,因为没有

我想要一个算法来找到从有向图的初始层到达最后一层的方法总数,该图的最后一层和第一层只包含一个节点。请建议我应该使用哪种算法

  • 如果从第一个节点到最后一个节点的路径上存在循环,则路径的数量将无限大

  • 否则,没有循环,因此我们感兴趣的图的一部分是非循环的(图中的某个地方可能有一个循环,但如果不在第一个节点和最后一个节点之间的路径上,则无所谓)。这就是为什么我们可以使用动态规划来计算路径数:

    • 基本情况:
      f(开始节点)=1

    • 转换:
      f(节点)=节点的所有邻居的f(邻居)之和
      。我们可以正确计算这个值,因为没有循环

    • 答案是
      f(最后一个节点)

    我们可以显式地使用拓扑排序,也可以编写带记忆的递归函数(在这两种情况下,时间和空间复杂性都是线性的)


  • 深度优先搜索从开始到结束节点,但在找到第一条路径后不要终止。@SchighSchagh,听起来不是多项式。你有没有尝试过类似弗洛伊德·沃肖尔的算法?