# DirectedGraph S¶

- S: SetCategory

Category of directed graphs, allows us to model graph theory

- *: (%, %) -> DirectedGraph Product(S, S)
`"*"`

(a,`b`

) returns a tensor product : the tensor product`G*H`

of graphs`G`

and`H`

is a graph such that the vertex set of`G*H`

is the Cartesian product`V`

(`G`

) times`V`

(`H`

); and any two vertices (`u`

, u’) and (`v`

,`v'`

) are adjacent in`G`

times`H`

if and only if u’ is adjacent with`v'`

and`u`

is adjacent with`v`

.- +: (%, %) -> %
- from FiniteGraph S
- =: (%, %) -> Boolean
- from BasicType

- ~: % -> %
- The complement or inverse of a graph is a graph on the same vertices such that there is an arrow if and only if there is not an arrow in its compliment. That is, it is the compliment of the arrows but is not the set complement. for more information see: http://en.wikipedia.org/wiki/Complement_graph
- ~=: (%, %) -> Boolean
- from BasicType
- addArrow!: (%, Record(name: String, arrType: NonNegativeInteger, fromOb: NonNegativeInteger, toOb: NonNegativeInteger, xOffset: Integer, yOffset: Integer, map: List NonNegativeInteger)) -> %
- from FiniteGraph S
- addArrow!: (%, String, NonNegativeInteger, NonNegativeInteger) -> %
- from FiniteGraph S
- addArrow!: (%, String, NonNegativeInteger, NonNegativeInteger, List NonNegativeInteger) -> %
- from FiniteGraph S
- addArrow!: (%, String, S, S) -> %
- from FiniteGraph S
- addObject!: (%, Record(value: S, posX: NonNegativeInteger, posY: NonNegativeInteger)) -> %
- from FiniteGraph S
- addObject!: (%, S) -> %
- from FiniteGraph S
- adjacencyMatrix: % -> Matrix NonNegativeInteger
- from FiniteGraph S
- arrowName: (%, NonNegativeInteger, NonNegativeInteger) -> String
- from FiniteGraph S
- arrowsFromArrow: (%, NonNegativeInteger) -> List NonNegativeInteger
- from FiniteGraph S
- arrowsFromNode: (%, NonNegativeInteger) -> List NonNegativeInteger
- from FiniteGraph S
- arrowsToArrow: (%, NonNegativeInteger) -> List NonNegativeInteger
- from FiniteGraph S
- arrowsToNode: (%, NonNegativeInteger) -> List NonNegativeInteger
- from FiniteGraph S

- cartesian: (%, %) -> DirectedGraph Product(S, S)
`cartesian(a, b)`

returns a Cartesian product: the vertex set of`G`

`o`

`H`

is the Cartesian product`V`

(`G`

) times`V`

(`H`

) and any two vertices (`u`

, u’) and (`v`

,`v'`

) are adjacent in`G`

`o`

`H`

if and only if either`u`

=`v`

and u’ is adjacent with`v'`

in`H`

, or u’ =`v'`

and`u`

is adjacent with`v`

in`G`

.

- closedCartesian: (%, %, (S, S) -> S) -> %
`closedCartesian(a, b, f)`

builds Cartesian product of a and`b`

and then maps it back to % using`f`

.

- closedTensor: (%, %, (S, S) -> S) -> %
`closedTensor(a, b, f)`

builds tensor product of a and`b`

and then maps it back to % using`f`

.- coerce: % -> OutputForm
- from CoercibleTo OutputForm

- coerce: FinitePoset S -> %
`coerce FinitePoset`

to graph

- coerce: List S -> %
`coerce List`

to graph

- coerce: PermutationGroup S -> %
`coerce PermutationGroup`

to graph- createWidth: NonNegativeInteger -> NonNegativeInteger
- from FiniteGraph S
- createX: (NonNegativeInteger, NonNegativeInteger) -> NonNegativeInteger
- from FiniteGraph S
- createY: (NonNegativeInteger, NonNegativeInteger) -> NonNegativeInteger
- from FiniteGraph S
- cycleClosed: (List S, String) -> %
- from FiniteGraph S
- cycleOpen: (List S, String) -> %
- from FiniteGraph S
- deepDiagramSvg: (String, %, Boolean) -> Void
- from FiniteGraph S
- diagramHeight: % -> NonNegativeInteger
- from FiniteGraph S
- diagramsSvg: (String, List %, Boolean) -> Void
- from FiniteGraph S
- diagramSvg: (String, %, Boolean) -> Void
- from FiniteGraph S
- diagramWidth: % -> NonNegativeInteger
- from FiniteGraph S

- directedGraph: (List Record(value: S, posX: NonNegativeInteger, posY: NonNegativeInteger), List Record(name: String, arrType: NonNegativeInteger, fromOb: NonNegativeInteger, toOb: NonNegativeInteger, xOffset: Integer, yOffset: Integer, map: List NonNegativeInteger)) -> %
`directedGraph(ob, ar)`

constructs graph with objects`ob`

and arrows ar, more objects and arrows can be added later if required.

- directedGraph: (List S, List List NonNegativeInteger) -> %
`directedGraph(ob, am)`

constructs graph with objects`ob`

and adjacency matrix am.

- directedGraph: (List S, List Record(fromOb: NonNegativeInteger, toOb: NonNegativeInteger)) -> %
`directedGraph(obs, ars)`

