Project Algorist
What is Project Algorist 2022?
For the next couple of months in this year, I will work on (and probably teach?!) Data Structures and Algorithms in detail. I will implement all the data structures and algorithms (in both C++ and Java) and save them in repositories. I will also solve many problems related to each topic.
How many days?
Around 4 months of self-study, practice and journaling
What are the data structures and algorithms I will work on?
- Merge Sort
- Binary Heap and Heap Sort
- Quick Sort and Order Statistics
- Lower Bounds for Sorting, Radix Sort
- Binary Search and Ternary Search
- Stacks, Queues, Amortized Cost
- Linked Lists, Pointer Machine
- Disjoint Sets Union
- Binomial Heaps and Fibonacci Heaps
- Dynamic Programming (Classical DP Problems)
- Knapsack Problem
- DP on Subsets, DP on Profiles, Bitmasking DP
- Hashing, Hashtables
- Perfect hashing, cuckoo hashing, bloom filter
- Segment Trees
- Segment Trees, Lazy Propagation
- Binary Indexed Tree or Fenwick Tree
- Sparse Table
- 2D Segment Tree Problems
- Binary Search Tree, BST Sort
- AVL Tree
- Red Black Tree
- Treaps, Implicit Keys
- Splay Tree
- Scapegoat Tree, List Order Maintenance
- Binary Lifting, K’th Ancestor
- LCA, Farach-Colton and Bender Algorithm
- Heavy-Light Decomposition
- Centroid Decomposition
- Graphs, Depth First Search (DFS)
- Topological Sorting
- Strongly Connected Components (SCC)
- 2-SAT Problem
- Bridges, Articulation Points, Euler Cycle
- Dominator Tree
- Minimum Spanning Tree
- Breadth First Search, 0-1 BFS
- Dijkstra’s Algorithm
- A* Algorithm
- Bellman Ford Algorithm
- Floyd-Warshall Algorithm
- Game Theory
- Graph Games
- Sprague-Grundy Theorem
- Nim Game
- Strings, Hashing, KMP and Z Algorithm
- Finite State Automata
- Trie
- Aho Corasick Algorithm
- Suffix Array
- Suffix Tree, Ukkonen’s Algorithm
- Y-Fast Trie
- Fusion Tree
- Maximum Matchings in Bipartite Graphs
- Maximum Matchings in Non-Bipartite Graphs
- Flows, Cuts, Ford-Fulkerson Algorithm, Edmonds-Karp Algorithm
- Dinic’s Algorithm
- Hopcroft-Karp Algorithm, Push-Relabel
- Assignment Problem
- Hungarian Algorithm
- Minimum Cost Flows
- Global Minimum Cuts
- Linear Programming
- Number Theory and Number Theory Algorithms
- Binary Exponentiation
- Factoring Exponentiation
- Euclidean Algorithm for Computing GCD
- Extended Euclidean Algorithm
- Linear Diophantine Equation
- Fibonacci Numbers
- Sieve of Eratosthenes
- Linear Sieve
- Primality Tests
- Integer Factorization
- Euler’s Totient Function
- Number of Divisors
- Sum of Divisors
- Divisibility
- Modular Inverse
- Linear Congruence Equation
- Chinese Remainder Theorem
- Factorial modulo P
- Enumerating Submasks of a bitmask
- Fast Fourier Transform
- Linear Algebra