All Projects → matiii → Dijkstra.NET

matiii / Dijkstra.NET

Licence: MIT license
Graph processing library

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to Dijkstra.NET

lua-graph
Graph algorithms in lua
Stars: ✭ 57 (-38.04%)
Mutual labels:  dijkstra, dijkstra-algorithm
unity-dijkstras-pathfinding
Dijkstra's Pathfinding Algorithm Unity Implementation. (Not being maintained by me, it is just an experiment.)
Stars: ✭ 80 (-13.04%)
Mutual labels:  dijkstra, dijkstra-algorithm
Valhalla
Open Source Routing Engine for OpenStreetMap
Stars: ✭ 1,794 (+1850%)
Mutual labels:  dijkstra
pathfinding-visualizer
Website built using React Framework for visualizing Pathfinding and Maze Generation Algorithms.
Stars: ✭ 33 (-64.13%)
Mutual labels:  dijkstra
Algorithms
A collection of algorithms and data structures
Stars: ✭ 11,553 (+12457.61%)
Mutual labels:  dijkstra
Java Ds Algorithms
Data Structures and Algorithms in Java
Stars: ✭ 125 (+35.87%)
Mutual labels:  dijkstra
psycopgr
A Python wrapper of pgRouting for routing from nodes to nodes on real map.
Stars: ✭ 24 (-73.91%)
Mutual labels:  dijkstra
rustfst
Rust re-implementation of OpenFST - library for constructing, combining, optimizing, and searching weighted finite-state transducers (FSTs). A Python binding is also available.
Stars: ✭ 104 (+13.04%)
Mutual labels:  shortest-path
LightOSM.jl
A Julia package for downloading and analysing geospatial data from OpenStreetMap APIs.
Stars: ✭ 32 (-65.22%)
Mutual labels:  dijkstra
Advanced-Shortest-Paths-Algorithms
Java Code for Contraction Hierarchies Algorithm, A-Star Algorithm and Bidirectional Dijkstra Algorithm. Tested and Verified Code.
Stars: ✭ 63 (-31.52%)
Mutual labels:  dijkstra-algorithm
Pathfinder.vim
Vim plugin to suggest better movements
Stars: ✭ 228 (+147.83%)
Mutual labels:  dijkstra
Node Dijkstra
A NodeJS implementation of Dijkstra's algorithm
Stars: ✭ 135 (+46.74%)
Mutual labels:  dijkstra
coursera robotics
Contains coursera robotics specialization assignment codes
Stars: ✭ 65 (-29.35%)
Mutual labels:  dijkstra
Dijkstra
Fastest golang Dijkstra path finder
Stars: ✭ 107 (+16.3%)
Mutual labels:  dijkstra
Graph-Theory
The Repository is All about the Graph Algorithms. I am Still Working On it. I am trying to Note down all the variations of Popular graph Algorithms. I am also keeping the solution to the problems of Different Online Judges according to the topic. I hope you can find it useful.
Stars: ✭ 16 (-82.61%)
Mutual labels:  dijkstra
Erdos
modular and modern graph-theory algorithms framework in Java
Stars: ✭ 104 (+13.04%)
Mutual labels:  dijkstra
Pathfinding
Visual explanation of pathfinding algorithms and how a*, Dijkstra and BFS can be seen as the same algorithm with different parameter/data structures used under the hood
Stars: ✭ 165 (+79.35%)
Mutual labels:  dijkstra
Graph-Algorithms
Everything you need to know about graph theory to ace a technical interview 🔥
Stars: ✭ 87 (-5.43%)
Mutual labels:  dijkstra-algorithm
Pathfinder
A pathfinder visualizer in Flutter. Create mazes, generate random walls, or draw your own walls and see the pathfinding algorithms in action
Stars: ✭ 14 (-84.78%)
Mutual labels:  dijkstra
pathfinding-visualizer
A web app to help visualizing typical graph searching algorithms
Stars: ✭ 16 (-82.61%)
Mutual labels:  dijkstra-algorithm

Dijkstra.NET NuGet Version Build Status

Dijkstra algorithm which use priority queue thus complexity is equal O(ElogV) where E is number of edges and V is number of vertices. Used data structures are based on interfaces so you can implement your own or reused present. Simply example below. More information about algorithm you can find on Wikipedia.

Get Started

Install the latest version from NuGet

  Install-Package Dijkstra.NET

Simple example

using Dijkstra.NET.Graph;
using Dijkstra.NET.ShortestPath;

var graph = new Graph<int, string>();

graph.AddNode(1);
graph.AddNode(2);

graph.Connect(1, 2, 5, "some custom information in edge"); //First node has key equal 1

ShortestPathResult result = graph.Dijkstra(1, 2); //result contains the shortest path

var path = result.GetPath();

or

using Dijkstra.NET.Graph;
using Dijkstra.NET.ShortestPath;

var graph = new Graph<int, string>() + 1 + 2;

bool connected = graph >> 1 >> 2 >> 5 ^ "custome edge information"; 

ShortestPathResult result = graph.Dijkstra(1, 2); //result contains the shortest path

var path = result.GetPath();

Benchmark

For Graph where number of nodes is 1 000 000 and connections between them 1 000 000. The length of path is minimum 10.

BenchmarkDotNet=v0.10.10, OS=Windows 10.0.17134
Processor=Intel Core i7-4700HQ CPU 2.40GHz (Haswell), ProcessorCount=8
Frequency=2338342 Hz, Resolution=427.6534 ns, Timer=TSC
  [Host]     : .NET Framework 4.6.1 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3260.0
  Job-XQYAYC : .NET Framework 4.6.1 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.3260.0

LaunchCount=1  RunStrategy=Monitoring  TargetCount=3  
WarmupCount=2  
Method Mean Error StdDev Scaled ScaledSD Gen 0 Gen 1 Allocated
Dijkstra 7.515 ms 3.845 ms 0.2173 ms 1.00 0.00 - - 48 KB
PageRank 1,139.983 ms 762.417 ms 43.0780 ms 151.77 5.86 40000 40000 272365.8 KB

License

License

Dijkstra.NET is licensed under the MIT license. See LICENSE file for full license information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].