如何在给定边缘阵列的情况下执行深度优先搜索

时间:2017-10-28 14:53:33

标签: algorithm graph depth-first-search

对于课堂作业,我发现自己在图表中有一组边缘。我想知道是否可以在此图表上执行DFS而不将数据转换为一组顶点。

1 个答案:

答案 0 :(得分:0)

对于DFS以及BFS,您需要一个数据结构,通过来源提供对边缘的访问。

所以需要这样的方法:

Edge getOutgoingEdge(source)

如果您只有一组所有边缘,则在跟随第一条边后,您将无法获取要处理的下一条边。假设您遍历了一条边a -> b,那么您关注的下一条边必须是b -> c种。因此,您需要某种为每个源提供边缘的结构:

getOutgoingEdge(b)

如果您没有,需要在之前构建它,方法是遍历集合中的所有边缘并创建某种Map source -> {e edge | alpha(e) = source}(其中{{ 1}}表示边缘的来源。)

您可以构建此地图动态,即在找到alpha(e)的下一个边后停止,但复杂性仍为DFS