Representing a graph from an adjacency list
It may be more convenient to construct a graph given an adjacency list. In this recipe, we will use the built-in package Data.Graph
to read a mapping of a vertex to a list of connected vertices.
Getting ready
We will be constructing the graph represented in the following diagram:
How to do it...
Create a new file, which we will name Main.hs
, and insert the following code:
Import the
Data.Graph
package:import Data.Graph
Use the
graphFromEdges'
function to obtain a tuple that contains the graph. A graph data structure,Graph
, is in the first element of the tuple returned. The second element of the tuple contains mappings from a vertex number to its corresponding value,Vertex -> (node, key, [key])
:myGraph :: Graph myGraph = fst $ graphFromEdges' [ ("Node 1", 1, [3, 4] ) , ("Node 2", 2, [3, 4]) , ("Node 3", 3, [4]) , ("Node 4", 4, []) ]
Print out...