Show / Hide Table of Contents

Class ArrayAdjacencyGraph<TVertex, TEdge>

Immutable directed graph data structure.

Inheritance
System.Object
ArrayAdjacencyGraph<TVertex, TEdge>
Implements
IVertexAndEdgeListGraph<TVertex, TEdge>
IVertexListGraph<TVertex, TEdge>
IIncidenceGraph<TVertex, TEdge>
IImplicitGraph<TVertex, TEdge>
IEdgeListGraph<TVertex, TEdge>
IGraph<TVertex, TEdge>
IEdgeSet<TVertex, TEdge>
IVertexSet<TVertex>
IImplicitVertexSet<TVertex>
System.ICloneable
Inherited Members
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.ToString()
Namespace: QuikGraph
Assembly: QuikGraph.dll
Syntax
[Serializable]
public sealed class ArrayAdjacencyGraph<TVertex, TEdge> : IVertexAndEdgeListGraph<TVertex, TEdge>, IVertexListGraph<TVertex, TEdge>, IIncidenceGraph<TVertex, TEdge>, IImplicitGraph<TVertex, TEdge>, IEdgeListGraph<TVertex, TEdge>, IGraph<TVertex, TEdge>, IEdgeSet<TVertex, TEdge>, IVertexSet<TVertex>, IImplicitVertexSet<TVertex>, ICloneable where TEdge : IEdge<TVertex>
Type Parameters
Name Description
TVertex

Vertex type.

TEdge

Edge type

Remarks

It is efficient for large sparse graph representation where out-edge need to be enumerated only.

Constructors

| Improve this Doc View Source

ArrayAdjacencyGraph(IVertexAndEdgeListGraph<TVertex, TEdge>)

Initializes a new instance of the ArrayAdjacencyGraph<TVertex, TEdge> class.

Declaration
public ArrayAdjacencyGraph(IVertexAndEdgeListGraph<TVertex, TEdge> baseGraph)
Parameters
Type Name Description
IVertexAndEdgeListGraph<TVertex, TEdge> baseGraph

Wrapped graph.

Exceptions
Type Condition
System.ArgumentNullException

baseGraph is null.

Properties

| Improve this Doc View Source

AllowParallelEdges

Gets a value indicating if the graph allows parallel edges

Declaration
public bool AllowParallelEdges { get; }
Property Value
Type Description
System.Boolean
| Improve this Doc View Source

EdgeCount

Gets the edge count.

Declaration
public int EdgeCount { get; }
Property Value
Type Description
System.Int32
| Improve this Doc View Source

Edges

Gets the edges.

Declaration
public IEnumerable<TEdge> Edges { get; }
Property Value
Type Description
System.Collections.Generic.IEnumerable<TEdge>
| Improve this Doc View Source

IsDirected

Gets a value indicating if the graph is directed

Declaration
public bool IsDirected { get; }
Property Value
Type Description
System.Boolean
| Improve this Doc View Source

IsEdgesEmpty

Gets a value indicating whether there are no edges in this set. It is true if this edge set is empty, otherwise false.

Declaration
public bool IsEdgesEmpty { get; }
Property Value
Type Description
System.Boolean
| Improve this Doc View Source

IsVerticesEmpty

Gets a value indicating whether there are no vertices in this set. It is true if this vertex set is empty, otherwise false.

Declaration
public bool IsVerticesEmpty { get; }
Property Value
Type Description
System.Boolean
| Improve this Doc View Source

VertexCount

Gets the vertex count.

Declaration
public int VertexCount { get; }
Property Value
Type Description
System.Int32
| Improve this Doc View Source

Vertices

Gets the vertices.

Declaration
public IEnumerable<TVertex> Vertices { get; }
Property Value
Type Description
System.Collections.Generic.IEnumerable<TVertex>

Methods

| Improve this Doc View Source

Clone()

Clones this graph, returns this instance because this class is immutable.

