Algorithms
From charlesreid1
Contents
Overview of Categories
Algorithms can be divided into categories:
- Data structures - algorithmic analysis of data structures
- Strings - algorithms for operations on strings
- Search - search algorithms for searching and search-related data structures
- Sort - basic and advanced algorithms for sorting data
- Graphs - graph structures, algorithms on graph structures. Design graph structures, not algorithms!
- Optimization - solving minimization/maximization problems under constraints, counting problems, etc.
Programming practice and writeups:
- Competitive programming
- Project Euler
- Research and Teaching Blog - https://charlesreid1.github.io
List from Princeton ALGS DS07:
- https://www.cs.princeton.edu/~rs/AlgsDS07/
- Overview
- Union-Find Algorithms
- Stacks and Queues
- Sorting Algorithms
- Advanced Topics in Sorting
- Priority Queues
- Symbol Tables
- Binary Search Trees
- Balanced Trees
- Hashing
- Undirected Graphs
- Directed Graphs
- Minimum Spanning Trees
- Shortest Paths
- Geometric Algorithms
- Search and Intersection
- Radix Sorts
- Tries
- Data Compression
- Pattern Matching
- Linear Programming
- Reductions
- Combinatorial Search
Search
- search trees
- hash tables
Sort
- kinds of sort
- sort algorithms
- memory
- scaling
- mathematical analysis
- priority queues
Data Structures
Algorithmic analysis of data structures, such as binary search trees. Mathematical modeling and probability tools for quantitative analysis of code.
Strings
Algorithms for strings. What are some fast String algorithms, and how can we utilize them in other contexts? (e.g., comparing extremely large subtrees.)
- sorts
- tries
- search
- regular expressions
- compression
Graphs
Optimization
Some of the basic algorithms of optimization, types of constraints, types of solvers and solutions.
Don't waste all your time implementing solutions from scratch if there are better tools available. And in this case, there are: Google OR tools.
- Combinatorics
- Recursion
- backtracking
- Heuristics
- parallel algorithms
- caching, dynamic programming
Practice and Writeups
Project Euler - number theory and mathematical programming
https://charlesreid1.github.io/ - research and teaching blog
Flags
| AlgorithmsPart of Computer Science Notes Series on Algorithms 
 Algorithms/Sort · Algorithmic Analysis of Sort Functions · Divide and Conquer · Divide and Conquer/Master Theorem Three solid O(n log n) search algorithms: Merge Sort · Heap Sort · Quick Sort Algorithm Analysis/Merge Sort · Algorithm Analysis/Randomized Quick Sort 
 Algorithms/Search · Binary Search · Binary Search Modifications 
 Algorithms/Combinatorics · Algorithms/Combinatorics and Heuristics · Algorithms/Optimization · Divide and Conquer 
 Algorithms/Strings · Algorithm Analysis/Substring Pattern Matching 
 
 Algorithm complexity · Theta vs Big O Amortization · Amortization/Aggregate Method · Amortization/Accounting Method Algorithm Analysis/Matrix Multiplication 
 Estimation Estimation · Estimation/BitsAndBytes 
 Algorithm Practice and Writeups Project Euler · Five Letter Words · Letter Coverage 
 | 
References
Awesome algorithms: https://github.com/tayllan/awesome-algorithms
Awesome math: https://github.com/rossant/awesome-math
Stony Brook Algorithm Repository: http://www3.cs.stonybrook.edu/~algorith/implement/graphbase/implement.shtml
Programming Challenges (Skiena's non-red book): https://www.amazon.com/exec/obidos/ASIN/0387001638/thealgorithmrepo
Introduction to the Analysis of Algorithms: http://aofa.cs.princeton.edu/home/

