对于练习我需要反转图形(反转所有边缘),但我没有得到任何结果.所以我需要一些帮助.
我知道你可能不想为我解决这个问题,所以这不是我要求的.我只需要一些建议......
所以要达到它:
data Graph a = G
{ nodes :: [a]
, successors :: a -> [a] }
reverseGraph :: Eq a => Graph a -> Graph a
Run Code Online (Sandbox Code Playgroud)
图表必须包含以下参数:节点列表和定义后继者的函数.此函数具有以下类型:
a -> [a]
例如:
graph1 :: Graph Int
graph1 = G [1..6] $ \case 1 -> [2,3]
2 -> []
3 -> [1,4,6]
4 -> [1]
5 -> [3,5]
6 -> [2,4,5]
Run Code Online (Sandbox Code Playgroud)
反转图表将是:
reverseGraph graph1 ~>
2 -> [1,6]
3 -> [1,5]
1 -> [3,4]
4 -> [3,6]
6 -> …
Run Code Online (Sandbox Code Playgroud)