Declaration
public ArrayAdjacencyGraph<TVertex, TEdge> Clone()
Returns
Type Description
ArrayAdjacencyGraph<TVertex, TEdge>

This graph.

| Improve this Doc View Source

ContainsEdge(TVertex, TVertex)

Checks if this graph contains an edge that link source and target vertices.

Declaration
public bool ContainsEdge(TVertex source, TVertex target)
Parameters
Type Name Description
TVertex source

Source vertex.

TVertex target

Target vertex.

Returns
Type Description
System.Boolean

True if an edge exists, false otherwise.

Exceptions
Type Condition
System.ArgumentNullException

source is null.

System.ArgumentNullException

target is null.

| Improve this Doc View Source

ContainsEdge(TEdge)

Determines whether this set contains the specified edge.

Declaration
public bool ContainsEdge(TEdge edge)
Parameters
Type Name Description
TEdge edge

Edge to check.

Returns
Type Description
System.Boolean

True if the specified edge is contained in this set, false otherwise.

Exceptions
Type Condition
System.ArgumentNullException

edge is null.

| Improve this Doc View Source

ContainsVertex(TVertex)

Determines whether this set contains the specified vertex.

Declaration
public bool ContainsVertex(TVertex vertex)
Parameters
Type Name Description
TVertex vertex

Vertex to check.

Returns
Type Description
System.Boolean

True if the specified vertex is contained in this set, false otherwise.

Exceptions
Type Condition
System.ArgumentNullException

vertex is null.

| Improve this Doc View Source

IsOutEdgesEmpty(TVertex)

Determines whether there are out-edges associated to vertex.

Declaration
public bool IsOutEdgesEmpty(TVertex vertex)
Parameters
Type Name Description
TVertex vertex

The vertex.

Returns
Type Description
System.Boolean

True if vertex has no out-edges, false otherwise.

Exceptions
Type Condition
System.ArgumentNullException

vertex is null.

VertexNotFoundException

vertex is not part of the graph.

| Improve this Doc View Source

OutDegree(TVertex)

Gets the count of out-edges of vertex.

Declaration
public int OutDegree(TVertex vertex)
Parameters
Type Name Description
TVertex vertex

The vertex.

Returns
Type Description
System.Int32

The count of out-edges of vertex.

Exceptions
Type Condition
System.ArgumentNullException

vertex is null.

VertexNotFoundException

vertex is not part of the graph.

| Improve this Doc View Source

OutEdge(TVertex, Int32)

Gets the out-edge of vertex at position index.

Declaration
public TEdge OutEdge(TVertex vertex, int index)
Parameters
Type Name Description
TVertex vertex

The vertex.

System.Int32 index

The index.

Returns
Type Description
TEdge

The out-edge at position index.

Exceptions
Type Condition
System.ArgumentNullException

vertex is null.

System.ArgumentOutOfRangeException

No vertex at index.

VertexNotFoundException

vertex is not part of the graph.

| Improve this Doc View Source

OutEdges(TVertex)

Gets the out-edges of vertex.

Declaration
public IEnumerable<TEdge> OutEdges(TVertex vertex)
Parameters
Type Name Description
TVertex vertex

The vertex.

Returns
Type Description
System.Collections.Generic.IEnumerable<TEdge>

An enumeration of the out-edges of vertex.

Exceptions
Type Condition
System.ArgumentNullException

vertex is null.

VertexNotFoundException

vertex is not part of the graph.

| Improve this Doc View Source

TryGetEdge(TVertex, TVertex, out TEdge)

Tries to get the edge that link source and target vertices.

Declaration
public bool TryGetEdge(TVertex source, TVertex target, out TEdge edge)
Parameters
Type Name Description
TVertex source

Source vertex.

TVertex target

Target vertex.

TEdge edge

Edge found, otherwise null.

Returns
Type Description
System.Boolean

True if an edge was found, false otherwise.

