- dynamic programming comes from solving Bellman's equation and Q-learning is an approximate means of doing dynamic programming.
- It's possible to do beam a* search, where beam search, a* search, and best-first (greedy) search are special cases.
- in the continuous domain, greedy search is essentially gradient ascent.
- you can use discrete differentiation to find the gradients for gradient ascent (actually, i would replace the first order method suggestion of this list with newton-raphson or some quasi-newton raphson method like BFGS).
- EM ties some bits together.
- if you replace the max of the viterbi algorithm with a summation, then you get the sum-product algorithm which is essential in the E step of EM. if you use viterbi instead of sum-product, you get something known as zero-temperature EM, which is an approximate form of EM
- the M step of EM is typically just gradient ascent!
- you can use max flow to do a similar thing to viterbi on certain graphs
and so on...