ANALYSIS AND DESIGN OF  ALGORITHMS