Skip to content

Foundations of Algorithms

Best in textbook rentals since 2012!

ISBN-10: 0763782505

ISBN-13: 9780763782504

Edition: 4th 2011 (Revised)

Authors: Richard Neapolitan, Kumarss Naimipour

List price: $214.95
Blue ribbon 30 day, 100% satisfaction guarantee!
what's this?
Rush Rewards U
Members Receive:
Carrot Coin icon
XP icon
You have reached 400 XP and carrot coins. That is the daily max!

Description:

Foundations of Algorithms, Fourth Edition offers a well-balanced presentation of algorithm design, complexity analysis of algorithms, and computational complexity. The volume is accessible to mainstream computer science students who have a background in college algebra and discrete structures. To support their approach, the authors present mathematical concepts using standard English and a simpler notation than is found in most texts. A review of essential mathematical concepts is presented in three appendices. The authors also reinforce the explanations with numerous concrete examples to help students grasp theoretical concepts. A CD-ROM is included with every new copy of the text and…    
Customers also bought

Book details

List price: $214.95
Edition: 4th
Copyright year: 2011
Publisher: Jones & Bartlett Learning, LLC
Publication date: 12/28/2009
Binding: Hardcover
Pages: 627
Size: 7.25" wide x 9.00" long x 1.25" tall
Weight: 2.706

Richard E. Neapolitan is professor and Chair of Computer Science at Northeastern Illinois University. He has previously written four books including the seminal 1990 Bayesian network text Probabilistic Reasoning in Expert Systems. More recently, he wrote the 2004 text Learning Bayesian Networks, the textbook Foundations of Algorithms, which has been translated to three languages and is one of the most widely-used algorithms texts world-wide, and the 2007 text Probabilistic Methods for Financial and Marketing Informatics (Morgan Kaufmann Publishers).

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
Divide-and-Conquer
Binary Search
Mergesort
The Divide-and-Conquer Approach
Quicksort (Partition Exchange Sort)
Strassen's Matrix Multiplication Algorithm
Arithmetic with Large Numbers
Representation of Large Integers: Addition and Other Linear-Time Operations
Multiplication of Large Integers
Determining Thresholds
When Not to Use Divide-and-Conquer
Exercises
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
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
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
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
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
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
Computational Complexity and intractability: An Introduction to the Theory of NP
Intractability
Input Size Revisited
The Three General Problems
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
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
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
Review of Necessary Mathematics
Notation
Functions
Mathematical Induction
Theorems and Lemmas
Logarithms
Definition and Properties of Logarithms
The Natural Logarithm
Sets
Permutations and Combinations
Probability
Randomness
The Expected Value
Exercises
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
Data Structures for Disjoint Sets
References
Index