我很难弄清楚如何在 Haskell 中读入(以及如何表示)图表。
文件的输入看起来像
NODES 3
EDGE 1 2
EDGE 1 3
EDGE 2 3
我已经弄清楚如何使用以下方法从文件中获取各个输入行:
loadFile :: String -> IO [[String]]
loadFile filename = do
contents <- readFile filename
return $ map words $ lines contents
这给出了如下输出:
loadFile "input.txt"
[["NODES","3"],["EDGE","1","2"],["EDGE","1","3"],["EDGE","2","3"]]
不过,我真正需要弄清楚的是如何将此图形数据表示为图形。我正在考虑将其设置为边缘列表:
type Edge = (Int,Int)
type Graph = [Edge]
但后来我不确定如何开始实现我需要的功能,例如 addNode、addEdge、getNodes、getEdges。
任何帮助或指出我正确的方向都会很棒!注意:我不能为此使用任何已经开发的图形模块。
因此,对于 tl;dr 版本:
- 我是否以最好的方式阅读数据?
- 我应该如何在 haskell 中表示这些数据?
- 如果我使用上面概述的数据结构,我将如何实现其中一个功能。