#
PBCD.Algorithms
1.0.6703.28604

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.

See the version list below for details.

Install-Package PBCD.Algorithms -Version 1.0.6703.28604

dotnet add package PBCD.Algorithms --version 1.0.6703.28604

<PackageReference Include="PBCD.Algorithms" Version="1.0.6703.28604" />

paket add PBCD.Algorithms --version 1.0.6703.28604

See Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne

Here is the repository of this package.

The main name space is called **Algorithms** which includes the following sub name spaces:

- 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.
- UnionFind_QU: Uses Quick-Union algorithm for calculating connectec components in O(1). Each component is presented by a number.

**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

Here is the repository of this package.

The main name space is called **Algorithms** which includes the following sub name spaces:

- 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.
- UnionFind_QU: Uses Quick-Union algorithm for calculating connectec components in O(1). Each component is presented by a number.

**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

## Release Notes

This is the first published package

## Dependencies

This package has no dependencies.

## GitHub Usage

This package is not used by any popular GitHub repositories.

## Version History

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

1.0.6717.20626 | 237 | 5/23/2018 | ||

1.0.6709.20566 | 198 | 5/15/2018 | ||

1.0.6705.25959 | 209 | 5/11/2018 | ||

1.0.6703.28604 | 235 | 5/9/2018 |