Algorithms: Design Techniques and Analysis (Lecture Notes Series on Computing)