From charlesreid1

No edit summary
 
(18 intermediate revisions by the same user not shown)
Line 1: Line 1:
Also see [[Project Euler]]
=Overview of Categories=


[[Graphs]] - notes on graph objects
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.


Awesome algorithms: https://github.com/tayllan/awesome-algorithms
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==
 
[[Algorithms/Search]]
* search trees
* hash tables
 
 
==Sort==
 
[[Algorithms/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.
 
[[Algorithms/Data Structures]]
 
==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.)
 
[[Agorithms/Strings]]
* sorts
* tries
* search
* regular expressions
* compression
 
 
 
==Graphs==
 
[[Algorithms/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.
 
[[Algorithms/Optimization]]
* Combinatorics
* Recursion
* backtracking
* Heuristics
* parallel algorithms
* caching, dynamic programming
 
==Practice and Writeups==


[[Image:AlgorithmsWriteups.png|700px]]


[[Project Euler]] - number theory and mathematical programming


https://charlesreid1.github.io/ - research and teaching blog


=Flags=
=Flags=


{{AlgorithmsFlag}}
{{AlgorithmsFlag}}
=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/

Latest revision as of 21:38, 9 August 2017

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:

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

Algorithms/Search

  • search trees
  • hash tables


Sort

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

Algorithms/Data Structures

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.)

Agorithms/Strings

  • sorts
  • tries
  • search
  • regular expressions
  • compression


Graphs

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

Algorithms/Optimization

  • Combinatorics
  • Recursion
  • backtracking
  • Heuristics
  • parallel algorithms
  • caching, dynamic programming

Practice and Writeups

AlgorithmsWriteups.png

Project Euler - number theory and mathematical programming

https://charlesreid1.github.io/ - research and teaching blog

Flags






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/