Exceptions
Type Condition
System.ArgumentNullException

source is null.

System.ArgumentNullException

target is null.

| Improve this Doc View Source

TryGetEdges(TVertex, TVertex, out IEnumerable<TEdge>)

Tries to get edges that link source and target vertices.

Declaration
public bool TryGetEdges(TVertex source, TVertex target, out IEnumerable<TEdge> edges)
Parameters
Type Name Description
TVertex source

Source vertex.

TVertex target

Target vertex.

System.Collections.Generic.IEnumerable<TEdge> edges

Edges found, otherwise null.

Returns
Type Description
System.Boolean

True if at least an edge was found, false otherwise.

Exceptions
Type Condition
System.ArgumentNullException

source is null.

System.ArgumentNullException

target is null.

| Improve this Doc View Source

TryGetOutEdges(TVertex, out IEnumerable<TEdge>)

Tries to get the out-edges of vertex.

Declaration
public bool TryGetOutEdges(TVertex vertex, out IEnumerable<TEdge> edges)
Parameters
Type Name Description
TVertex vertex

The vertex.

System.Collections.Generic.IEnumerable<TEdge> edges

Out-edges.

Returns
Type Description
System.Boolean

True if vertex was found or/and out-edges were found, false otherwise.

Exceptions
Type Condition
System.ArgumentNullException

vertex is null.

Explicit Interface Implementations

| Improve this Doc View Source

ICloneable.Clone()

Declaration
object ICloneable.Clone()
Returns
Type Description
System.Object

Implements

IVertexAndEdgeListGraph<TVertex, TEdge>
IVertexListGraph<TVertex, TEdge>
IIncidenceGraph<TVertex, TEdge>
IImplicitGraph<TVertex, TEdge>
IEdgeListGraph<TVertex, TEdge>
IGraph<TVertex, TEdge>
IEdgeSet<TVertex, TEdge>
IVertexSet<TVertex>
IImplicitVertexSet<TVertex>
System.ICloneable

Extension Methods

