将循环转换为非循环图

时间:2016-05-15 08:59:00

标签: algorithm directed-acyclic-graphs cyclic

我想将循环图转换为非循环图。是否有伪代码可以做到这一点?我确实尝试过搜索,但大部分都是基于马尔可夫链或研究文章返回的数学。

我想写一个程序来完成它,任何方向都会有用。例如,请考虑以下图表。

A->B
B->C
C->A

我在麻省理工学院讲座中看到了一个解决方案,但是讲座中提到了一些解决方案,并参考了之前教过的内容并且无法理解。简而言之,它可以复制层中的节点,使得结束图表示 DAG ,但传达相同的路径信息。

[见46:59]

https://www.youtube.com/watch?v=OQ5jsbhAv_M

修改

我想对一个问题进行动态编程,这是一个循环图例如说最短路径问题Delta(S,D) where S-> Source node and D->Destination node。由于DP over循环图是无穷大算法,我们首先需要将循环图转换为非循环图,然后在其上应用动态编程技术。

1 个答案:

答案 0 :(得分:1)

我相信你指的是错误的视频,这里是(46:59):https://www.youtube.com/watch?v=OQ5jsbhAv_M

这里暴露的想法是制作图表的几个副本并将它们排列成图层。每一个都代表给定时间的图形状态,并且对于每个遍历的边缘,您将向下移动一层。 我没有找到伪代码,但这里详细说明了这一点:https://cstheory.stackexchange.com/questions/14591/combinatorics-of-bellman-ford-or-how-to-make-cyclic-graphs-acyclic