JGraphT Dijkstra的算法对有向图和无向图具有不同的包容性规则

时间:2018-06-20 08:48:50

标签: java graph jgrapht

我正在使用带有相当大图形的JGraphT库,并将代码从DefaultUndirectedWeightedGraph转换为DefaultDirectedWeightedGraph(我为每个无方向的边都为启动器生成了双重边)。我使用Dijkstra的算法在图中找到最短路径,并且遇到了奇怪的行为-由于发现路径被一个节点关闭,因此我的测试崩溃了。

经过一番研究,结果发现JGraphT的Dijkstra删除了源节点,并包含了用于无向图遍历的接收器节点;相反,它包含了源节点,并删除了有向图遍历的接收器节点。

这是一个例子:

given:
Directed:   A --> B --> C --> D --> E --> F
Undirected: A <-> B <-> C <-> D <-> E <-> F
and:
source: A
sink:   E
Dijkstra's will yield:
for directed graph:   A, B, C, D
for undirected graph: B, C, D, E

有人知道为什么会这样吗?

0 个答案:

没有答案