**
**
**
₹805.50 **
₹895.00
Save:
₹89.50 (10%)

**ISBN:**
9789384323110

**Bind:**
Paperback

**Year: **
2018

**Pages:**
694

**Size:**
165 x 229 mm

**Publisher:**
Jones & Bartlett Learning

**Published in India by:**
Jones & Bartlett India

**Exclusive Distributors:**
Viva Books

**Sales Territory:**
India, Nepal, Pakistan, Bangladesh, Sri Lanka

**Description:**

*Foundations of Algorithms, Fifth Edition* offers a well-balanced presentation of algorithm design, complexity analysis of algorithms, and computational complexity. Ideal for any computer science student with a background in college algebra and discrete structures, the text presents mathematical concepts using standard English and simple notation to maximize accessibility and user-friendliness. Concrete examples, appendices reviewing essential mathematical concepts, and a student-focused approach reinforce theoretical explanations and promote learning and retention. C++ and Java pseudocode help students better understand complex algorithms. A chapter on numerical algorithms includes a review of basic number theory, Euclid's Algorithm for finding the greatest common divisor, a review of modular arithmetic, an algorithm for solving modular linear equations, an algorithm for computing modular powers, and the new polynomial-time algorithm for determining whether a number is prime.

The revised and updated *Fifth Edition *features an all-new chapter on genetic algorithms and genetic programming, including approximate solutions to the traveling salesperson problem, an algorithm for an artificial ant that navigates along a trail of food, and an application to financial trading. With fully updated exercises and examples, Foundations of Algorithms is an essential text for undergraduate and graduate courses in the design and analysis of algorithms.

**Key features include:**

• The only text of its kind with a chapter on genetic algorithms and genetic programming

• Use of C++ and Java pseudocode to help students better understand complex algorithms

• No calculus background required

• Numerous clear and student-friendly examples throughout the text

• Fully updated exercises and examples throughout

**Target Audience:**

This book is helpful for all students and academicians of Computer Science.

**Contents:**

Preface • About the Author

**Chapter 1: Algorithms: Efficiency, Analysis, and Order**• Algorithms • The Importance of Developing Efficient Algorithms • Sequential Search Versus Binary Search • The Fibonacci Sequence • Analysis of Algorithms • Complexity Analysis • Applying the Theory • Analysis of Correctness • Order • An Intuitive Introduction to Order • A Rigorous Introduction to Order • Using a Limit to Determine Order • Outline of This Book • Exercises

**Chapter 2: Divide-and-Conquer** • Binary Search • Mergesort • The Divide-and-Conquer Approach • Quicksort (Partition Exchange Sort) • Strassen's Matrix Multiplication Algorithm • Arithmetic with Large Integers • Representation of Large Integers: Addition and Other Linear-Time Operations • Multiplication of Large Integers • Determining Thresholds • When Not to Use Divide-and-Conquer • Exercises

**Chapter 3: Dynamic Programming**• The Binomial Coefficient • Floyd's Algorithm for Shortest Paths • Dynamic Programming and Optimization Problems • Chained Matrix Multiplication • Optimal Binary Search Trees • The Traveling Salesperson Problem • Sequence Alignment • Exercises

**Chapter 4: The Greedy Approach**• Minimum Spanning Trees • Prim's Algorithm • Kruskal's Algorithm • Comparing Prim's Algorithm with Kruskal's Algorithm • Final Discussion • Dijkstra's Algorithm for Single-Source Shortest Paths • Scheduling • Minimizing Total Time in the System • Scheduling with Deadlines • Huffman Code • Prefix Codes • Huffman's Algorithm • The Greedy Approach versus Dynamic Programming: The Knapsack Problem • A Greedy Approach to the 0-1 Knapsack Problem • A Greedy Approach to the Fractional Knapsack Problem • A Dynamic Programming Approach to the 0-1 Knapsack Problem • A Refinement of the Dynamic Programming Algorithm for the 0-1 Knapsack Problem • Exercises

**Chapter 5: Backtracking** • The Backtracking Technique • The n-Queens Problem • Using a Monte Carlo Algorithm to Estimate the Efficiency of a Backtracking Algorithm • The Sum-of-Subsets Problem • Graph Coloring • The Hamiltonian Circuits Problem • The 0-1 Knapsack Problem • A Backtracking Algorithm for the 0-1 Knapsack Problem • Comparing the Dynamic Programming Algorithm and the Backtracking Algorithm for the 0-1 Knapsack Problem • Exercises

**Chapter 6: Branch-and-Bound • **Illustrating Branch-and-Bound with the 0-1 Knapsack Problem • Breadth-First Search with Branch-and-Bound Pruning • Best-First Search with Branch-and-Bound Pruning • The Traveling Salesperson Problem • Abductive Inference (Diagnosis) • Exercises

