Foundations of algorithms
Responsibility Richard E. Neapolitan, PhD (Northwestern University). Edition Fifth edition. Publication Burlington, MA : Jones & Bartlett Learning, [2015] Copyright notice ©2015 Physical description xvii, 676 pages : illustrations ; 24 cm
Online
Available online
At the library

Science Library (Li and Ma)
Stacks
Items in Stacks  | Call number |  Note |  Status |  
    | QA9.58 .N43 2015 |  Unknown |  
 
More options
  - Top
 
  - Contributors
 
  - Summary
 
  - Subjects
 
  - Info
 
  - Browse
 
  - Bottom
 
Description
Creators/Contributors
Author/Creator Neapolitan, Richard E., author.
Contents/Summary
  - Machine generated contents note: 1. Algorithms: Efficiency, Analysis, and Order
 
  - 1.1. Algorithms
 
  - 1.2. The Importance of Developing Efficient Algorithms
 
  - 1.2.1. Sequential Search Versus Binary Search
 
  - 1.2.2. The Fibonacci Sequence
 
  - 1.3. Analysis of Algorithms
 
  - 1.3.1. Complexity Analysis
 
  - 1.3.2. Applying the Theory
 
  - 1.3.3. Analysis of Correctness
 
  - 1.4. Order
 
  - 1.4.1. An Intuitive Introduction to Order
 
  - 1.4.2. A Rigorous Introduction to Order
 
  - 1.4.3. Using a Limit to Determine Order
 
  - 1.5. Outline of This Book
 
  - Exercises
 
  - 2. Divide-and-Conquer
 
  - 2.1. Binary Search
 
  - 2.2. Mergesort
 
  - 2.3. The Divide-and-Conquer Approach
 
  - 2.4. Quicksort (Partition Exchange Sort)
 
  - 2.5. Strassen's Matrix Multiplication Algorithm
 
  - 2.6. Arithmetic with Large Integers
 
  - 2.6.1. Representation of Large Integers: Addition and Other Linear-Time Operations
 
  - 2.6.2. Multiplication of Large Integers
 
  - 2.7. Determining Thresholds
 
  - 2.8. When Not to Use Divide-and-Conquer
 
  - Exercises
 
  - 3. Dynamic Programming
 
  - 3.1. The Binomial Coefficient
 
  - 3.2. Floyd's Algorithm for Shortest Paths
 
  - 3.3. Dynamic Programming and Optimization Problems
 
  - 3.4. Chained Matrix Multiplication
 
  - 3.5. Optimal Binary Search Trees
 
  - 3.6. The Traveling Salesperson Problem
 
  - 3.7. Sequence Alignment
 
  - Exercises
 
  - 4. The Greedy Approach
 
  - 4.1. Minimum Spanning Trees
 
  - 4.1.1. Prim's Algorithm
 
  - 4.1.2. Kruskal's Algorithm
 
  - 4.1.3. Comparing Prim's Algorithm with Kruskal's Algorithm
 
  - 4.1.4. Final Discussion
 
  - 4.2. Dijkstra's Algorithm for Single-Source Shortest Paths
 
  - 4.3. Scheduling
 
  - 4.3.1. Minimizing Total Time in the System
 
  - 4.3.2. Scheduling with Deadlines
 
  - 4.4. Huffman Code
 
  - 4.4.1. Prefix Codes
 
  - 4.4.2. Huffman's Algorithm
 
  - 4.5. The Greedy Approach versus Dynamic Programming: The Knapsack Problem
 
  - 4.5.1. A Greedy Approach to the 0-1 Knapsack Problem
 
  - 4.5.2. A Greedy Approach to the Fractional Knapsack Problem
 
  - 4.5.3. A Dynamic Programming Approach to the 0-1 Knapsack Problem
 
  - 4.5.4. A Refinement of the Dynamic Programming Algorithm for the 0-1 Knapsack Problem
 
  - Exercises
 
  - 5. Backtracking
 
  - 5.1. The Backtracking Technique
 
  - 5.2. The n-Queens Problem
 
  - 5.3. Using a Monte Carlo Algorithm to Estimate the Efficiency of a Backtracking Algorithm
 
  - 5.4. The Sum-of-Subsets Problem
 
  - 5.5. Graph Coloring
 
  - 5.6. The Hamiltonian Circuits Problem
 
  - 5.7. The 0-1 Knapsack Problem
 
  - 5.7.1. A Backtracking Algorithm for the 0-1 Knapsack Problem
 
  - 5.7.2. Comparing the Dynamic Programming Algorithm and the Backtracking Algorithm for the 0-1 Knapsack Problem
 
  - Exercises
 
  - 6. Branch-and-Bound
 
  - 6.1. Illustrating Branch-and-Bound with the 0-1 Knapsack Problem
 
  - 6.1.1. Breadth-First Search with Branch-and-Bound Pruning
 
  - 6.1.2. Best-First Search with Branch-and-Bound Pruning
 
  - 6.2. The Traveling Salesperson Problem
 
  - 6.3. Abductive Inference (Diagnosis)
 
  - Exercises
 
  - 7. Introduction to Computational Complexity: The Sorting Problem
 
  - 7.1. Computational Complexity
 
  - 7.2. Insertion Sort and Selection Sort
 
  - 7.3. Lower Bounds for Algorithms that Remove at Most One Inversion per Comparison
 
  - 7.4. Mergesort Revisited
 
  - 7.5. Quicksort Revisited
 
  - 7.6. Heapsort
 
  - 7.6.1. Heaps and Basic Heap Routines
 
  - 7.6.2. An Implementation of Heapsort
 
  - 7.7. Comparison of Mergesort, Quicksort, and Heapsort
 
  - 7.8. Lower Bounds for Sorting Only by Comparison of Keys
 
  - 7.8.1. Decision Trees for Sorting Algorithms
 
  - 7.8.2. Lower Bounds for Worst-Case Behavior
 
  - 7.8.3. Lower Bounds for Average-Case Behavior
 
  - 7.9. Sorting by Distribution (Radix Sort)
 
  - Exercises
 
  - 8. More Computational Complexity: The Searching Problem
 
  - 8.1. Lower Bounds for Searching Only by Comparisons of Keys
 
  - 8.1.1. Lower Bounds for Worst-Case Behavior
 
  - 8.1.2. Lower Bounds for Average-Case Behavior
 
  - 8.2. Interpolation Search
 
  - 8.3. Searching in Trees
 
  - 8.3.1. Binary Search Trees
 
  - 8.3.2. B-Trees
 
  - 8.4. Hashing
 
  - 8.5. The Selection Problem: Introduction to Adversary Arguments
 
  - 8.5.1. Finding the Largest Key
 
  - 8.5.2. Finding Both the Smallest and Largest Keys
 
  - 8.5.3. Finding the Second-Largest Key
 
  - 8.5.4. Finding the kth-Smallest Key
 
  - 8.5.5. A Probabilistic Algorithm for the Selection Problem
 
  - Exercises
 
  - 9. Computational Complexity and Intractability: An Introduction to the Theory of NP
 
  - 9.1. Intractability
 
  - 9.2. Input Size Revisited
 
  - 9.3. The Three General Problem Categories
 
  - 9.3.1. Problems for Which Polynomial-Time Algorithms Have Been Found
 
  - 9.3.2. Problems That Have Been Proven to Be Intractable
 
  - 9.3.3. Problems That Have Not Been Proven to Be Intractable but for Which Polynomial-Time Algorithms Have Never Been Found
 
  - 9.4. The Theory of NP
 
  - 9.4.1. The Sets P and NP
 
  - 9.4.2. NP-Complete Problems
 
  - 9.4.3. NP-Hard, NP-Easy, and NP-Equivalent Problems
 
  - 9.5. Handling NP-Hard Problems
 
  - 9.5.1. An Approximation Algorithm for the Traveling Salesperson Problem
 
  - 9.5.2. An Approximation Algorithm for the Bin-Packing Problem
 
  - Exercises
 
  - 10. Genetic Algorithms and Genetic Programming
 
  - 10.1. Genetics Review
 
  - 10.2. Genetic Algorithms
 
  - 10.2.1. Algorithm
 
  - 10.2.2. Illustrative Example
 
  - 10.2.3. The Traveling Salesperson Problem
 
  - 10.3. Genetic Programming
 
  - 10.3.1. Illustrative Example
 
  - 10.3.2. Artificial Ant
 
  - 10.3.3. Application to Financial Trading
 
  - 10.4. Discussion and Further Reading
 
  - Exercises
 
  - 11. Number-Theoretic Algorithms
 
  - 11.1. Number Theory Review
 
  - 11.1.1. Composite and Prime Numbers
 
  - 11.1.2. Greatest Common Divisor
 
  - 11.1.3. Prime Factorization
 
  - 11.1.4. Least Common Multiple
 
  - 11.2. Computing the Greatest Common Divisor
 
  - 11.2.1. Euclid's Algorithm
 
  - 11.2.2. An Extension to Euclid's Algorithm
 
  - 11.3. Modular Arithmetic Review
 
  - 11.3.1. Group Theory
 
  - 11.3.2. Congruency Modulo n
 
  - 11.3.3. Subgroups
 
  - 11.4. Solving Modular Linear Equations
 
  - 11.5. Computing Modular Powers
 
  - 11.6. Finding Large Prime Numbers
 
  - 11.6.1. Searching for a Large Prime
 
  - 11.6.2. Checking if a Number Is Prime
 
  - 11.7. The RSA Public-Key Cryptosystem
 
  - 11.7.1. Public-Key Cryptosystems
 
  - 11.7.2. The RSA Cryptosystem
 
  - Exercises
 
  - 12. Introduction to Parallel Algorithms
 
  - 12.1. Parallel Architectures
 
  - 12.1.1. Control Mechanism
 
  - 12.1.2. Address-Space Organization
 
  - 12.1.3. Interconnection Networks
 
  - 12.2. The PRAM Model
 
  - 12.2.1. Designing Algorithms for the CREW PRAM Model
 
  - 12.2.2. Designing Algorithms for the CRCW PRAM Model
 
  - Exercises
 
  - Appendix A Review of Necessary Mathematics
 
  - A.1. Notation
 
  - A.2. Functions
 
  - A.3. Mathematical Induction
 
  - A.4. Theorems and Lemmas
 
  - A.5. Logarithms
 
  - A.5.1. Definition and Properties of Logarithms
 
  - A.5.2. The Natural Logarithm
 
  - A.6. Sets
 
  - A.7. Permutations and Combinations
 
  - A.8. Probability
 
  - A.8.1. Randomness
 
  - A.8.2. The Expected Value
 
  - Exercises
 
  - Appendix B Solving Recurrence Equations: With Applications to Analysis of Recursive Algorithms
 
  - B.1. Solving Recurrences Using Induction
 
  - B.2. Solving Recurrences Using the Characteristic Equation
 
  - B.2.1. Homogeneous Linear Recurrences
 
  - B.2.2. Nonhomogeneous Linear Recurrences
 
  - B.2.3. Change of Variables (Domain Transformations)
 
  - B.3. Solving Recurrences by Substitution
 
  - B.4. Extending Results for n, a Power of a Positive Constant b, to n in General
 
  - B.5. Proofs of Theorems
 
  - Exercises
 
  - Appendix C Data Structures for Disjoint Sets.
 
Subjects
Bibliographic information
Publication date 2015 Copyright date 2015 ISBN 9781284049190 (pbk.) 1284049191 (pbk.)