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