 # Algorithms: Design and Analysis

Description

Algorithms: Design and Analysis of is a textbook designed for the undergraduate and postgraduate students of computer science engineering, information technology, and computer applications. It helps the students to understand the fundamentals and applications of algorithms. The book has been divided into four sections: Algorithm Basics, Data Structures, Design Techniques and Advanced Topics. The first section explains the importance of algorithms, growth of functions, recursion and analysis of algorithms. The second section covers the data structures basics, trees, graphs, sorting in linear and quadratic time. Section three discusses the various design techniques namely, divide and conquer, greedy approach, dynamic approach, backtracking, branch and bound and randomized algorithms used for solving problems in separate chapters. The fourth section includes the advanced topics such as transform and conquer, decrease and conquer, number thoeretics, string matching, computational geometry, complexity classes, approximation algorithms, and parallel algorithms. Finally, the applications of algorithms in Machine Learning and Computational Biology areas are dealt with in the subsequent chapters. This section will be useful for those interested in advanced courses in algorithms. The book also has 10 appendixes which include topics like probability, matrix operations, Red-black tress, linear programming, DFT, scheduling, a reprise of sorting, searching and amortized analysis and problems based on writing algorithms. The concepts and algorithms in the book are explained with the help of examples which are solved using one or more methods for better understanding. The book includes variety of chapter-end pedagogical features such as point-wise summary, glossary, multiple choice questions with answers, review questions, application-based exercises to help readers test their understanding of the learnt concepts.

SECTION I Basic Concepts of Algorithms
Chapter 1 Introduction to Algorithms
Chapter 2 Growth of Functions
Chapter 3 Recursion
Chapter 4 Analysis of Algorithms

SECTION II Data Structures
Chapter 5 Basic Data Structures
Chapter 6 Trees
Chapter 7 Graphs
Chapter 8 Sorting in Linear and Quadratic Time

SECTION III Design Techniques
Chapter 9 Divide and Conquer
Chapter 10 Greedy Algorithms
Chapter 11 Dynamic Programming
Chapter 12 Backtracking
Chapter 13 Branch and Bound
Chapter 14 Randomized Algorithms

Chapter 15 Transform and Conquer
Chapter 16 Decrease and Conquer
Chapter 17 Number Theoretic Algorithms
Chapter 18 String Matching
Chapter 19 Complexity Classes
Chapter 20 Introduction to PSpace
Chapter 21 Approximation Algorithms
Chapter 22 Parallel Algorithms
Chapter 23 Introduction to Machine Learning Approaches
Chapter 24 Introduction to Computational Biology and Bioinformatics

Appendix A1 Amortized Analysis–Revisited
Appendix A2 2-3-4 and Red–Black Trees
Appendix A3 Matrix Operations
Appendix A4 Linear Programming
Appendix A5 Complex Numbers and Introduction to DFT
Appendix A6 Probability
Appendix A7 Scheduling
Appendix A8 Searching Reprise
Appendix A9 Analysis of Sorting Algorithms
Appendix A10 Problems