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 でどのように表現すればよいですか?
- 上で概説したデータ構造を使用する場合、これらの関数の 1 つを実装するにはどうすればよいでしょうか。