This document summarizes different optimization algorithms: dynamic programming, branch and bound, and greedy algorithms. It provides details on the steps and properties of dynamic programming, how branch and bound explores the search space to find optimal solutions, and how greedy algorithms select locally optimal choices at each step. Applications discussed include matrix chain multiplication, longest common subsequence, and the travelling salesman problem for dynamic programming and fractional knapsack for greedy algorithms. Advantages and disadvantages are outlined for greedy approaches.