Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/st3v3nmw/rust-algorithms

Algorithms and data structures implemented in Rust.
https://github.com/st3v3nmw/rust-algorithms

algorithms algorithms-and-data-structures data-structures dynamic-programming rust

Last synced: 2 months ago
JSON representation

Algorithms and data structures implemented in Rust.

Awesome Lists containing this project

README

        

# Algorithms

Repository for my algorithms and data structures implementation (Lists approx. 350 algorithms).

Checked algorithms have been implemented in Rust in "src/respective folder".

## Backtracking

- [ ] Crossword Puzzle
- [ ] Hamiltonian Cycle
- [ ] Knight's Tour Problem
- [ ] N Queens Puzzle
- [ ] Subset Sum
- [x] Sudoku

## Combinatorics

- [ ] Binomial Coefficients
- [ ] Burnside's lemma
- [ ] Brent's algorithm
- [ ] Catalan Numbers
- [ ] Fisher-Yates shuffle
- [ ] Floyd's cycle-finding algorithm
- [ ] Gale-Shapley algorithm

## Compression

- [ ] Arithmetic Coding
- [ ] Delta Encoding
- [ ] Huffman Coding
- [ ] Lempel-Ziv-Welch algorithm
- [ ] LZ77
- [ ] Run-length encoding
- [ ] Shannon-Fano coding
- [ ] Wavelet Compression

## Cryptography

- [ ] Affine Cipher
- [ ] Base16
- [ ] Base32
- [ ] Base64
- [ ] Base85
- [ ] Caesar Cipher
- [ ] Diffie-Hellman Key Exchange
- [ ] Elliptic-curve Diffie-Hellman
- [ ] Hill Cipher
- [ ] Locality Sensitive Hashing
- [ ] RSA Cipher
- [ ] RSA Factorization
- [ ] RSA Key Generator
- [ ] Shuffled Shift Cipher
- [ ] Simple Substitution Cipher
- [ ] Transposition Cipher
- [ ] XOR Cipher

## Data Structures

- [ ] Bitset
- [ ] Bloom Filter
- [ ] Hash Table
- [x] Stack (Dynamic Array Based)

### Heap

- [ ] Binomial Heap
- [ ] Fibonacci Heap
- [ ] Min Heap
- [ ] Randomized Heap

### Linked List

- [ ] Doubly Linked List
- [ ] Circular Linked List
- [ ] Singly Linked List
- [ ] Skip List

### Queue

- [ ] Deque
- [ ] Priority Queue
- [x] Queue (Dynamic Array Based)

### Tree

- [ ] (2,4) tree
- [ ] AVL Tree
- [ ] B Tree
- [ ] Basic Binary Tree
- [ ] Binary Search Tree
- [ ] Fenwick Tree
- [ ] Interval Tree
- [ ] K-d tree
- [ ] Link cut Tree
- [ ] Merkle Tree
- [ ] Quad Tree
- [ ] Red-Black Tree
- [ ] Segment Tree with lazy propagation
- [ ] Splay Tree
- [ ] Sqrt tree
- [ ] Stern-Brocot Tree and Farey sequences
- [ ] Treap/Cartesian Tree
- [ ] van Emde Boas Tree

### Union Find

- [ ] Grid Percolation
- [ ] Lowest Common Ancestors using DSU
- [ ] Union Find with path compression

## Dynamic Programming

- [x] Coin Change Problem
- [x] Coin Row Problem
- [ ] Edit/Levenshtein Distance
- [ ] Fibonacci (Fast Doubling)
- [ ] Fibonacci (Matrix Exponentiation)
- [x] Fibonacci (Recursion with memoization)
- [ ] Josephus Problem
- [x] Kadane's algorithm - Maximum Subarray Problem
- [x] 0-1 Knapsack Problem (Bounded)
- [x] 0-1 Knapsack Problem (Unbounded)
- [ ] Longest Common Subsequence
- [ ] Longest Common Substring
- [ ] Longest Bitonic Subsequence
- [ ] Longest Increasing Subsequence
- [ ] Longest Palindrome Subsequence
- [ ] Matrix Chain Multiplication
- [ ] Shortest Common Supersequence
- [ ] Subset Sum
- [ ] Wildcard Pattern Matching
- [ ] Word Break Problem

