我遇到了一个类似这样的问题。
我们得到一个无向图,其中每条边都有一个值。现在额外的限制是不能从较高价值的边缘移动到较低价值的边缘。一个人总是必须从较低的价值转向较高的价值。
从图形上看,问题可以描述为
1
1 / \ 1
/ \
3 7
2 / \ 3
/ \
4 5
所以在这里我们可以从 7 -> 1 -> 3 -> 4 移动,但不能从 4 -> 3 -> 1 移动。所以在这个图中,我们被要求在这里找出像 (1, 3, 7) 这样的强连通分量.
我曾尝试将 Kosaraju 算法与这样的约束一起使用。
for v in adj[u]:
if not visited[v] and v.edgeValue >= u.edgeValue:
do work here
但我认为逻辑是错误的,我无法找出它失败的地方。有人可以指出错误并显示某种伪代码吗?
谢谢你。