Algorithm 这个在有向无环图上寻找最大路径的算法叫什么?

Algorithm 这个在有向无环图上寻找最大路径的算法叫什么?,algorithm,graph,directed-acyclic-graphs,Algorithm,Graph,Directed Acyclic Graphs,从一段时间以来,我一直在使用一个复杂度为O(V+E)的算法来寻找从点a到点B的有向无环图上的最大路径,这包括进行泛洪填充,以找到哪些节点可以从注释a访问,以及每个节点有多少“父节点”(来自其他节点的边)。然后,我做了一个BFS,但只“激活”一个节点,而我已经使用了它的所有“父节点” 队列a int路径[]//指向注释i的路径数 整数边[]//边缘 int-mpath[]//从0到i的最大路径(不计算i的权重) 整数权重[]//每个节点的权重 mpath[0]=0 a、 推送(0) 虽然不是空的(

从一段时间以来,我一直在使用一个复杂度为O(V+E)的算法来寻找从点a到点B的有向无环图上的最大路径,这包括进行泛洪填充,以找到哪些节点可以从注释a访问,以及每个节点有多少“父节点”(来自其他节点的边)。然后,我做了一个BFS,但只“激活”一个节点,而我已经使用了它的所有“父节点”

队列a
int路径[]//指向注释i的路径数
整数边[]//边缘
int-mpath[]//从0到i的最大路径(不计算i的权重)
整数权重[]//每个节点的权重
mpath[0]=0
a、 推送(0)
虽然不是空的(a)
因为我在边缘[a]
路径[i]+=1
a、 推送(一)
虽然不是空的(a)
因为我喜欢儿童[a]
mpath[i]=最大值(mpath[i],mpath[a]+重量[a]);
路径[i]-=1;
如果路径[i]=0
a、 推(i);

这个算法有什么特别的名字吗?我告诉一位信息学教授,他只是称之为“DAG上的最大路径”,但当你说“我用芬威克树解决了第一个问题,用迪克斯特拉树解决了第二个问题,用最大路径解决了第三个问题”时,听起来并不好?一定要提到达格。在一般图中寻找最长路径是NP完全的。

可能不是-因为这不是一个常见的算法。当您需要在DAG中查找路径时,只需对其进行排序,遍历一次并保留最长路径。

正如其他人所提到的,DAG中的最长路径就是“DAG中的最长路径”。然而,您使用的技术实际上是与。

我猜是的,我想要的只是一个欧洲科学家的吸引人的名字。谢谢!这正是我要找的!
queue <int> a
int paths[] ; //Number of paths that go to note i
int edge[][] ; //Edges of a
int mpath[] ; //max path from 0 to i (without counting the weight of i)
int weight[] ; //weight of each node

mpath[0] = 0

a.push(0)
while not empty(a)
    for i in edge[a]
        paths[i] += 1
        a.push(i)

while not empty(a)
    for i in children[a]
        mpath[i] = max(mpath[i], mpath[a] + weight[a]) ;

        paths[i] -= 1 ;
        if path[i] = 0
            a.push(i) ;