Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- class MGraph d => Graph d where
- data LGraph d v e = LGraph {
- _graph :: IGraph
- _labelToNode :: HashMap v [Node]
- data U
- data D
- decodeC :: (PrimMonad m, MonadThrow m, Graph d, Serialize v, Serialize e, Hashable v, Eq v) => ConduitT ByteString o m (LGraph d v e)
- empty :: (Graph d, Hashable v, Serialize v, Eq v, Serialize e) => LGraph d v e
- mkGraph :: (Graph d, Hashable v, Serialize v, Eq v, Serialize e) => [v] -> [LEdge e] -> LGraph d v e
- fromLabeledEdges :: (Graph d, Hashable v, Serialize v, Eq v, Serialize e) => [((v, v), e)] -> LGraph d v e
- fromLabeledEdges' :: (PrimMonad m, Graph d, Hashable v, Serialize v, Eq v, Serialize e) => a -> (a -> ConduitT () ((v, v), e) m ()) -> m (LGraph d v e)
- unsafeFreeze :: (Hashable v, Eq v, Serialize v, PrimMonad m) => MLGraph (PrimState m) d v e -> m (LGraph d v e)
- freeze :: (Hashable v, Eq v, Serialize v, PrimMonad m) => MLGraph (PrimState m) d v e -> m (LGraph d v e)
- unsafeThaw :: PrimMonad m => LGraph d v e -> m (MLGraph (PrimState m) d v e)
- thaw :: (PrimMonad m, Graph d) => LGraph d v e -> m (MLGraph (PrimState m) d v e)
- neighbors :: LGraph d v e -> Node -> [Node]
- pre :: LGraph D v e -> Node -> [Node]
- suc :: LGraph D v e -> Node -> [Node]
- nmap :: (Graph d, Serialize v1, Serialize v2, Hashable v2, Eq v2) => (LNode v1 -> v2) -> LGraph d v1 e -> LGraph d v2 e
- emap :: (Graph d, Serialize e1, Serialize e2, Hashable v, Eq v, Serialize v) => (LEdge e1 -> e2) -> LGraph d v e1 -> LGraph d v e2
- nfilter :: (Hashable v, Eq v, Serialize v, Graph d) => (LNode v -> Bool) -> LGraph d v e -> LGraph d v e
- efilter :: (Hashable v, Eq v, Serialize v, Serialize e, Graph d) => (LEdge e -> Bool) -> LGraph d v e -> LGraph d v e
Documentation
class MGraph d => Graph d where Source #
isDirected :: LGraph d v e -> Bool Source #
Graph is directed or not.
nNodes :: LGraph d v e -> Int Source #
Return the number of nodes in a graph.
nodes :: LGraph d v e -> [Node] Source #
Return all nodes. nodes gr == [0 .. nNodes gr - 1]
.
labNodes :: Serialize v => LGraph d v e -> [LNode v] Source #
nEdges :: LGraph d v e -> Int Source #
Return the number of edges in a graph.
edges :: LGraph d v e -> [Edge] Source #
Return all edges.
labEdges :: Serialize e => LGraph d v e -> [LEdge e] Source #
hasEdge :: LGraph d v e -> Edge -> Bool Source #
Whether a edge exists in the graph.
nodeLab :: Serialize v => LGraph d v e -> Node -> v Source #
Return the label of given node.
getNodes :: (Hashable v, Eq v) => LGraph d v e -> v -> [Node] Source #
Return all nodes that are associated with given label.
edgeLab :: Serialize e => LGraph d v e -> Edge -> e Source #
Return the label of given edge.
getEdgeByEid :: LGraph d v e -> Int -> Edge Source #
Find the edge by edge ID.
getEdgeLabByEid :: Serialize e => LGraph d v e -> Int -> e Source #
Find the edge label by edge ID.
Instances
Graph with labeled nodes and edges.
Undirected graph.
Instances
Directed graph.
Instances
decodeC :: (PrimMonad m, MonadThrow m, Graph d, Serialize v, Serialize e, Hashable v, Eq v) => ConduitT ByteString o m (LGraph d v e) Source #
Decode a graph from a stream of inputs. This may be more memory efficient
than standard decode
function.
empty :: (Graph d, Hashable v, Serialize v, Eq v, Serialize e) => LGraph d v e Source #
Create a empty graph.
:: (Graph d, Hashable v, Serialize v, Eq v, Serialize e) | |
=> [v] | Nodes. Each will be assigned a ID from 0 to N. |
-> [LEdge e] | Labeled edges. |
-> LGraph d v e |
Create a graph.
fromLabeledEdges :: (Graph d, Hashable v, Serialize v, Eq v, Serialize e) => [((v, v), e)] -> LGraph d v e Source #
Create a graph from labeled edges.
:: (PrimMonad m, Graph d, Hashable v, Serialize v, Eq v, Serialize e) | |
=> a | Input, usually a file |
-> (a -> ConduitT () ((v, v), e) m ()) | deserialize the input into a stream of edges |
-> m (LGraph d v e) |
Create a graph from a stream of labeled edges.
unsafeFreeze :: (Hashable v, Eq v, Serialize v, PrimMonad m) => MLGraph (PrimState m) d v e -> m (LGraph d v e) Source #
Convert a mutable graph to immutable graph. The original graph may not be used afterwards.
freeze :: (Hashable v, Eq v, Serialize v, PrimMonad m) => MLGraph (PrimState m) d v e -> m (LGraph d v e) Source #
Convert a mutable graph to immutable graph.
unsafeThaw :: PrimMonad m => LGraph d v e -> m (MLGraph (PrimState m) d v e) Source #
Create a mutable graph. The original graph may not be used afterwards.
thaw :: (PrimMonad m, Graph d) => LGraph d v e -> m (MLGraph (PrimState m) d v e) Source #
Create a mutable graph.
nmap :: (Graph d, Serialize v1, Serialize v2, Hashable v2, Eq v2) => (LNode v1 -> v2) -> LGraph d v1 e -> LGraph d v2 e Source #
Apply a function to change nodes' labels.
emap :: (Graph d, Serialize e1, Serialize e2, Hashable v, Eq v, Serialize v) => (LEdge e1 -> e2) -> LGraph d v e1 -> LGraph d v e2 Source #
Apply a function to change edges' labels.