DirectedGraphMLExtensions.ToDirectedGraphML<TVertex, TEdge>(IVertexAndEdgeListGraph<TVertex, TEdge>)
DirectedGraphMLExtensions.ToDirectedGraphML<TVertex, TEdge>(IVertexAndEdgeListGraph<TVertex, TEdge>, Func<TVertex, GraphColor>)
DirectedGraphMLExtensions.ToDirectedGraphML<TVertex, TEdge>(IVertexAndEdgeListGraph<TVertex, TEdge>, VertexIdentity<TVertex>, EdgeIdentity<TVertex, TEdge>)
DirectedGraphMLExtensions.ToDirectedGraphML<TVertex, TEdge>(IVertexAndEdgeListGraph<TVertex, TEdge>, VertexIdentity<TVertex>, EdgeIdentity<TVertex, TEdge>, Action<TVertex, DirectedGraphNode>, Action<TEdge, DirectedGraphLink>)
DirectedGraphMLExtensions.OpenAsDGML<TVertex, TEdge>(IVertexAndEdgeListGraph<TVertex, TEdge>, String)
GraphMLExtensions.SerializeToGraphML<TVertex, TEdge, TGraph>(TGraph, String)
GraphMLExtensions.SerializeToGraphML<TVertex, TEdge, TGraph>(TGraph, String, VertexIdentity<TVertex>, EdgeIdentity<TVertex, TEdge>)
GraphMLExtensions.SerializeToGraphML<TVertex, TEdge, TGraph>(TGraph, XmlWriter)
GraphMLExtensions.SerializeToGraphML<TVertex, TEdge, TGraph>(TGraph, XmlWriter, VertexIdentity<TVertex>, EdgeIdentity<TVertex, TEdge>)
GraphMLExtensions.DeserializeFromGraphML<TVertex, TEdge, TGraph>(TGraph, XmlReader, IdentifiableVertexFactory<TVertex>, IdentifiableEdgeFactory<TVertex, TEdge>)
GraphMLExtensions.DeserializeFromGraphML<TVertex, TEdge, TGraph>(TGraph, TextReader, IdentifiableVertexFactory<TVertex>, IdentifiableEdgeFactory<TVertex, TEdge>)
GraphMLExtensions.DeserializeFromGraphML<TVertex, TEdge, TGraph>(TGraph, String, IdentifiableVertexFactory<TVertex>, IdentifiableEdgeFactory<TVertex, TEdge>)
GraphMLExtensions.DeserializeAndValidateFromGraphML<TVertex, TEdge, TGraph>(TGraph, TextReader, IdentifiableVertexFactory<TVertex>, IdentifiableEdgeFactory<TVertex, TEdge>)
SerializationExtensions.SerializeToBinary<TVertex, TEdge>(IGraph<TVertex, TEdge>, Stream)
SerializationExtensions.SerializeToXml<TVertex, TEdge, TGraph>(TGraph, XmlWriter, VertexIdentity<TVertex>, EdgeIdentity<TVertex, TEdge>, String, String, String, String)
SerializationExtensions.SerializeToXml<TVertex, TEdge, TGraph>(TGraph, XmlWriter, VertexIdentity<TVertex>, EdgeIdentity<TVertex, TEdge>, String, String, String, String, Action<XmlWriter, TGraph>, Action<XmlWriter, TVertex>, Action<XmlWriter, TEdge>)
GraphExtensions.ToArrayAdjacencyGraph<TVertex, TEdge>(IVertexAndEdgeListGraph<TVertex, TEdge>)
GraphExtensions.ToBidirectionalGraph<TVertex, TEdge>(IVertexAndEdgeListGraph<TVertex, TEdge>)
GraphExtensions.ToCompressedRowGraph<TVertex, TEdge>(IVertexAndEdgeListGraph<TVertex, TEdge>)
AlgorithmExtensions.GetVertexIdentity<TVertex>(IVertexSet<TVertex>)
AlgorithmExtensions.GetEdgeIdentity<TVertex, TEdge>(IEdgeSet<TVertex, TEdge>)
AlgorithmExtensions.TreeBreadthFirstSearch<TVertex, TEdge>(IVertexListGraph<TVertex, TEdge>, TVertex)
AlgorithmExtensions.TreeDepthFirstSearch<TVertex, TEdge>(IVertexListGraph<TVertex, TEdge>, TVertex)
AlgorithmExtensions.TreeCyclePoppingRandom<TVertex, TEdge>(IVertexListGraph<TVertex, TEdge>, TVertex)
AlgorithmExtensions.TreeCyclePoppingRandom<TVertex, TEdge>(IVertexListGraph<TVertex, TEdge>, TVertex, IMarkovEdgeChain<TVertex, TEdge>)
AlgorithmExtensions.ShortestPathsDijkstra<TVertex, TEdge>(IVertexAndEdgeListGraph<TVertex, TEdge>, Func<TEdge, Double>, TVertex)
AlgorithmExtensions.ShortestPathsAStar<TVertex, TEdge>(IVertexAndEdgeListGraph<TVertex, TEdge>, Func<TEdge, Double>, Func<TVertex, Double>, TVertex)
AlgorithmExtensions.ShortestPathsBellmanFord<TVertex, TEdge>(IVertexAndEdgeListGraph<TVertex, TEdge>, Func<TEdge, Double>, TVertex, out Boolean)
AlgorithmExtensions.ShortestPathsDag<TVertex, TEdge>(IVertexAndEdgeListGraph<TVertex, TEdge>, Func<TEdge, Double>, TVertex)
AlgorithmExtensions.Sinks<TVertex, TEdge>(IVertexListGraph<TVertex, TEdge>)
AlgorithmExtensions.Roots<TVertex, TEdge>(IVertexListGraph<TVertex, TEdge>)
AlgorithmExtensions.TopologicalSort<TVertex, TEdge>(IVertexListGraph<TVertex, TEdge>)
AlgorithmExtensions.SourceFirstTopologicalSort<TVertex, TEdge>(IVertexAndEdgeListGraph<TVertex, TEdge>)
AlgorithmExtensions.StronglyConnectedComponents<TVertex, TEdge>(IVertexListGraph<TVertex, TEdge>, IDictionary<TVertex, Int32>)
AlgorithmExtensions.WeaklyConnectedComponents<TVertex, TEdge>(IVertexListGraph<TVertex, TEdge>, IDictionary<TVertex, Int32>)
AlgorithmExtensions.CondensateStronglyConnected<TVertex, TEdge, TGraph>(IVertexAndEdgeListGraph<TVertex, TEdge>)
AlgorithmExtensions.CondensateWeaklyConnected<TVertex, TEdge, TGraph>(IVertexAndEdgeListGraph<TVertex, TEdge>)
AlgorithmExtensions.OddVertices<TVertex, TEdge>(IVertexAndEdgeListGraph<TVertex, TEdge>)
AlgorithmExtensions.IsDirectedAcyclicGraph<TVertex, TEdge>(IVertexListGraph<TVertex, TEdge>)
AlgorithmExtensions.OfflineLeastCommonAncestor<TVertex, TEdge>(IVertexListGraph<TVertex, TEdge>, TVertex, IEnumerable<SEquatableEdge<TVertex>>)
AlgorithmExtensions.ComputeTransitiveReduction<TVertex, TEdge>(IEdgeListGraph<TVertex, TEdge>)
AlgorithmExtensions.ComputeTransitiveClosure<TVertex, TEdge>(IEdgeListGraph<TVertex, TEdge>, Func<TVertex, TVertex, TEdge>)
AlgorithmExtensions.Clone<TVertex, TEdge>(IVertexAndEdgeListGraph<TVertex, TEdge>, Func<TVertex, TVertex>, Func<TEdge, TVertex, TVertex, TEdge>, IMutableVertexAndEdgeSet<TVertex, TEdge>)
GraphvizExtensions.ToGraphviz<TVertex, TEdge>(IEdgeListGraph<TVertex, TEdge>)
GraphvizExtensions.ToGraphviz<TVertex, TEdge>(IEdgeListGraph<TVertex, TEdge>, Action<GraphvizAlgorithm<TVertex, TEdge>>)
GraphvizExtensions.ToSvg<TVertex, TEdge>(IEdgeListGraph<TVertex, TEdge>)
GraphvizExtensions.ToSvg<TVertex, TEdge>(IEdgeListGraph<TVertex, TEdge>, Action<GraphvizAlgorithm<TVertex, TEdge>>)
MsaglGraphExtensions.CreateMsaglPopulator<TVertex, TEdge>(IEdgeListGraph<TVertex, TEdge>)
MsaglGraphExtensions.CreateMsaglPopulator<TVertex, TEdge>(IEdgeListGraph<TVertex, TEdge>, String, IFormatProvider)
MsaglGraphExtensions.CreateMsaglPopulator<TVertex, TEdge>(IEdgeListGraph<TVertex, TEdge>, VertexIdentity<TVertex>)
MsaglGraphExtensions.ToMsaglGraph<TVertex, TEdge>(IEdgeListGraph<TVertex, TEdge>, MsaglVertexNodeEventHandler<TVertex>, MsaglEdgeEventHandler<TVertex, TEdge>)
MsaglGraphExtensions.ToMsaglGraph<TVertex, TEdge>(IEdgeListGraph<TVertex, TEdge>, VertexIdentity<TVertex>, MsaglVertexNodeEventHandler<TVertex>, MsaglEdgeEventHandler<TVertex, TEdge>)
  • Improve this Doc
  • View Source
In This Article
Back to top QuikGraph