0.17.0 - 2024-01-11
-
Abstractions:
IPartialDictionary<TKey, TValue>
,IReadOnlyDictionary<TKey, TValue>
-
Models: Factory method
IncidenceEnumerator<TVertex, TNeighborEnumerator>.Create<TGraph>(TGraph graph, TVertex vertex)
-
Search:
Incidence.AdditiveEnumerableDijkstra<TVertex, TWeight>
,Incidence.AdditiveEnumerableDijkstra<TVertex, TNeighborEnumerator, TWeight>
-
Search:
Incidence.EnumerableDijkstra<TVertex, TWeight>
,Incidence.EnumerableDijkstra<TVertex, TNeighborEnumerator, TWeight>
- Models: Removed requirement of
IReadOnlyDictionary<TVertex, List<TVertex>>
forList*Graph<>
in favor of justIDictionary<TVertex, List<TVertex>>
. - Models: Renamed
TailCount
toMinVertexCount
inList*Graph<>
andReadOnly*Graph<>
. - Models: Changed factory type from
AdjacencyEnumerator<TVertex, TEdge>
toAdjacencyEnumerator<TEdge, TEdgeEnumerator>
. - Search: Reordered relaxed edge event after distance map update.
0.16.7-preview - 2024-01-07
- Search:
Adjacency.AdditiveEnumerableDijkstra<TVertex, TWeight>
,Adjacency.AdditiveEnumerableDijkstra<TVertex, TNeighborEnumerator, TWeight>
- Search:
Adjacency.EnumerableDijkstra<TVertex, TWeight>
,Adjacency.EnumerableDijkstra<TVertex, TNeighborEnumerator, TWeight>
0.16.5 - 2024-01-07
- Primitives:
EqualityComparerEquatable<T, TComparer>
,DefaultEqualityComparerEquatable<T>
- Primitives.Specialized: Another overload of
Int32ReadOnlyDictionary<TValue>.CreateWithAbsence<TValueList, TComparer>()
- Models: Renamed
VertexCount
toTailCount
in some graph types. - Primitives.Specialized: Changed signature of
Int32ReadOnlyDictionary<TValue>.CreateWithAbsence<TValueList>()
to useDefaultComparerEquatable<TValue?>
instead ofDefaultAbsence<T>
. - Primitives.Specialized: Changed signature of
Int32IndirectReadOnlyDictionary<TKey, TValue>.CreateFromListWithAbsence<TKeyToIndexMap, TValueList>()
to useDefaultComparerEquatable<TValue?>
instead ofDefaultAbsence<T>
.
- Primitives:
DefaultAbsence<T>
- Primitives.Specialized:
ArrayPrefix<T>
0.16.4 - 2024-01-02
- Models: Renamed
*Factory
static classes to match the types they create. - Models.Specialized: Removed
Int32*GraphFactory
static class in favor of static factory methods inInt32*Graph
. - Models.Specialized: Renamed
*Factory
static classes to match the types they create. - Primitives: Fixed XML-doc comment.
- Primitives.Specialized: Renamed
*Factory
static classes to match the types they create. - Traversal.Specialized: Fixed Readme.
0.16.3 - 2024-01-01
- Models:
net8.0
target framework moniker to supportFrozenSet<T>
- Models:
FrozenSetEnumeratorProvider<T>
,HashSetEnumeratorProvider<T>
- Models:
ArrayEnumeratorProvider<T>
,ArraySegmentEnumeratorProvider<T>
- Models:
ReadOnlyAdjacencyGraphFactory<TVertex>
,ReadOnlyIncidenceGraphFactory<TVertex, TEdge>
- Abstractions: Fixed package description.
- Primitives.Specialized: Fixed
ArrayPrefixEnumerator<T>
constructor.
0.16.2 - 2023-07-28
-
Models:
ListEnumeratorProvider<T>
-
Traversal:
Adjacency.EagerBfs<TVertex, TNeighborEnumerator>
,Adjacency.EagerBfs<TVertex>
-
Traversal:
Adjacency.EagerDfs<TVertex, TNeighborEnumerator>
,Adjacency.EagerDfs<TVertex>
-
Traversal:
Adjacency.RecursiveDfs<TVertex, TNeighborEnumerator>
,Adjacency.RecursiveDfs<TVertex>
-
Traversal.Specialized:
Adjacency.EagerBfs<TNeighborEnumerator>
,Adjacency.EagerBfs
-
Traversal.Specialized:
Adjacency.EagerDfs<TNeighborEnumerator>
,Adjacency.EagerDfs
-
Traversal.Specialized:
Adjacency.EnumerableBfs<TNeighborEnumerator>
,Adjacency.EnumerableBfs
-
Traversal.Specialized:
Adjacency.EnumerableDfs<TNeighborEnumerator>
,Adjacency.EnumerableDfs
-
Traversal.Specialized:
Adjacency.EnumerableGenericSearch<TNeighborEnumerator>
,Adjacency.EnumerableGenericSearch
-
Traversal.Specialized:
Adjacency.RecursiveDfs<TNeighborEnumerator>
,Adjacency.RecursiveDfs
-
Traversal.Specialized:
Incidence.EagerBfs<TEdge>
,Incidence.EagerBfs
-
Traversal.Specialized:
Incidence.EagerDfs<TEdge>
,Incidence.EagerDfs
-
Traversal.Specialized:
Incidence.EnumerableBfs<TEdge, TEdgeEnumerator>
,Incidence.EnumerableBfs<TEdge>
-
Traversal.Specialized:
Incidence.EnumerableDfs<TEdge, TEdgeEnumerator>
,Incidence.EnumerableDfs<TEdge>
-
Traversal.Specialized:
Incidence.EnumerableGenericSearch<TEdge, TEdgeEnumerator>
,Incidence.EnumerableGenericSearch<TEdge>
-
Traversal.Specialized:
Incidence.RecursiveDfs<TEdge, TEdgeEnumerator>
,Incidence.RecursiveDfs<TEdge>
-
Abstractions: Renamed type parameters and fixed XML-doc comments.
-
Models: Moved
IncidenceEnumerator<>
toArborescence.Models
namespace. -
Models: Renamed type parameters and fixed XML-doc comments.
-
Models.Specialized: Renamed type parameters and fixed XML-doc comments.
-
Primitives: Fixed
Endpoints<TVertex>
. -
Primitives.Specialized: Fixed
Int32Dictionary<>
. -
Traversal: Renamed type parameters and fixed XML-doc comments.
0.16.1 - 2023-06-11
- Models.Specialized: XML-doc comments
- Primitives.Specialized: XML-doc comments
- Models: Improved package description.
- Primitives.Specialized: Renamed
IndexedColorDictionary
toInt32ColorDictionary
.
0.16 - 2023-06-05
- Abstractions:
IEnumeratorProvider<>
,IDictionaryAddition<>
,IReadOnlyMultimapConcept<>
- Models:
AdjacencyEnumerator<>
,IncidenceEnumerator<>
- Models:
ListAdjacencyGraph<>
,ListIncidenceGraph<>
,ReadOnlyAdjacencyGraph<>
,ReadOnlyIncidenceGraph<>
- Models:
ArrayEnumeratorProvider<T>
,ArraySegmentEnumeratorProvider<T>
- Models:
ListMultimapConcept<>
,ReadOnlyMultimapConcept<>
- Models.Specialized:
Int32AdjacencyGraph
,Int32IncidenceGraph
- Primitives:
DefaultAbsence<T>
- Primitives.Specialized:
Int32ReadOnlyDictionary<>
,Int32IndirectReadOnlyDictionary<>
,Int32IndirectDictionary<>
- Abstractions: Renamed some interfaces and some methods.
- Models: Moved a lot of types to Models.Specialized project.
- Traversal: Moved
Endpoints<TVertex>
andColor
types to Primitives project. - Traversal: Moved
IndexedColorDictionary
types to Primitives.Specialized project. - Traversal: Moved
EnumerableBfs<>
andEnumerableDfs<>
types to Traversal.Specialized project.
- Dropped support of
.netcoreapp3.1
and several other TFMs. - Models: Dropped support of
netstandard1.0
TFM. - Models:
Int32Endpoints
- Models:
SimpleIncidenceGraph
,MutableSimpleIncidenceGraph
,MutableUndirectedSimpleIncidenceGraph
- Models:
IndexedIncidenceGraph
,MutableIndexedIncidenceGraph
,UndirectedIndexedIncidenceGraph
,MutableUndirectedIndexedIncidenceGraph
0.15.3 - 2023-02-09
- Traversal:
EagerBfs<TVertex, TEdge, TEdgeEnumerator>
,EagerDfs<TVertex, TEdge, TEdgeEnumerator>
,RecursiveDfs<TVertex, TEdge, TEdgeEnumerator>
- Traversal: Added a cancellation token to the eager versions of the algorithms.
- Traversal: Changed the type for the sources from
TSourceEnumerator : IEnumerator<TVertex>
toTSourceCollection : IEnumerable<TVertex>
.
- Traversal:
EagerBfs<TGraph, TVertex, TEdge, TEdgeEnumerator>
,EagerDfs<TGraph, TVertex, TEdge, TEdgeEnumerator>
,RecursiveDfs<TGraph, TVertex, TEdge, TEdgeEnumerator>
0.15.2 - 2023-01-25
- Traversal:
Incidence.EnumerableGenericSearch<TVertex, TEdge>
,Incidence.EnumerableGenericSearch<TVertex, TEdge, TEdgeEnumerator>
- Traversal:
Incidence.EnumerableBfs<TVertex, TEdge>
,Incidence.EnumerableBfs<TVertex, TEdge, TEdgeEnumerator>
- Traversal:
Incidence.EnumerableDfs<TVertex, TEdge>
,Incidence.EnumerableDfs<TVertex, TEdge, TEdgeEnumerator>
- Traversal: Changed return type of the adjacency algorithms from
IEnumerator<T>
toIEnumerable<T>
.
- Traversal:
GenericSearch<TGraph, TVertex, TEdge, TEdgeEnumerator>
,EnumerableBfs<TGraph, TVertex, TEdge, TEdgeEnumerator>
,EnumerableDfs<TGraph, TVertex, TEdge, TEdgeEnumerator>
0.15.1 - 2023-01-19
- Traversal:
Adjacency.EnumerableDfs<TVertex, TNeighborEnumerator>
,Adjacency.EnumerableDfs<TVertex>
0.15.0 - 2023-01-17
- Abstractions:
IForwardIncidence<TVertex, TEdge, TEdges>
- Traversal:
Adjacency.EnumerableGenericSearch<TVertex, TNeighborEnumerator>
,Adjacency.EnumerableGenericSearch<TVertex>
- Traversal:
Adjacency.EnumerableBfs<TVertex, TNeighborEnumerator>
,Adjacency.EnumerableBfs<TVertex>
- Samples: Project Arborescence.FlightGraphs
- Abstractions: Renamed
EnumerateAdjacentVertices(TVertex)
toEnumerateNeighbors(TVertex vertex)
. - Abstractions: Elaborated Readme file.
- Models: Renamed non-generic type
Endpoints
toInt32Endpoints
. - Primitives: Moved
Endpoints<TVertex>
to Traversal project.
- Abstractions:
ITraversable<TVertex, TEdge, TEdges>
0.14.1 - 2022-01-10
- Models:
Arborescence.Models.Compatibility
namespace with graph implementations for legacy TFMs
0.14.0 - 2022-01-07
- Abstractions:
IHeadIncidence<TVertex, TEdge>
,ITailIncidence<TVertex, TEdge>
,IOutEdgesIncidence<TVertex, TEdges>
,ITraversable<TVertex, TEdge, TEdges>
- Models:
AdditiveMonoid<T>
- Dropped support of
netcoreapp2.1
in favor ofnetcoreapp3.1
. - Traversal: Added
notnull
constraint forTVertex
where appropriate.
- Abstractions:
IIncidenceGraph<TVertex, TEdge, TEdges>
,IBidirectionalGraph<TVertex, TEdge, TEdges>
- Models:
Int32AdditiveMonoid
- Models: types in
Arborescence.Models.Compatibility
namespace - Primitives:
ArraySegmentEnumerator<T>
0.13.1 - 2021-07-07
- Models: Missing types for .NET 5 target framework.
- Primitives:
IndexedSet
andCompactSet
now implementIReadOnlySet<int>
when targeting .NET 5.
0.13.0 - 2021-06-27
- Abstractions: Nullable attributes.
- Models: Nullable attributes.
- Primitives:
IndexedDictionary<TKey, TValue, TIndexMap>
— an indirect key-to-value map via an intermediate index map. - Primitives:
IndexedDictionary<TKey, TValue, TIndexMap, TDummy>
— an indirect key-to-value map with a marker for missing values. - Primitives: More nullability annotations.
- Primitives:
readonly
modifiers to the members of non-readonly enumerators. - Traversal: Nullable attributes.
- Primitives: Fixed equality checking for
IndexedDictionary<TValue, TDummy>
. - Primitives:
IndexedDictionary<TValue, TDummy>.Count
now throwsNotSupportedException
. - Primitives: Fixed
GetHashCode()
forEndpoints<TVertex>
.
0.12.0 - 2021-06-10
- Traversal: Calling
Dispose()
for out-edges enumerators. - Traversal: Moved
EnumerableBfs`3
andEnumerableDfs`3
toArborescence.Traversal.Specialized
namespace. - Primitives:
IndexedDictionary<TValue, TDummy>
— a map with a marker for missing values.
- Traversal: Made public methods of
GenericSearch`4
,EnumerableBfs`3
,EnumerableBfs`4
,EnumerableDfs`3
,EnumerableDfs`4
to be non-iterator, so arguments check takes place eagerly.
- Traversal: Moved
EnumerableBfs`3
andEnumerableDfs`3
fromArborescence.Traversal
namespace.
0.11.0 - 2021-05-30
- Primitives: Moved
IndexedSet
andIndexedSet
from Models. - Primitives:
IndexedDictionary<TValue>
. - Traversal:
ContainsKey()
andTryGetValue()
toIndexedColorDictionary
.
- Models: Moved
IndexedSet
andIndexedSet
to Primitives.
- Traversal: Exception in indexer for
IndexedColorDictionary
.
0.10.0 - 2021-05-30
- Models:
CompactSet
structure implementingISet<int>
with bit array as backing store.
- Abstractions: Renamed
IMonoidPolicy<T>
toIMonoid<T>
. - Models: Renamed
Int32AdditiveMonoidPolicy
toInt32AdditiveMonoid
.
- Traversal: Added throwing
ArgumentNullException
in case ifcolorMap
, orexploredSet
, orfringe
arenull
.
- Abstractions:
IReadOnlySetPolicy<>
,ISetPolicy<>
,IMapPolicy<>
,IReadOnlyMapPolicy<>
,IContainerPolicy<>
. - Models:
IndexedSetPolicy
,CompactSetPolicy
,IndexedColorMapPolicy
. - Traversal:
EagerBfs`6
,EagerDfs`6
,RecursiveDfs`6
,EnumerableBfs`6
,EnumerableDfs`6
,GenericSearch`8
.
0.9.0 - 2021-01-13
- Abstractions: Nullability attributes for legacy target frameworks.
- Traversal: Renamed
Bfs<>
andDfs<>
toEnumerableBfs<>
andEnumerableDfs<>
for consistency with existing generic types.
- Abstractions:
netcoreapp3.1
from target frameworks.
0.8.1 - 2021-01-08
- Traversal:
EagerBfs<>
andEagerDfs<>
generic types without concept for the vertex color map. - Traversal:
IndexedColorDictionary
structure implementingIDictionary<int, Color>
with an array as backing store.
0.8.0 - 2021-01-06
- Models:
net5.0
as another target framework. - Models:
IndexedSet
structure implementingISet<int>
with an array as backing store. - Traversal: Another
GenericSearch<>
struct with less type parameters. - Traversal:
EnumerableBfs<>
andEnumerableDfs<>
generic types without concept for the vertex set.
- Traversal: XML-doc comments.
0.7.1 - 2020-12-26
- Marked assemblies as CLS-compliant.
- Abstractions: Added nullability annotations.
- Primitives: Replaced throwing of
IndexOutOfRangeException
withArgumentOutOfRangeException
. - Traversal: Renamed edge and vertex handlers to
EdgeHandler<>
andVertexHandler<>
.
0.7.0 - 2020-12-26
- Abstractions:
IAdjacency<>
,IAdjacencyMatrix<>
interfaces.
- Dropped support of
netcoreapp2.0
in favor ofnetcoreapp2.1
. - Models: Added arguments check to
IndexedSetPolicy.Add()
to ensure the invariant of “contains after add”. - Traversal: Added arguments check to
IndexedColorMapPolicy.AddOrUpdate()
to ensure the invariant of “contains after add”. - Traversal: Refactored
GenericSearch<>
to be O(n) instead of O(m) in terms of worst-case space complexity. - Traversal: Renamed
InstantBfs<>
andInstantDfs<>
toEagerBfs<>
andEagerDfs<>
respectively.
- Abstractions:
IHeadConcept<>
,ITailConcept<>
,IOutEdgesConcept<>
,IInEdgesConcept<>
. - Traversal:
ReverseDfs<>
since its worst-case space complexity is O(m).
0.6.0 - 2020-11-10
- Abstractions:
IReadOnlySetPolicy<>
andIReadOnlyMapPolicy<>
interfaces.
- Abstractions: Graph concepts.
- Models: Graph concept implementations.
0.5.0 - 2020-11-03
- Models: Throwing
Add()
method to builders in addition to non-throwingTryAdd()
.
- Traversal: The order of parameters in
Enumerate*()
signatures forBfs<>
andDfs<>
.
- Models:
GraphBuilderExtensions
class withTryAdd<>()
extension method.
0.4.2 - 2020-10-21
- Models: Fixed documentation comments.
- Models: Made
initialVertexCount
optional.
0.4.1 - 2020-10-15
- Models:
GraphBuilderExtensions
class withTryAdd<>()
extension method.
0.4.0 - 2020-09-24
- Models:
netcoreapp2.0
as another target framework. - Models:
Arborescence.Models.Compatibility
namespace for the legacy types depending onArraySegmentEnumerator<T>
.
- Models: Reimplemented the graph models in terms of
ArraySegment<T>.Enumerator
, for newer versions of the BCL only. - Models: Moved original versions of the models to
Arborescence.Models.Compatibility
namespace. - Primitives: Marked
ArraySegmentEnumerator<T>
as obsolete for newer versions of the BCL.
0.3.2 - 2020-09-06
- Models: Moved
IndexedSetPolicy
andCompactSetPolicy
from Traversal. - Traversal: The most basic versions of BFS and DFS.
- Traversal: Moved
IndexedSetPolicy
andCompactSetPolicy
to Models.
0.3.1 - 2020-08-13
- Models:
SimpleIncidenceGraph.UndirectedBuilder
. - Models:
MutableUndirectedSimpleIncidenceGraph
.
- Models: Argument checking in a couple of graph models.
0.3.0 - 2020-07-31
- Primitives: Non-generic
Endpoints
struct. - Primitives: Target framework
netstandard2.1
to support nullability attributes. - Primitives:
Empty
property to enumerators. - Models: non-generic
UndirectedIndexedIncidenceGraphPolicy
struct. - Models:
MutableIndexedIncidenceGraph
.
- Primitives:
ArraySegmentEnumerator<T>
constructor. - Primitives: Made
Current
properties of enumerator structsreadonly
. - Primitives: Bumped minimum target framework to
netstandard1.3
. - Models: Bumped minimum target framework to
netstandard1.3
. - Models: Reimplemented
IndexedIncidenceGraph.Builder
andUndirectedIndexedIncidenceGraph.Builder
with sorting. - Models: Reimplemented
SimpleIncidenceGraph
withEndpoints
as edge.
0.2.0 - 2020-07-20
- Models:
SimpleIncidenceGraph
,SimpleIncidenceGraphPolicy
.
- Models: Renamed
AdjacencyListIncidenceGraph
toIndexedIncidenceGraph
. - Models: Replaced
AdjacencyListIncidenceGraphBuilder
withIndexedIncidenceGraph.Builder
.
- Models:
EdgeListIncidenceGraph
,SortedAdjacencyListIncidenceGraph
. - Models: Some obsolete concepts.
0.1.1 - 2020-07-13
- Generating XML documentation files.
- Primitives: Basic blocks for building algorithms and data structures.
- Models: Data structures for graphs and concept models to manipulate them.
- Traversal: Graph traversal algorithms.
0.1.0 - 2020-07-05
- Abstractions: The interface for graphs to be examined in a data-structure agnostic fashion.