algorithm - 从源到 DAG 中某些节点之间的最长路径

标签 algorithm directed-acyclic-graphs

我如何找到从单一来源到所有最终目的地的最长路径 即对于源 i1,给出 i1 -> o1 和 i1 -> o2 之间的最长路径。

alt text

上图描述的图例如下: (i1, i2) 是起始节点 (o1, o2) 是端节点 (1-8) 是子图 边缘可能有 +ive/-ive 权重

此网络中最长的路径按以下顺序排列:

最坏路径:i1 -> 1 -> 4 -> o1

然后,所有路径 i1 … -> … o1

然后 i1 -> 5 -> 6 -> o2

需要一种方法来忽略对 (i1 -> 3) 或 (3 -> 4) 子网的选择,即使它们比 i1 -> 5 长

最佳答案

Wikipedia救援!他们关于这个问题的页面表明,在一般情况下,您的问题是 NP-Complete。然而,由于您有一个有向无环图,您可以反转所有边权重并运行 Bellman-Ford algorithm解决它。 B-F 算法通常计算图中的单源最短路径。使用反向边权重,它应该产生最长的路径。

关于algorithm - 从源到 DAG 中某些节点之间的最长路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/598174/

相关文章:

algorithm - 与 n 成反比的递归关系

检查有效组合的算法

python - 在 networkx 中的图形对象中查找单独的图形

c# - Neo4j 约束以防止孤立节点

php - 循环 2 个日期并每 12 天、2 天、12 天、2 天等执行一次条件

algorithm - 如果用户改变他的键盘或他的心情在击键动态中改变,我需要一个解决方案?

python - 将 DAG 渲染为表格的算法

python - 集群上数据的Dask和持久化

python - 如何定义 STFP Operator 在 Airflow 上的操作?

c++ - 为什么 Eigen 在下面的例子中比 ublas 慢 5 倍?