Exemplo n.º 1
0
 /// <summary>Initializes a new instance of the <see cref="IndexGraph{TEdgeData}" /> class.</summary>
 /// <param name="vertexModifier">The vertex adjacency modifier.</param>
 /// <param name="initialVerticesCount">The initial vertices count.</param>
 /// <param name="capacity">The vertices capacity.</param>
 public IndexGraph(int initialVerticesCount = 0, int capacity = 0, IVertexAdjacencyModifier <TEdgeData> vertexModifier = null)
 {
     _vertexModifier = vertexModifier ?? new VertexAdjacencyFactory <TEdgeData>();
     _edgesCounter   = new GraphEdgesCounter();
     _vertices       = new DefaultTailList <VertexAdjacency <TEdgeData> >(
         _vertexModifier.Empty, initialVerticesCount, capacity);
     Connectivity = _vertices.WrapAsGraphConnectivity();
 }
Exemplo n.º 2
0
        /// <summary>Initializes a new instance of the <see cref="IndexGraph{TEdgeData}"/> class.</summary>
        /// <param name="adjacency">The adjacency.</param>
        /// <param name="capacity">The capacity.</param>
        /// <param name="vertexModifier">The vertex modifier.</param>
        public IndexGraph(IReadOnlyList <VertexAdjacency <TEdgeData> > adjacency, int capacity = 0, IVertexAdjacencyModifier <TEdgeData> vertexModifier = null)
        {
            var specifiedVerticesCount = adjacency.GetIndexOfLastNotEmptyVertex() + 1;

            capacity = Math.Max(capacity, specifiedVerticesCount);

            _vertexModifier = vertexModifier ?? new VertexAdjacencyFactory <TEdgeData>();
            _edgesCounter   = new GraphEdgesCounter();

            var source = new List <VertexAdjacency <TEdgeData> >(capacity);

            source.AddRange(adjacency.Take(specifiedVerticesCount));

            _vertices = new DefaultTailList <VertexAdjacency <TEdgeData> >(source, _vertexModifier.Empty, adjacency.Count);

            Connectivity = _vertices.WrapAsGraphConnectivity();
        }