Algorithm For Optimal Binary Search Tree Using Dynamic Programming