3 ms·
Tl:dr- In order; graph theory, linear algebra, number theory, and multi-criteria decision analysis. Game theory, set theory, nonlinearity, computational geometr
by pscheyer1 11y ago
Tl:dr- In order; graph theory, linear algebra, number theory, and multi-criteria decision analysis. Game theory, set theory, nonlinearity, computational geometry a bonus.
Let's say you're learning some new algorithms. Your list might look something like the below list[1]. I'll add in brackets the sort of math you learn about by learning the algo if you get lost down the wiki-rabbit-hole. If you want to solve other similar problems, more of that sort of math will help.
1) Graph algorithms [graph theory]: Breadth first search(BFS), Depth first search(DFS), Strongly connected components(SCC), Dijkstra, Floyd-Warshall, Minimum spanning tree(MST), Topological sort.
2) Dynamic programming [self-similarity, finite subdivision rules, nonlinear equations]: Standard dynamic programming problems such as Rod Cutting, Knapsack, Matrix chain multiplication etc.
3) Number theory [Number Theory]: Modular arithmetic, Fermat’s theorem, Chinese remainder theorem(CRT), Euclidian method for GCD, Logarithmic Exponentiation, Sieve of Eratosthenes, Euler’s totient function.
3) Greedy [goal programming, simplex algorithm, multi-criteria decision analysis]: Standard problems such as Activity selection.
4) Search techniques [linear/vector algebra[2]]: Binary search, Ternary search and Meet in the middle.
5) Data structures (Basic) [graph theory]: Stacks, Queues, Trees and Heaps.
6) Data structures (Advanced)[more graph theory]: Trie, Segment trees, Fenwick tree or Binary indexed tree(BIT), Disjoint data structures.
7) Strings [set theory]: Knuth Morris Pratt(KMP), Z algorithm, Suffix arrays/Suffix trees. These are bit advanced algorithms.
8) Computational geometry [computational geometry]: Graham-Scan for convex hull, Line sweep.
9) Game theory [game theory]: Basic principles of Nim game, Grundy numbers, Sprague-Grundy theorem.
[1] http://blog.hackerearth.com/2013/09/competitive-programming-getting-started_11.html http://blog.hackerearth.com/2013/09/competitive-programming-...
[2] Scott Aaronson noted that the vector algebraic Eigenvector operation was the linchpin of google's pagerank, when applied to the adjacency matrix of the directed graph that is the world-wide web. So i assume that knowing some vector algebra might be useful for search. http://www.scottaaronson.com/blog/?p=1820 http://www.scottaaronson.com/blog/?p=1820