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
Algorithms Part 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/