由于拓扑排序的结果不是唯一的,因此还有其他合理的结果。我有一些关系,如a-> b b-> c ...等。这些关系是图的一部分。我需要找到根目的地和目的地之间的所有列表(只有一个目的地)。让root n和目标i。
N-A-B-I
N-A-d-i的
N-C-B-I
N-C-d-i的
我以为我可以使用拓扑排序来达到这些结果,但是如何?提前谢谢。
答案 0 :(得分:4)
您不应该进行拓扑排序。只需使用广度优先搜索或深度优先搜索,然后存储所有以目的地结尾的路径。
示例伪代码DFS:
paths_to_destination = []
def dfs_store_destination(node, dest, path=None):
if path is None:
path = []
Append node to path
if node == dest:
Add path to paths_to_destination
else:
for new_node in node.reachable_nodes:
dfs_store_destination(new_node, dest, path)
Remove node from path
dfs_store_destination(root, my_dest)