1. ► Greedy choice can never give optimal result

2. ► Graph coloring can be used to solve processor register allocation in compilers

3. ► Rabin-Karp algorithm relies on hash function to convert strings to numbers

4. ► Brute force string matching relies on char by char comparison

5. ► Dijkstra’s algorithm makes greedy choice

6. ► Dynamic programming works in the top down manner

7. ► Approximation algorithms provide bounds on the quality of the solution mathematically

8. ► Rabin-Karp algorithm reuses previously calculated hash values

9. ► Dynamic programming also follows divide and conquer approach

10. ► For overlapping optimal substructure, dynamic programming gives optimal solution

11. ► Greedy algorithm doesn’t guarantee global optimal

12. ► Greedy algorithm works in bottom up manner

13. ► Greedy algorithms always select local best possible solution

14. ► Average case complexity of Rabin-Karp is O(nm)

15. ► String matching is quite common in scripting languages