-
23-08-2019 - |
質問
が容易にできますデータ型のノードの向グラフで表示します。
data Node = Node String [Node] derving (Show, Read)
できますの保存グラフをファイルを示機能、そして回復を使って読み出します。しかし、ショーに対応しておりませんので、サイクルです。が自明といった通常の方法で入力グラフ?
解決
ないと分かっています。好きなグラフ-横断機能です。
まず、場所を決定休みの真円度.この場合では自:軒のノードの名前を想定して内のグラフ。より複雑な構造などのグラフのノードやエッジとして別個の種類いるかどうかを判断するために店エッジノード、ノード端、またはノードやエッジを完全分離。
そして列挙すべてのノードのグラフで表示します。この場合には、あなたがトラバースグラフの回収のノードが有限の地図参照 データです。地図).そして店内の各ノードとして名前の後にリストのその他のノード名です。
回復のグラフを使用することの"結びつける結び目"パターンです。の保存グラフへの構造[(文字列,[String])].その後、元のグラフを再構成し、以下のコード:
import qualified Data.Map as M
data Node = Node String [Node]
instance Show Node where
show (Node name others) = "Node " ++ show name ++
" " ++ show (map nodeName others)
where nodeName (Node n _) = n
restoreGraph :: [(String, [String])] -> M.Map String Node
restoreGraph pairs = table
where
table = M.fromList $ map makeNode pairs
makeNode (name, others) = (name, Node name $ map findNode others)
findNode str = fromJust $ M.lookup str table
注相互の再帰:テーブル電話makeNode、findNode、表に示す。 おかげ流を評価するところが大きいと.
編集: コードを現在試験を若干拡大しました。
他のヒント
あります。きドメイン知識の構造のノードの型を定義するかという概念の平等のできる試験とを組み合わせることにより、リストやマップ内のノードがこれまで回復。の病態がある場合のようにStableNameにGHCを構築しなえたようです。
ライフサイエンスマット-モローされている作業の抽出を組み立てます。Sファイルを任意の環状データを手軽な真空図書館があります。しているとそうではないことまたは真空が特に好まれます。
一般の回避が強い追跡ノードがこれまでの地図は、おそらく最も合理的維持す。