constructs graph with objects`obs`

and arrows ars. This constructor just has pure abstract graph information without decoration information.

- directedGraph: FinitePoset S -> %
`directedGraph(poset)`

constructs graph from a partially ordered set. This will be a graph with, at most, one arrow between any two nodes.

- directedGraph: List Permutation S -> %
`directedGraph(perms)`

constructs graph from a list of permutations:`perms`

.

- directedGraph: List Record(value: S, posX: NonNegativeInteger, posY: NonNegativeInteger) -> %
`directedGraph(ob)`

is a constructor for graph with given objects`ob`

, more objects and arrows can be added later if required.

- directedGraph: List S -> %
`directedGraph(ob)`

is a constructor for graph with given list of object names and no arrows. Use this version of the constructor if you don`'t`

want to create specific`x`

,`y`

coordinates. more objects and arrows can be added later if required.- distance: (%, NonNegativeInteger, NonNegativeInteger) -> Integer
- from FiniteGraph S
- distanceMatrix: % -> Matrix Integer
- from FiniteGraph S
- flatten: DirectedGraph % -> %
- from FiniteGraph S
- getArrowIndex: (%, NonNegativeInteger, NonNegativeInteger) -> NonNegativeInteger
- from FiniteGraph S
- getArrows: % -> List Record(name: String, arrType: NonNegativeInteger, fromOb: NonNegativeInteger, toOb: NonNegativeInteger, xOffset: Integer, yOffset: Integer, map: List NonNegativeInteger)
- from FiniteGraph S
- getVertexIndex: (%, S) -> NonNegativeInteger
- from FiniteGraph S
- getVertices: % -> List Record(value: S, posX: NonNegativeInteger, posY: NonNegativeInteger)
- from FiniteGraph S
- hash: % -> SingleInteger
- from SetCategory
- hashUpdate!: (HashState, %) -> HashState
- from SetCategory
- incidenceMatrix: % -> Matrix Integer
- from FiniteGraph S
- inDegree: (%, NonNegativeInteger) -> NonNegativeInteger
- from FiniteGraph S
- initial: () -> %
- from FiniteGraph S
- isAcyclic?: % -> Boolean
- from FiniteGraph S
- isDirected?: () -> Boolean
- from FiniteGraph S
- isDirectSuccessor?: (%, NonNegativeInteger, NonNegativeInteger) -> Boolean
- from FiniteGraph S
- isFixPoint?: (%, NonNegativeInteger) -> Boolean
- from FiniteGraph S
- isFunctional?: % -> Boolean
- from FiniteGraph S
- isGreaterThan?: (%, NonNegativeInteger, NonNegativeInteger) -> Boolean
- from FiniteGraph S
- kgraph: (List S, String) -> %
- from FiniteGraph S
- laplacianMatrix: % -> Matrix Integer
- from FiniteGraph S
- latex: % -> String
- from SetCategory
- loopsArrows: % -> List Loop
- from FiniteGraph S
- loopsAtNode: (%, NonNegativeInteger) -> List Loop
- from FiniteGraph S
- loopsNodes: % -> List Loop
- from FiniteGraph S
- looseEquals: (%, %) -> Boolean
- from FiniteGraph S
- map: (%, List NonNegativeInteger, List S, Integer, Integer) -> %
- from FiniteGraph S
- mapContra: (%, List NonNegativeInteger, List S, Integer, Integer) -> %
- from FiniteGraph S
- max: % -> NonNegativeInteger
- from FiniteGraph S
- max: (%, List NonNegativeInteger) -> NonNegativeInteger
- from FiniteGraph S
- merge: (%, %) -> %
- from FiniteGraph S
- min: % -> NonNegativeInteger
- from FiniteGraph S
- min: (%, List NonNegativeInteger) -> NonNegativeInteger
- from FiniteGraph S
- nodeFromArrow: (%, NonNegativeInteger) -> List NonNegativeInteger
- from FiniteGraph S
- nodeFromNode: (%, NonNegativeInteger) -> List NonNegativeInteger
- from FiniteGraph S
- nodeToArrow: (%, NonNegativeInteger) -> List NonNegativeInteger
- from FiniteGraph S
- nodeToNode: (%, NonNegativeInteger) -> List NonNegativeInteger
- from FiniteGraph S
- outDegree: (%, NonNegativeInteger) -> NonNegativeInteger
- from FiniteGraph S
- routeArrows: (%, NonNegativeInteger, NonNegativeInteger) -> List NonNegativeInteger
- from FiniteGraph S
- routeNodes: (%, NonNegativeInteger, NonNegativeInteger) -> List NonNegativeInteger
- from FiniteGraph S
- spanningForestArrow: % -> List Tree Integer
- from FiniteGraph S
- spanningForestNode: % -> List Tree Integer
- from FiniteGraph S
- spanningTreeArrow: (%, NonNegativeInteger) -> Tree Integer
- from FiniteGraph S
- spanningTreeNode: (%, NonNegativeInteger) -> Tree Integer
- from FiniteGraph S
- subdiagramSvg: (Scene SCartesian 2, %, Boolean, Boolean) -> Void
- from FiniteGraph S
- terminal: S -> %
- from FiniteGraph S
- unit: (List S, String) -> %
- from FiniteGraph S