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
問題は、グラフの一端に到達するとバックトラックして別の隣接ノードを試行しないことであることを理解しています。それを修正するために、ガードのそれ以外のセクションを変更しようとしましたが、機能するものを思い付くことができないようです。これを修正するにはどうすればよいですか?