**Chapter 7: Introduction to Computational Complexity: The Sorting Problem**• Computational Complexity • Insertion Sort and Selection Sort • Lower Bounds for Algorithms that Remove at Most One Inversion per Comparison • Mergesort Revisited • Quicksort Revisited • Heapsort • Heaps and Basic Heap Routines • An Implementation of Heapsort • Comparison of Mergesort, Quicksort, and Heapsort • Lower Bounds for Sorting Only by Comparison of Keys • Decision Trees for Sorting Algorithms • Lower Bounds for Worst-Case Behavior • Lower Bounds for Average-Case Behavior • Sorting by Distribution (Radix Sort) • Exercises

**Chapter 8: More Computational Complexity: The Searching Problem**• Lower Bounds for Searching Only by Comparisons of Keys • Lower Bounds for Worst-Case Behavior • Lower Bounds for Average-Case Behavior • Interpolation Search • Searching in Trees • Binary Search Trees • B-Trees • Hashing • The Selection Problem: Introduction to Adversary Arguments • Finding the Largest Key • Finding Both the Smallest and Largest Keys • Finding the Second-Largest Key • Finding the kth-Smallest Key • A Probabilistic Algorithm for the Selection Problem • Exercises

**Chapter 9: Computational Complexity and Intractability: An Introduction to the Theory of NP**• Intractability • Input Size Revisited • The Three General Problem Categories • Problems for Which Polynomial-Time Algorithms Have Been Found • Problems That Have Been Proven to Be Intractable • Problems That Have Not Been Proven to Be Intractable but for Which Polynomial-Time Algorithms Have Never Been Found • The Theory of NP • The Sets P and NP • NP-Complete Problems • NP-Hard, NP-Easy, and NP-Equivalent Problems • Handling NP-Hard Problems • An Approximation Algorithm for the Traveling Salesperson Problem • An Approximation Algorithm for the Bin-Packing Problem • Exercises

**Chapter 10: Genetic Algorithms and Genetic Programming**• Genetics Review • Genetic Algorithms • Algorithm • Illustrative Example • The Traveling Salesperson Problem • Genetic Programming • Illustrative Example • Articial Ant • Application to Financial Trading • Discussion and Further Reading • Exercises

**Chapter 11: Number-Theoretic Algorithms**• Number Theory Review • Composite and Prime Numbers • Greatest Common Divisor • Prime Factorization • Least Common Multiple • Computing the Greatest Common Divisor • Euclid's Algorithm • An Extension to Euclid's Algorithm • Modular Arithmetic Review • Group Theory • Congruency Modulo n • Subgroups • Solving Modular Linear Equations • Computing Modular Powers • Finding Large Prime Numbers • Searching for a Large Prime • Checking if a Number Is Prime • The RSA Public-Key Cryptosystem • Public-Key Cryptosystems • The RSA Cryptosystem • Exercises

**Chapter 12: Introduction to Parallel Algorithms**• Parallel Architectures • Control Mechanism • Address-Space Organization • Interconnection Networks • The PRAM Model • Designing Algorithms for the CREW PRAM Model • Designing Algorithms for the CRCW PRAM Model • Exercises

**Appendix A Review of Necessary Mathematics**• Notation • Functions • Mathematical Induction • Theorems and Lemmas • Logarithms • Denition and Properties of Logarithms • The Natural Logarithm • Sets • Permutations and Combinations • Probability • Randomness • The Expected Value • Exercises

**Appendix B Solving Recurrence Equations: With Applications to Analysis of Recursive Algorithms**• Solving Recurrences Using Induction • Solving Recurrences Using the Characteristic Equation • Homogeneous Linear Recurrences • Nonhomogeneous Linear Recurrences • Change of Variables (Domain Transformations) • Solving Recurrences by Substitution • Extending Results for n, a Power of a Positive • Constant b, to n in General • Proofs of Theorems • Exercises

**Appendix C Data Structures for Disjoint Sets**

References • Index

**About the Author:**

**Richard Neapolitan, PhD**- Northwestern University, Illinois

Richard Neapolitan's research interests include probability and statistics, artificial intelligence, cognitive science and applications of probabilistic modeling to fields such as medicine, biology, and finance. Dr. Neapolitan has given talks and conducted seminars throughout the world, including Australia and Hungary. His online tutorial concerning causal learning has been viewed over 10,000 times and has a 5-star rating (see http://videolectures.net/kdd/).

Dr. Neapolitan is a prolific author and has published in the most prestigious widely used broad area of reasoning under uncertainty. He has written six books, including the seminal 1989 Bayesian network text, Probabilistic Reasoning in Expert Systems; this textbook, Foundations of Algorithms (1996, 1998, 2003, 2011, 2013), which has been translated into several languages and is one of the most widely-used algorithms texts worldwide; Learning Bayesian Networks (2004); Probabilistic Methods for Financial and Marketing Informatics (2007); Probabilistic Methods for Bioinformatics (2009); and Contemporary Artificial Intelligence (2012). His approach to textbook writing is innovative; his books have the reputation of making difficult concepts easy to understand while still remaining rigorous and thought-provoking.

10%

10%

10%

10%

10%

10%