## Fast Fourier Transform

- [ ] Bluestein's FFT algorithm
- [ ] Bruun's FFT algorithm
- [ ] Cooley-Tukey algorithm
- [ ] Prime factor FFT algorithm
- [ ] Rader's FFT algorithm

## Game Theory

- [ ] Alpha-beta pruning
- [ ] Minimax
- [x] Sprague-Grundy Theorem
- [ ] SSS-* (State Space Search)

## Geometry

- [ ] Angles between vectors (2D, 3D)
- [ ] Centroids
- [ ] Closest Pair of Points
- [ ] Collinear Points
- [ ] Collision detection
- [ ] Cone algorithm
- [ ] Coplanar Points
- [ ] Convex Hull (Chan's algorithm)
- [ ] Convex Hull (Gift wrapping algorithm)
- [ ] Convex Hull (Graham's scan)
- [ ] Convex Hull (Quickhull)
- [ ] Euclidean Distance
- [ ] Geometric hashing
- [ ] Gilbert-Johnson-Keerthi distance
- [ ] Jump-and-Walk algorithm
- [ ] Kirkpatrick-Seidel algorithm
- [ ] Line segment intersection
- [ ] Manhattan Distance
- [ ] Mesh Generation
- [ ] Minimum bounding box algorithm
- [ ] Minkowski sum of convex polygons
- [ ] Nearest Neighbour search
- [x] Pick's Theorem
- [ ] Point in polygon
- [ ] Point Rotation
- [ ] Shoelace algorithm
- [ ] Sweep line algorithm

## Graph Theory

- [ ] A-* Search
- [ ] B-* Search
- [ ] Adjacency List
- [ ] Adjacency Matrix
- [ ] Beam Search
- [ ] Beam stack search
- [ ] Bellman-Ford Shortest Path
- [ ] Best first search
- [ ] Bidirectional search
- [ ] Bipartite Graph Check
- [ ] Breadth First Search
- [ ] Bron-Kerbosch algorithm
- [ ] Christofides algorithm
- [ ] Condensation Graph
- [ ] Depth First Search
- [ ] Detect and find cycles in a graph
- [ ] Dijkstra's Shorted Path
- [ ] D'Esopo-Pape algorithm
- [ ] Edmonds' Algorithm
- [ ] Euclidean shortest path problem
- [ ] Euler Tour
- [ ] Finding articulation points
- [ ] Finding augmenting paths in a flow network
- [ ] Finding bridges
- [ ] Finding negative cycles
- [ ] Floyd-Warshall Shortest Path
- [ ] General Problem Solver
- [ ] Girvan-Newman algorithm
- [ ] Graph Coloring Algorithm
- [ ] Heavy light decomposition
- [ ] Hopcroft-Karp algorithm
- [ ] Hungarian algorithm
- [ ] Hyperlink-Induced Topic Search
- [ ] Isomorphism
- [ ] Iterative deepening DFS
- [ ] Johnson's algorithm for sparse paths
- [ ] Jump point search
- [ ] Karger's algorithm
- [ ] Kirchhoff's theorem
- [ ] Kosaraju's algorithm - strongly connected components
- [ ] Lexicographic BFS
- [ ] Lowest Common Ancestor (Binary Lifting)
- [ ] Lowest Common Ancestor (Farach-Colton and Bender algorithm)
- [ ] Lowest Common Ancestor (Tarjan's off-line)
- [ ] Longest path problem
- [ ] Maximum Bipartite Matching
- [ ] Maximum Flow (Dinic's Algorithm)
- [ ] Maximum Flow (Ford-Fulkerson algorithm)
- [ ] Maximum Flow (Push-relabel algorithm)
- [ ] Minimum Spanning Tree (Kruskal)
- [ ] Minimum Spanning Tree (Prim's)
- [ ] Multifragment Heuristic
- [ ] PageRank
- [ ] Path-based strong components algorithm
- [ ] Prufer coding
- [ ] Strongly Connected Components
- [ ] Subgraph isomorphism problem
- [ ] Tarjan's strongly connected components
- [ ] Topologically sort the nodes of a graph
- [ ] Transitive Closure Problem
- [ ] TrustRank
- [ ] Uniform-cost search
- [ ] Warnsdorff's rule - Knight's tour heuristic

## Linear Algebra

- [ ] Biconjugate gradient method
- [ ] Freivalds' algorithm
- [ ] Gaussian Elimination
- [ ] Kraut & Determinant
- [ ] Matrix Inverse
- [x] Matrix Multiplication - Normal
- [x] Matrix Transposition
- [ ] Rank of a matrix
- [ ] Strassen Matrix Multiplication
- [ ] Symbolic Cholesky decomposition

## Machine Learning

- [ ] Apriori Algorithm
- [ ] AdaBoost
- [ ] C4.5 algorithm
- [ ] CART (Classification and Regression Tree)
- [ ] Chi-square automatic interaction detection (CHAID)
- [ ] Eclat Algorithm
- [ ] Genetic Algorithm
- [ ] Hidden Markov Model
- [ ] Histogram of Oriented Gradients
- [ ] ID3 algorithm
- [ ] K-means Clustering
- [ ] K Nearest Neighbours
- [ ] Linear Discriminant Analysis
- [ ] Linear Regression
- [ ] Logistic Regression
- [ ] Markov Chains
- [ ] Monte Carlo Tree Search
- [ ] Partial Least Squares Regression
- [ ] Polynomial Regression
- [ ] Principal Component Analysis
- [ ] Random Forest Classifier
- [ ] Random Forest Regressor
- [ ] Q Learning
- [ ] Self organizing map
- [ ] Stemming algorithm
- [ ] Support Vector Machine

## Number Theory

- [ ] ACORN Pseudorandom Number Generator
- [ ] Addition chain exponentiation
- [ ] AKS primality test
- [ ] Armstrong Number
- [ ] Baillie-PSW primality test
- [ ] Binary Exponentiation
- [ ] Blum Blum Shub Pseudorandom Number Generator
- [ ] Booth's Multiplication Algorithm
- [ ] Chakravala method
- [ ] Chinese Remainder Problem
- [ ] Collatz Sequence
- [ ] Congruence of squares
- [ ] Coprimality Check
- [ ] Dixon's Algorithm
- [ ] Euler Totient Function
- [ ] Euclid's Algorithm
- [ ] Extended Euclidean Algorithm
- [ ] Factorial Modulo P
- [ ] Factorials (Iterative)
- [ ] Fermat's Factorization method
- [ ] Fermat's Last Theorem
- [ ] Fermat Primality test
- [ ] Finding Full Reptend Primes
- [ ] General Number Field Sieve
- [ ] Karatsuba algorithm
- [ ] Least Common Multiple
- [ ] Lagged Fibonacci Pseudorandom Number Generator
- [ ] Lenstra elliptic curve factorization
- [ ] Linear Congruential Pseudorandom Number Generator
- [ ] Linear Diophantine Equations
- [ ] Logarithmic Exponentiation
- [ ] Lucas primality test
- [ ] Mersenne Twister Pseudorandom Number Generator
- [ ] Modular Multiplicative Inverse
- [ ] Modular Exponentiation
- [ ] Montgomery Multiplication
- [ ] Number of divisors
- [ ] Odlyzko-Schonhage algorithm
- [ ] P-adic valuation
- [ ] Pollard's p - 1 algorithm
- [ ] Pollard's rho algorithm
- [ ] Prime Factors below N
- [ ] Prime Factorizarion
- [ ] Primality Check
- [ ] Primitive Roots
- [ ] Quadratic Sieve
- [ ] Rabin Miller Primality Test (Deterministic)
- [ ] Rabin Miller Primality Test (Probabilisitic)
- [ ] Schonhage-Strassen algorithm
- [ ] Shor's Algorithm
- [ ] Sieve of Atkin
- [ ] Sieve of Eratosthenes
- [ ] Sieve of Sundaram
- [ ] Special Number Field Sieve
- [ ] Sum of Divisors
- [ ] Toom-Cook multiplication
- [ ] Tonelli-Shanks algorithm

## Parsing

- [ ] CYK parsing algorihm
- [ ] LL Parsing
- [ ] LR Parsing
- [ ] Pratt Parsing
- [ ] Recursive descent parsing
- [ ] Shunting Yard algorithm

## Sorting & Order Statistics

- [ ] Bitonic Sort
- [ ] Bogo Sort
- [x] Bubble Sort
- [ ] Bucket Sort
- [ ] Burst Sort
- [ ] Comb Sort
- [x] Counting Sort
- [ ] Cycle Sort
- [ ] Flash Sort
- [ ] Gnome Sort
- [ ] Heap Sort
- [x] Insertion Sort
- [ ] Introselect
- [ ] Intro Sort
- [ ] K-order statistic
- [x] Mergesort
- [ ] Odd-even Sort
- [ ] Pigeonhole Sort
- [x] Quicksort
- [ ] Quickselect
- [x] Selection Sort
- [ ] Shell Sort
- [ ] Stooge Sort
- [ ] Tim Sort
- [ ] Tree Sort

## Strings

- [ ] Aho-Corasick string matching algorithm
- [ ] Boyer-Moore String Search
- [ ] Boyer-Moore-Horpspool String Search
- [ ] Damerau-Levenshtein distance
- [ ] Dice's coefficient
- [ ] Hamming Distance
- [ ] Jaro-Winkler distance
- [ ] Krauss matching wildcards algorithm
- [ ] Knuth-Morris-Pratt algorithm
- [ ] Levenshtein edit distance
- [ ] Longest Common Prefix Array
- [ ] Longest Repeated Substring
- [ ] Lyndon factorization
- [ ] Manacher's algorithm
- [ ] Rabin-Karp string matching algorithm
- [ ] Radix Sort
- [ ] Rich Salz' wildmat
- [ ] String matching with finite automata
- [ ] Suffix Array
- [ ] Suffix Automaton
- [ ] Suffix Tree
- [ ] Trie
- [ ] Ukkonen's algorithm
- [ ] Wavelet tree
- [ ] Z Function
- [ ] Zhu-Takaoka string matching

## Miscellaneous

- [ ] 2-SAT
- [ ] Balanced Ternary
- [ ] Binary Search
- [ ] Cellular Automata
- [ ] Dekker's algorithm
- [ ] Doomsday algorithm
- [ ] Easter day algorithms
- [ ] Fibonacci Search
- [ ] Floyd-Rivest algorithm
- [x] Fractional Knapsack Problem
- [x] Generating subsets
- [x] Gray code
- [ ] Hill Climbing Search
- [ ] Hopcroft's algorithm
- [ ] Jump Search
- [ ] Integration by Simpson's Formula
- [ ] Interpolation Search
- [ ] Kleene's algorithm
- [ ] Meet in the middle
- [ ] Mo's algorithm
- [ ] Newton's algorithm for finding roots
- [ ] Powerset construction (aka Rabin-Scott subset construction)
- [ ] Predictive Search
- [ ] Range XOR
- [ ] Simplex Algorithm
- [ ] Simulated Annealing
- [ ] Sqrt decomposition
- [ ] Tabu Search
- [ ] Ternary Search
- [ ] Thompson's construction algorithm
- [ ] Tomasulo algorithm
- [ ] Tracing garbage collection
- [ ] Uniform binary search
- [ ] Xor swap algorithm
- [ ] Zeller's congruence