由于我不知道如何在 Haskell 中编写 DFS,我已经把头撞到墙上几个小时了。
我的图实现为邻接列表,其中键(或图的节点名称)是列表索引:
0 -> 1
1 -> 0, 2
2 -> 1
As a Haskell list: [[1],[0,2],[1]]
到目前为止,这是我的 DFS 代码:
dfs graph visited node = helper graph visited (graph !! node) node
where helper _ _ visited [] _ = visited
helper graph visited (x:xs) currNode
| elem x visited = helper graph visited xs currNode
| otherwise = dfs graph (currNode:visited) x
我知道问题在于一旦到达图表的一端,它就不会回溯并尝试另一个相邻节点。我一直在尝试修改守卫的其他部分以尝试修复它,但似乎无法提出可行的方法。我能做些什么来解决这个问题?