-
Notifications
You must be signed in to change notification settings - Fork 100
What is Algorithmia?
Algorithm and data-structure library for .NET 3.5 and up. Algorithmia contains sophisticated algorithms and data-structures like graphs, priority queues, command, undo-redo and more.
Algorithmia is one of the pillars of LLBLGen Pro v3 and up and is used in production successfully since May 2010. Many of the data-structures and algorithms in Algorithmia contain references to papers and articles on Wikipedia or other websites where you can find additional information regarding the algorithm or data-structure implemented.
The core design of Algorithmia is about making algorithms and data-structures which are known for many years available to the .NET developer in easy to use and properly documented classes and methods. As algorithms in general work on data-structures of some sort and as .NET is an OO framework, it's natural to implement the data-structures used by various algorithms as classes and include them with the algorithms in one library.
.NET has its fair share of data-structure libraries, however they all didn't meet our requirements for our system, so we wrote our own. Especially the Command/Undo/Redo system we needed which had to be deeply integrated into the data-structures wasn't available. As the .NET framework is already offering a vast amount of algorithms and data-structures we didn't want to re-invent the wheel, hence we only implemented data-structures and algorithms which aren't implemented in .NET itself already.
We made one exception for that, namely we did re-implement the Linked List of .NET with our own. The main reason for this was that for the Fibonacci Heap we needed a Linked List which had a concatenate operation which was O(1), however the .NET framework LinkedList class has a concatenation operation which is O(n) and which would mitigate the advantages of the Fibonacci Heap algorithm completely.