Safe Haskell | Safe |
---|---|

Language | Haskell2010 |

## Synopsis

- data DGraph v e
- insertArc :: (Hashable v, Eq v) => Arc v e -> DGraph v e -> DGraph v e
- insertArcs :: (Hashable v, Eq v) => [Arc v e] -> DGraph v e -> DGraph v e
- removeArc :: (Hashable v, Eq v) => Arc v e -> DGraph v e -> DGraph v e
- removeArcs :: (Hashable v, Eq v) => [Arc v e] -> DGraph v e -> DGraph v e
- removeArcAndVertices :: (Hashable v, Eq v) => Arc v e -> DGraph v e -> DGraph v e
- arcs :: forall v e. (Hashable v, Eq v) => DGraph v e -> [Arc v e]
- containsArc :: (Hashable v, Eq v) => DGraph v e -> Arc v e -> Bool
- inboundingArcs :: (Hashable v, Eq v) => DGraph v e -> v -> [Arc v e]
- outboundingArcs :: (Hashable v, Eq v) => DGraph v e -> v -> [Arc v e]
- incidentArcs :: (Hashable v, Eq v) => DGraph v e -> v -> [Arc v e]
- vertexIndegree :: (Hashable v, Eq v) => DGraph v e -> v -> Int
- vertexOutdegree :: (Hashable v, Eq v) => DGraph v e -> v -> Int
- indegrees :: (Hashable v, Eq v) => DGraph v e -> [Int]
- outdegrees :: (Hashable v, Eq v) => DGraph v e -> [Int]
- isBalanced :: (Hashable v, Eq v) => DGraph v e -> Bool
- isSource :: (Hashable v, Eq v) => DGraph v e -> v -> Bool
- isSink :: (Hashable v, Eq v) => DGraph v e -> v -> Bool
- isInternal :: (Hashable v, Eq v) => DGraph v e -> v -> Bool
- transpose :: (Hashable v, Eq v) => DGraph v e -> DGraph v e
- toUndirected :: (Hashable v, Eq v) => DGraph v e -> UGraph v e
- toArcsList :: (Hashable v, Eq v) => DGraph v e -> [Arc v e]
- fromArcsList :: (Hashable v, Eq v) => [Arc v e] -> DGraph v e
- prettyPrint :: (Hashable v, Eq v, Show v, Show e) => DGraph v e -> String

# DGraph data type

Directed Graph of Vertices in *v* and Arcs with attributes in *e*

## Instances

# Functions on DGraph

containsArc :: (Hashable v, Eq v) => DGraph v e -> Arc v e -> Bool Source #

Tell if a directed `Arc`

exists in the graph

inboundingArcs :: (Hashable v, Eq v) => DGraph v e -> v -> [Arc v e] Source #

Retrieve the inbounding `Arc`

s of a Vertex

outboundingArcs :: (Hashable v, Eq v) => DGraph v e -> v -> [Arc v e] Source #

Retrieve the outbounding `Arc`

s of a Vertex

incidentArcs :: (Hashable v, Eq v) => DGraph v e -> v -> [Arc v e] Source #

Retrieve the incident `Arc`

s of a Vertex

The `incident`

arcs of a vertex are all the inbounding and outbounding arcs
of the vertex

vertexIndegree :: (Hashable v, Eq v) => DGraph v e -> v -> Int Source #

Indegree of a vertex

The `indegree`

of a vertex is the number of inbounding `Arc`

s to a vertex

vertexOutdegree :: (Hashable v, Eq v) => DGraph v e -> v -> Int Source #

Outdegree of a vertex

The `outdegree`

of a vertex is the number of outbounding `Arc`

s from a vertex

indegrees :: (Hashable v, Eq v) => DGraph v e -> [Int] Source #

Indegrees of all the vertices in a `DGraph`

outdegrees :: (Hashable v, Eq v) => DGraph v e -> [Int] Source #

Outdegree of all the vertices in a `DGraph`

## Query graph properties and characteristics

isBalanced :: (Hashable v, Eq v) => DGraph v e -> Bool Source #

Tell if a `DGraph`

is balanced

A directed graph is `balanced`

when its `indegree = outdegree`

isSource :: (Hashable v, Eq v) => DGraph v e -> v -> Bool Source #

Tell if a vertex is a source

A vertex is a `source`

when its `indegree = 0`

isSink :: (Hashable v, Eq v) => DGraph v e -> v -> Bool Source #

Tell if a vertex is a sink

A vertex is a `sink`

when its `outdegree = 0`

isInternal :: (Hashable v, Eq v) => DGraph v e -> v -> Bool Source #

Tell if a vertex is internal

A vertex is `internal`

when its neither a `source`

nor a `sink`

## Transformations

transpose :: (Hashable v, Eq v) => DGraph v e -> DGraph v e Source #

Get the transpose of a `DGraph`

The `transpose`

of a directed graph is another directed graph where all of
its arcs are reversed

# List conversions

toArcsList :: (Hashable v, Eq v) => DGraph v e -> [Arc v e] Source #

Convert a `DGraph`

to a list of `Arc`

s discarding isolated vertices

Note that because `toArcsList`

discards isolated vertices:

fromArcsList . toArcsList /= id