SharpGraph 1.3.1
See the version list below for details.
dotnet add package SharpGraph --version 1.3.1
NuGet\Install-Package SharpGraph -Version 1.3.1
<PackageReference Include="SharpGraph" Version="1.3.1" />
paket add SharpGraph --version 1.3.1
#r "nuget: SharpGraph, 1.3.1"
// Install SharpGraph as a Cake Addin #addin nuget:?package=SharpGraph&version=1.3.1 // Install SharpGraph as a Cake Tool #tool nuget:?package=SharpGraph&version=1.3.1
SharpGraph
A C# graph library with support for both directed- and undirected graphs (simpel- and multigraphs).
Features
- Serializable to json and deserializable from json.
- Graph properties:
- Vertices
- Edges (arrows and lines)
- Sources
- Sinks
- IsAcyclic
- HasCycles
- Density
- IsSparse
- IsDense
- IsDirected
- IsDirectedAcyclic
- Graph methods:
- AddVertex (given a vertex)
- AddEdge (given a edge)
- AdjacentVertices (given a vertex)
- AdjacentEdges (given a vertex)
- AllPaths (between two given vertices)
- Multiple graph representations available.
- AdjacencyList
- AdjacencyMatrix
Nuget
Install-Package SharpGraph
How to use
Step 1
Create a vertex class by extending the Vertex base class.
public class TestVertex : Vertex
{
public TestVertex(string identifier)
: base(identifier)
{
}
}
Step 2
Create a edge class by extending either the Line class (undirected edge) or the Arrow class (directed edge).
public class TestArrow : Arrow<TestVertex>
{
public TestArrow(TestVertex source, TestVertex target)
: base(source, target)
{
}
}
Step 3
Create a new instance of the Graph class with your own vertex and edge classes as generic types. You can use a fluent syntax for adding vertices and edges.
var vertex1 = new TestVertex("A");
var vertex2 = new TestVertex("B");
var vertex3 = new TestVertex("C");
var vertex4 = new TestVertex("D");
var graph = new Graph<TestVertex, TestArrow>()
.AddVertex(vertex1)
.AddVertex(vertex2)
.AddVertex(vertex3)
.AddVertex(vertex4)
.AddEdge(new TestArrow(vertex1, vertex2))
.AddEdge(new TestArrow(vertex1, vertex3))
.AddEdge(new TestArrow(vertex2, vertex4))
.AddEdge(new TestArrow(vertex3, vertex4));
var pathsVertex1ToVertex4 = graph.AllPaths(vertex1, vertex4);
foreach (var path in pathsVertex1ToVertex4)
{
Console.WriteLine(string.Join(", ", path.Select(i => $"{i.Source}->{i.Target}")));
}
This gives the following result on the console.
A->B, B->D
A->C, C->D
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net8.0
- morelinq (>= 4.3.0)
- Newtonsoft.Json (>= 13.0.3)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on SharpGraph:
Package | Downloads |
---|---|
SharpMachineLearning
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.3.11 | 103 | 9/19/2024 |
1.3.10 | 87 | 9/19/2024 |
1.3.9 | 80 | 9/19/2024 |
1.3.8 | 468 | 9/5/2024 |
1.3.7 | 117 | 9/5/2024 |
1.3.6 | 108 | 9/5/2024 |
1.3.5 | 108 | 9/5/2024 |
1.3.4 | 100 | 9/4/2024 |
1.3.3 | 103 | 9/1/2024 |
1.3.2 | 94 | 9/1/2024 |
1.3.1 | 96 | 9/1/2024 |
1.3.0 | 171 | 2/19/2024 |
1.2.9 | 121 | 2/13/2024 |
1.2.8 | 101 | 2/13/2024 |
1.2.7 | 180 | 12/20/2023 |
1.2.6 | 112 | 12/20/2023 |
1.2.5 | 277 | 3/27/2023 |
1.2.3 | 285 | 12/22/2022 |
1.2.2 | 417 | 6/1/2022 |
1.2.1 | 417 | 5/25/2022 |
1.2.0 | 418 | 5/1/2022 |
1.1.7 | 432 | 2/16/2022 |
1.1.6 | 422 | 2/16/2022 |
1.1.5 | 428 | 2/15/2022 |
1.1.4 | 425 | 2/15/2022 |
1.1.3 | 410 | 2/15/2022 |
1.1.2 | 403 | 2/15/2022 |
1.1.1 | 422 | 2/14/2022 |
1.1.0 | 422 | 2/13/2022 |
1.0.9 | 425 | 2/13/2022 |
1.0.8 | 441 | 1/15/2022 |
1.0.7 | 274 | 12/19/2021 |
1.0.6 | 297 | 11/19/2021 |
1.0.5 | 376 | 10/10/2021 |
1.0.4 | 335 | 10/10/2021 |