DAG 中的 K 条最长路径

Posted

技术标签:

【中文标题】DAG 中的 K 条最长路径【英文标题】:K longest paths in a DAG 【发布时间】:2018-10-11 01:43:15 【问题描述】:

我想在有向无环图 (DAG) 中找到 K 条最长的路径。我已经阅读了几篇关于它的文章,但我找不到任何实现它的实际代码。有人可以帮我写一个 python 或伪代码吗?

这是一个有趣的算法解释: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3009499/

【问题讨论】:

它不太可能是最快的,但实现起来非常简单:对所有最短路径使用Floyd-Washall,否定所有边权重。然后在结果中寻找最负的路径长度。 新浪,这篇论文似乎是在寻找最可能的 HMM 路径,而不是最长的路径。 【参考方案1】:

试试https://baoilleach.blogspot.ca/2013/11/the-shortest-route-to-longest-path.html

您还可以对权重求反,并为加权图中的 k 个最短路径应用一些现有的包,支持负权重。

如果不支持负数,您可以使用 Johnson 算法中的图形权重重写(参见***或/和 https://www.researchgate.net/publication/275645125_Weighted_graph_algorithms_with_Python,然后应用 k 最短路径,例如 Dijkstra 的 Python Dijkstra k shortest paths

【讨论】:

Dijkstra 的算法不适用于负边权重。 解释了如何为 Dijkstra 的算法重写权重

以上是关于DAG 中的 K 条最长路径的主要内容,如果未能解决你的问题,请参考以下文章

POJ 1949 Chores(DAG上的最长路 , DP)

[POJ3249]Test for Job [拓扑排序+DAG上的最长路径]

poj 3249 Test for Job (DAG最长路 记忆化搜索解决)

NYOJ_矩形嵌套(DAG上的最长路 + 经典dp)

DAG最长路问题 hdu-1224

强连通缩点/最长路 (石油大学组队赛 K: Birdwatching)