#
PBCD.Algorithms
1.0.6717.20626

General purpose data structures and algorithms mostly to cover the functionallity or performance gap in the framework.

Includes: ProrityQueue, Bag, SymboleTable, Trie, UnionFind, Search Trees (BST, OST, RBT), sorting and graph algorithms.

`Install-Package PBCD.Algorithms -Version 1.0.6717.20626`

`dotnet add package PBCD.Algorithms --version 1.0.6717.20626`

`<PackageReference Include="PBCD.Algorithms" Version="1.0.6717.20626" />`

`paket add PBCD.Algorithms --version 1.0.6717.20626`

`#r "nuget: PBCD.Algorithms, 1.0.6717.20626"`

```
// Install PBCD.Algorithms as a Cake Addin
#addin nuget:?package=PBCD.Algorithms&version=1.0.6717.20626
// Install PBCD.Algorithms as a Cake Tool
#tool nuget:?package=PBCD.Algorithms&version=1.0.6717.20626
```

See Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne for detail explanation of each

Here is the repository of this package.

The main namespace is called **PBCD.Algorithms** which includes the following sub namespaces:

- ComputationalGeometry
- DataStructure
- Graphs
- Randomization
- SearchTree
- Sort

**ComputationalGeometry**- ConvexHull: Gets a set of 2D points and returns a subset of them representing the smallest convex polygon that includes all points.

**DataStructure**- PriorityQueue: There are two implemented versions this DS, MaxPriorityQueue and MaxPriorityQueue.
- QuickUnion: Uses weighted quick-union with path compression to calculate connected components in O(1).

Initial it by providing the number of components (nodes) and keep connecting them using Union() method. Note that you cannot disconnect component.

Property Count returns the number of components and node p and q are connected if Find(p) == Find(q) - TRIE: This TRIE works with any chain of keys and not just strings. Also, in additional to regular TRIE functions, this one returns number of matching prefixes in O(l) where l is the length of the prefix.

**Graphs****Digraph**- Digraph: Represents a directed graph. This
- TopologicalSort: Gets a digraph and return their IDs sorted topological
- DirectedBFS: Gets a digraph and the index of the source vertex and calculates the path to every other vertex (if existing) using Depth-first search algorithm. HasPathTo(v) costs O(1) to check if there is a path to vertex v.
- DirectedDFS: Same as DirectedBFS but uses Breadth-first search algorithm.
- SCC_KosarajuSharir : Uses Kosaraju Sharir Algorithm (TopologicalSort class) to calcualte Strongly connected component

- BipartiteGraph: Departs the graph into two groups if possible and returns true. Otherwise returns false
- BreadthFirstPaths
- DepthFirstPaths
- ConnectedComponents
- Graph

**Randomization**- WeightedRandom: Randomly select specified number of items from the list.The items with higher weight are in the result with higher probability.

**SearchTree**- BinarySearchTree
- RedBlackTree: It is a Left Leaning Red-Black tree (LLRB Tree)
- OST: Order Statistics Tree is a RedBlack tree which is able to return the rank of each elements

**Sort**: All sorts of sorts

See Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne for detail explanation of each

Here is the repository of this package.

The main namespace is called **PBCD.Algorithms** which includes the following sub namespaces:

- ComputationalGeometry
- DataStructure
- Graphs
- Randomization
- SearchTree
- Sort

**ComputationalGeometry**- ConvexHull: Gets a set of 2D points and returns a subset of them representing the smallest convex polygon that includes all points.

**DataStructure**- PriorityQueue: There are two implemented versions this DS, MaxPriorityQueue and MaxPriorityQueue.
- QuickUnion: Uses weighted quick-union with path compression to calculate connected components in O(1).

Initial it by providing the number of components (nodes) and keep connecting them using Union() method. Note that you cannot disconnect component.

Property Count returns the number of components and node p and q are connected if Find(p) == Find(q) - TRIE: This TRIE works with any chain of keys and not just strings. Also, in additional to regular TRIE functions, this one returns number of matching prefixes in O(l) where l is the length of the prefix.

**Graphs****Digraph**- Digraph: Represents a directed graph. This
- TopologicalSort: Gets a digraph and return their IDs sorted topological
- DirectedBFS: Gets a digraph and the index of the source vertex and calculates the path to every other vertex (if existing) using Depth-first search algorithm. HasPathTo(v) costs O(1) to check if there is a path to vertex v.
- DirectedDFS: Same as DirectedBFS but uses Breadth-first search algorithm.
- SCC_KosarajuSharir : Uses Kosaraju Sharir Algorithm (TopologicalSort class) to calcualte Strongly connected component

- BipartiteGraph: Departs the graph into two groups if possible and returns true. Otherwise returns false
- BreadthFirstPaths
- DepthFirstPaths
- ConnectedComponents
- Graph

**Randomization**- WeightedRandom: Randomly select specified number of items from the list.The items with higher weight are in the result with higher probability.

**SearchTree**- BinarySearchTree
- RedBlackTree: It is a Left Leaning Red-Black tree (LLRB Tree)
- OST: Order Statistics Tree is a RedBlack tree which is able to return the rank of each elements

**Sort**: All sorts of sorts

## Dependencies

This package has no dependencies.

## Used By

###
**NuGet packages**

This package is not used by any NuGet packages.

###
**GitHub repositories**

This package is not used by any popular GitHub repositories.

## Version History

Version | Downloads | Last updated |
---|---|---|

1.0.6717.20626 | 534 | 5/23/2018 |

1.0.6709.20566 | 472 | 5/15/2018 |

1.0.6705.25959 | 477 | 5/11/2018 |

1.0.6703.28604 | 503 | 5/9/2018 |